aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/ipa-pure-const.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/ipa-pure-const.c')
-rw-r--r--gcc-4.9/gcc/ipa-pure-const.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/ipa-pure-const.c b/gcc-4.9/gcc/ipa-pure-const.c
index 7d3588099..948665e4a 100644
--- a/gcc-4.9/gcc/ipa-pure-const.c
+++ b/gcc-4.9/gcc/ipa-pure-const.c
@@ -1504,6 +1504,12 @@ static bool
gate_pure_const (void)
{
return (flag_ipa_pure_const
+ /* Due to the traverse order difference between profile-use
+ and profile-gen, pure/const analysis result can be different
+ resulting in differnt CFG in the caller (e.g, different VOPS,
+ --> different MEMOP PHI --> different CFG cleanups) function,
+ thus causing profile mismatch problem. */
+ && (!flag_dyn_ipa || cgraph_pre_profiling_inlining_done)
/* Don't bother doing anything if the program has errors. */
&& !seen_error ());
}