+++ 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

Reply via email to