[Bug debug/55579] New: SRA doesn't create debug stmts when they would be useful

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Dec 3 20:31:00 GMT 2012


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

             Bug #: 55579
           Summary: SRA doesn't create debug stmts when they would be
                    useful
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: jakub@gcc.gnu.org
                CC: jamborm@gcc.gnu.org


Consider -g -O2:
struct S { int a; char b; char c; short d; };

int
foo (int x)
{
  struct S s = { x + 1, x + 2, x + 3, x + 4 };
  char *p = &s.c;
  return x;
}
Unfortunately, SRA doesn't add here any debug stmts and everything is DSEd
later on.
*.esra dump says:
Candidate (1722): s
Marking s offset: 0, size: 32  to be replaced with debug statements.
Marking s offset: 32, size: 8  to be replaced with debug statements.
Marking s offset: 40, size: 8  to be replaced with debug statements.
Marking s offset: 48, size: 16  to be replaced with debug statements.
! Disqualifying s - No scalar replacements to be created.

If there are just debug replacements, no normal ones, and the aggregate still
has been candidate for SRA (i.e. no address escape, etc.), it would be nice if
the debug replacements could be emitted anyway.  CDDCE or DSE will then remove
the actual stmts, but debug info will be accurate.



More information about the Gcc-bugs mailing list