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.