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