re PR middle-end/67619 (ICE at -O1 and above on x86_64-linux-gnu in int_mode_for_mode, at stor-layout.c:425)

PR middle-end/67619
	* except.c (expand_builtin_eh_return): Use copy_addr_to_reg to copy
	the address to a register.

testsuite/ChangeLog:

	PR middle-end/67619
	* gcc.dg/torture/pr67619.c: New test.

From-SVN: r227909
This commit is contained in:
Uros Bizjak 2015-09-18 18:27:51 +02:00
parent a502f7b6e4
commit dcd7a7dfce
4 changed files with 26 additions and 3 deletions

View File

@ -1,4 +1,10 @@
2015-09-16 Jeff Law <law@redhat.com>
2015-09-18 Uros Bizjak <ubizjak@gmail.com>
PR middle-end/67619
* except.c (expand_builtin_eh_return): Use copy_addr_to_reg to copy
the address to a register.
2015-09-18 Jeff Law <law@redhat.com>
PR tree-optimization/47679
* Makefile.in (OBJS): Add tree-ssa-phionlycprop.o

View File

@ -2219,7 +2219,7 @@ expand_builtin_eh_return (tree stackadj_tree ATTRIBUTE_UNUSED,
VOIDmode, EXPAND_NORMAL);
tmp = convert_memory_address (Pmode, tmp);
if (!crtl->eh.ehr_stackadj)
crtl->eh.ehr_stackadj = copy_to_reg (tmp);
crtl->eh.ehr_stackadj = copy_addr_to_reg (tmp);
else if (tmp != crtl->eh.ehr_stackadj)
emit_move_insn (crtl->eh.ehr_stackadj, tmp);
#endif
@ -2228,7 +2228,7 @@ expand_builtin_eh_return (tree stackadj_tree ATTRIBUTE_UNUSED,
VOIDmode, EXPAND_NORMAL);
tmp = convert_memory_address (Pmode, tmp);
if (!crtl->eh.ehr_handler)
crtl->eh.ehr_handler = copy_to_reg (tmp);
crtl->eh.ehr_handler = copy_addr_to_reg (tmp);
else if (tmp != crtl->eh.ehr_handler)
emit_move_insn (crtl->eh.ehr_handler, tmp);

View File

@ -1,3 +1,8 @@
2015-09-18 Uros Bizjak <ubizjak@gmail.com>
PR middle-end/67619
* gcc.dg/torture/pr67619.c: New test.
2015-09-18 Alan Lawrence <alan.lawrence@arm.com>
PR tree-optimization/67283

View File

@ -0,0 +1,12 @@
/* { dg-do compile } */
void
foo ()
{
unsigned long l;
void *p = 0;
__builtin_unwind_init ();
l = 0;
__builtin_eh_return (l, p);
}