re PR lto/60635 (ICE when mixing C and Fortran lto1: error: use operand missing for stmt)

2014-03-25  Richard Biener  <rguenther@suse.de>

	PR middle-end/60635
	* gimplify-me.c (gimple_regimplify_operands): Update the
	re-gimplifed stmt.

	* gfortran.dg/lto/pr60635_0.f90: New testcase.
	* gfortran.dg/lto/pr60635_1.c: Likewise.

From-SVN: r208811
This commit is contained in:
Richard Biener 2014-03-25 11:43:03 +00:00 committed by Richard Biener
parent 4a5798de3e
commit 40b0722fa3
5 changed files with 44 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2014-03-25 Richard Biener <rguenther@suse.de>
PR middle-end/60635
* gimplify-me.c (gimple_regimplify_operands): Update the
re-gimplifed stmt.
2014-03-25 Martin Jambor <mjambor@suse.cz>
PR ipa/59176

View File

@ -315,6 +315,8 @@ gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
gsi_insert_after (gsi_p, post_stmt, GSI_NEW_STMT);
pop_gimplify_context (NULL);
update_stmt (stmt);
}

View File

@ -1,3 +1,9 @@
2014-03-25 Richard Biener <rguenther@suse.de>
PR middle-end/60635
* gfortran.dg/lto/pr60635_0.f90: New testcase.
* gfortran.dg/lto/pr60635_1.c: Likewise.
2014-03-24 Adam Butcher <adam@jessamine.co.uk>
PR c++/60627

View File

@ -0,0 +1,16 @@
! { dg-lto-do link }
program test
use iso_fortran_env
interface
integer(int16) function bigendc16(x) bind(C)
import
integer(int16), intent(in) :: x
end function
end interface
integer(int16) :: x16 = 12345
x16 = bigendc16(x16)
print *,x16
end program

View File

@ -0,0 +1,14 @@
#include <stdint.h>
#include <stdbool.h>
static bool littleendian=true;
uint16_t bigendc16(union{uint16_t * n;uint8_t* b;}x){
if (!littleendian) return *x.n;
uint16_t res = ((uint16_t)(x.b[1])<<0) |
((uint16_t)(x.b[0])<<8);
return res;
}