[Bug debug/42861] New: [4.4/4.5 Regression] Spill slots not tracked during var-tracking

jakub at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Jan 25 11:45:00 GMT 2010


PR37815 introduced a regression - no decls are tracked in spill slots, as they
have MEM_EXPR set to get_spill_slot_decl (false) instead of the real decl.
On the testcase I'm going to attach, the tok argument is (and clearly has to
be) live through the whole function except maybe last few instructions in
epilogue, but as gcc decides to use regparm(2) calling convention, var-tracking
thinks the parameter isn't live in most of the function.

I'm afraid we'll need to track what values live in the spill slots during
var-tracking.  Easy hack to get at least something working would be just to
handle spill slots that have at most one decl stored to it - then just one
vector mapping byte offsets in the spill area to decls or REG_EXPRs would be
sufficient.  We'd just walk the whole function, note what is stored into the
spill slots and if there are any conflicts, just remember that we can't use it.

Or we could actually track what is currently stored in each spill slot even if
the slot isn't for the same decl in all places.


-- 
           Summary: [4.4/4.5 Regression] Spill slots not tracked during var-
                    tracking
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jakub at gcc dot gnu dot org
GCC target triplet: i686-linux


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



More information about the Gcc-bugs mailing list