http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46375
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |NEW
AssignedTo|rguenth at gcc dot gnu.org |unassigned at gcc dot
| |gnu.org
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-11
13:22:08 UTC ---
Differences start in the ce1 dump where we go from
b/t.c.163r.cse_local:(code_label 30 17 29 4 4 "" [1 uses])
b/t.c.163r.cse_local:(code_label 25 22 26 8 1 "" [2 uses])
to
b/t.c.164r.ce1:(code_label 25 22 26 6 1 "" [3 uses])
with -g but with -g0 we have
a/t.c.163r.cse_local:(code_label 27 14 26 4 4 "" [1 uses])
a/t.c.163r.cse_local:(code_label 22 19 23 8 1 "" [2 uses])
a/t.c.164r.ce1:(code_label 27 14 26 4 4 "" [1 uses])
a/t.c.164r.ce1:(code_label 22 19 23 7 1 "" [2 uses])
ce1 dump differences show
-IF-CASE-2 found, start 2, else 4
-IF-THEN-JOIN block found, pass 1, test 5, then 6, join 7
+3 possible IF blocks searched.
+1 IF blocks converted.
+1 true changes made.
There are no appearant differences before ce1 so the issue must be
in rtl if conversion.
Note that it's weird that with -g we perform more if-conversion
than without.