[Bug middle-end/35545] virtual call specialization not happening with FDO
hubicka at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Dec 17 18:09:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35545
--- Comment #5 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Main issue seems to be that VRP messes up on:
# ap_2 = PHI <ap_8(5)>
# prephitmp_14 = PHI <&MEM[(void *)&_ZTV1A + 16B](5)>
_19 = *prephitmp_14;
here it somehow won't constant propagate the load.
Index: passes.def
===================================================================
--- passes.def (revision 206040)
+++ passes.def (working copy)
@@ -236,6 +236,7 @@ along with GCC; see the file COPYING3.
NEXT_PASS (pass_reassoc);
NEXT_PASS (pass_strength_reduction);
NEXT_PASS (pass_dominator);
+ NEXT_PASS (pass_tracer);
/* The only const/copy propagation opportunities left after
DOM should be due to degenerate PHI nodes. So rather than
run the full propagators, run a specialized pass which
@@ -244,7 +245,6 @@ along with GCC; see the file COPYING3.
NEXT_PASS (pass_phi_only_cprop);
NEXT_PASS (pass_vrp);
NEXT_PASS (pass_cd_dce);
- NEXT_PASS (pass_tracer);
NEXT_PASS (pass_dse);
NEXT_PASS (pass_forwprop);
NEXT_PASS (pass_phiopt);
actually helps since phi_only_cprop is good on this transform. I do not quite
gather why VRP can't do it itself.
I sent first patch to http://gcc.gnu.org/ml/gcc-patches/2013-12/msg01517.html
More information about the Gcc-bugs
mailing list