[Bug debug/50317] [4.7 Regression] missing DW_OP_GNU_implicit_pointer

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Sep 7 14:23:00 GMT 2011


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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-09-07 14:21:51 UTC ---
The first difference is in fre1, just a better optimization:
@@ -22,7 +22,7 @@ foo (int i)
   p$1_9 = &j;
   # DEBUG p$1 => p$1_9
   D.2704_2 = p$0_10;
-  D.2705_3 = *D.2704_2;
+  D.2705_3 = i.0_1;
   D.2706_4 = p$1_9;
   D.2707_5 = i.0_1;
   D.2703_6 = D.2705_3 + D.2707_5;

In *.mergephi1 the difference is still pretty minor:
@@ -19,8 +19,7 @@ foo (int i)
   j = i.0_1;
   # DEBUG p$0 => &i
   # DEBUG p$1 => &j
-  D.2705_3 = i;
-  D.2703_6 = i.0_1 + D.2705_3;
+  D.2703_6 = i.0_1 + i.0_1;
   return D.2703_6;

 }

but in *.cddce1 the j variable is removed altogether:
 <bb 2>:
   i.0_1 = i;
-  j = i.0_1;
   # DEBUG p$0 => &i
   # DEBUG p$1 => &j
-  D.2705_3 = i;
-  D.2703_6 = i.0_1 + D.2705_3;
+  D.2703_6 = i.0_1 + i.0_1;
   return D.2703_6;

 }

in r175915 the j variable would survive in the IL until *.alias where it was
determined not address taken, gimplified and DEBUG j => j_11 added and during
copyprop2 the debug stmt was adjusted after j_11 removal.



More information about the Gcc-bugs mailing list