[Bug target/24623] [4.1 Regression] internal compiler error: in propagate_one_insn, at flow.c:1702
--- Comment #6 from pinskia at gcc dot gnu dot org 2005-11-09 12:01 --- Fixed by: http://gcc.gnu.org/ml/gcc-cvs/2005-11/msg00388.html -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24623
[Bug target/24623] [4.1 Regression] internal compiler error: in propagate_one_insn, at flow.c:1702
--- Comment #5 from krebbel1 at de dot ibm dot com 2005-11-04 08:02 --- The problem occurs when a landing pad is optimized away but the special code in s390_regs_ever_clobbered insists on saving all eh registers. The special code in that function exists because the eh regs may be read in a function (inside the landing pad) without beeing set before. In that case s390_regs_ever_clobbered would not consider them to be saved. With the attached patch the eh regs for a landing pad are only saved if regs_ever_live is true for them. I will not post the patch until I have decided how to fix PR 24624. It is possible that 24624 can only be fixed by reverting my patch introducing regs_ever_clobbered. If that patch gets reverted this fix is obsolete of course. That fixes the testcase in the PR. Bootstrapped on s390 and s390x - no testsuite regressions. OK for mainline? Bye, -Andreas- 2005-11-03 Andreas Krebbel <[EMAIL PROTECTED]> * config/s390/s390.c (s390_regs_ever_clobbered): Only save LIVE eh regs for a function containing a landing pad. Index: gcc/config/s390/s390.c === RCS file: /cvs/gcc/gcc/gcc/config/s390/s390.c,v retrieving revision 1.257 diff -p -c -r1.257 s390.c *** gcc/config/s390/s390.c 30 Sep 2005 15:36:15 - 1.257 --- gcc/config/s390/s390.c 3 Nov 2005 12:56:06 - *** s390_regs_ever_clobbered (int *regs_ever *** 5874,5880 deal with this automatically. */ if (current_function_calls_eh_return || cfun->machine->has_landing_pad_p) for (i = 0; EH_RETURN_DATA_REGNO (i) != INVALID_REGNUM ; i++) ! regs_ever_clobbered[EH_RETURN_DATA_REGNO (i)] = 1; /* For nonlocal gotos all call-saved registers have to be saved. This flag is also set for the unwinding code in libgcc. --- 5874,5883 deal with this automatically. */ if (current_function_calls_eh_return || cfun->machine->has_landing_pad_p) for (i = 0; EH_RETURN_DATA_REGNO (i) != INVALID_REGNUM ; i++) ! if (current_function_calls_eh_return ! || (cfun->machine->has_landing_pad_p ! && regs_ever_live [EH_RETURN_DATA_REGNO (i)])) ! regs_ever_clobbered[EH_RETURN_DATA_REGNO (i)] = 1; /* For nonlocal gotos all call-saved registers have to be saved. This flag is also set for the unwinding code in libgcc. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24623
[Bug target/24623] [4.1 Regression] internal compiler error: in propagate_one_insn, at flow.c:1702
--- Comment #4 from mmitchel at gcc dot gnu dot org 2005-11-03 06:43 --- Downgrading to P5; S390 is not a primary or secondary target. -- mmitchel at gcc dot gnu dot org changed: What|Removed |Added Priority|P3 |P5 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24623
[Bug target/24623] [4.1 Regression] internal compiler error: in propagate_one_insn, at flow.c:1702
--- Comment #3 from uweigand at gcc dot gnu dot org 2005-11-03 02:04 --- Likely backend problem, investigating ... -- uweigand at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |uweigand at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2005-11-03 02:04:13 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24623
[Bug target/24623] [4.1 Regression] internal compiler error: in propagate_one_insn, at flow.c:1702
--- Comment #2 from janis at gcc dot gnu dot org 2005-11-03 00:09 --- A regression hunt using a cross compiler identified the following patch: http://gcc.gnu.org/viewcvs?view=rev&rev=101381 2005-06-28 Andreas Krebbel <[EMAIL PROTECTED]> * config/s390/s390.c (machine_function): New field has_landing_pad_p. (s390_set_has_landing_pad_p, s390_reg_clobbered_rtx, s390_regs_ever_clobbered): New functions. (s390_return_addr_rtx): Use get_hard_reg_initial_value. (s390_register_info, s390_init_frame_layout, s390_update_frame_layout): Use s390_regs_ever_clobbered. (s390_emit_prologue): Don't use r14 as temp reg if its content is used for builtin_return_address. * config/s390/s390.md ("exception_receiver"): New expander. * config/s390/s390-protos.h (s390_set_has_landing_pad_p): Prototype added. Only the following options are needed to reproduce the failure with the reduced testcase: -O1. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24623
[Bug target/24623] [4.1 Regression] internal compiler error: in propagate_one_insn, at flow.c:1702
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|--- |4.1.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24623
[Bug target/24623] [4.1 Regression] internal compiler error: in propagate_one_insn, at flow.c:1702
--- Comment #1 from rguenth at gcc dot gnu dot org 2005-11-01 20:57 --- Created an attachment (id=10104) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10104&action=view) reduced testcase testcase -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24623