[Bug rtl-optimization/34998] New: [4.3 Regression] gcc.c-torture/execute/20040709-1.c fails for -EL -mips16 -O3

rsandifo at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Jan 28 15:23:00 GMT 2008


gcc.c-torture/execute/20040709-1.c fails for -EL -mips16 -O3 with:

20040709-1.c:93: internal compiler error: in insert_save, at caller-save.c:745

This is due to the new subreg liveness checking.  We have a bb with:

    A: call
    ...
    B: set of (subreg:HI (reg:SI foo))
    ...
    C: use of (reg:SI foo)

and no other references to (reg:SI foo) in the function.
We allocate FOO a call-clobbered register, and wrongly
think that it is still live at A.  This is because
global.c:build_insn_chain tracks the liveness of each
byte of FOO separately, and wrongly thinks that the
B leaves the upper two bytes live.  (SUBREG lvalues
clobber the whole word span, not just the byte span.)


-- 
           Summary: [4.3 Regression] gcc.c-torture/execute/20040709-1.c
                    fails for -EL -mips16 -O3
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: rtl-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rsandifo at gcc dot gnu dot org
GCC target triplet: mipsisa64-elfoabi


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34998



More information about the Gcc-bugs mailing list