At -g -O2 var1 has a location attribute, but var2 does not.

extern unsigned int extfn (char *x);

static inline int
foo (const char *x, int y)
{
  int a = 0;
  a = extfn (y ? __builtin_strdup (x) : (char *) x);
  const char *var1 = x;
  int var2 = a;
  __asm__ volatile ("/* %0 %1 */" : : "r" (var1), "r" (var2));
  return a;
}

int
bar (const char *x)
{
  return foo (x, 1);
}

int
baz (const char *x)
{
  return foo (x, 0);
}

although obviously there is a register in which var2 is present (the one passed
to the inline asm.
The debug stmt is reset during inlining:
./cc1 -O2 -g rh552376.i -fdump-ipa-all -quiet; grep var rh552376.i.04[12]*
rh552376.i.041i.cp:  # DEBUG var1 => x_4(D)
rh552376.i.041i.cp:  # DEBUG var2 => a_9
rh552376.i.042i.inline:  # DEBUG var1 => x_4(D)
rh552376.i.042i.inline:  # DEBUG var2 => a_9
rh552376.i.042i.inline:  # DEBUG var1 => x_4(D)
rh552376.i.042i.inline:  # DEBUG var2 => a_9
rh552376.i.042i.inline:  # DEBUG var1 => x_1(D)
rh552376.i.042i.inline:  # DEBUG var2 => NULL
rh552376.i.042i.inline:  # DEBUG var1 => x_1(D)
rh552376.i.042i.inline:  # DEBUG var2 => NULL


-- 
           Summary: Missing debug info for a variable
           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


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

Reply via email to