+++ This bug was initially created as a clone of Bug #38609 +++ See PR38609 comment 12. I noticed that reload1.c:set_label_offsets assumes that all labels reachable from indirect jumps are assumed to be at their "initial elimination offsets", which fails if there's an alloca call or similar adjustment before the're reached. For *some* targets, gcc.c-torture/execute/built-in-setjmp.c expose this bug, but one or more separate test-cases is called for to expose it for the wider audience: main is not useful wherein to test sp vs. fp misadjustments, and the test-case should not need for run-time sp realignments, else for many targets, fp->sp elimination will not happen. Also, computed gotos can be probably also be used to expose the bug, rather than __builtin_setjmp/longjmp. This code deserves to be fixed correctly, but considering the current development stage and the limited use of this code, I'll do like other targets and bail out for cris*-*-* by forcing a frame-pointer. Therefore this clone.
-- Summary: [4.4 Regression]: gcc.c-torture/execute/built-in- setjmp.c execute -O2 and above Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hp at gcc dot gnu dot org GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: cris-axis-elf BugsThisDependsOn: 38609 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39499