i386.c: Include symbol-summary.h, ipa-prop.h and ipa-fnsummary.h.
authorRichard Biener <rguenther@suse.de>
Thu, 24 Aug 2017 12:22:30 +0000 (12:22 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 24 Aug 2017 12:22:30 +0000 (12:22 +0000)
2017-08-24  Richard Biener  <rguenther@suse.de>

* config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
and ipa-fnsummary.h.
(ix86_can_inline_p): When ix86_fpmath flags do not match
check whether the callee uses FP math at all.

From-SVN: r251330

gcc/ChangeLog
gcc/config/i386/i386.c

index a475c84..25149f3 100644 (file)
@@ -1,3 +1,10 @@
+2017-08-24  Richard Biener  <rguenther@suse.de>
+
+       * config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
+       and ipa-fnsummary.h.
+       (ix86_can_inline_p): When ix86_fpmath flags do not match
+       check whether the callee uses FP math at all.
+
 2017-08-24  Aldy Hernandez  <aldyh@redhat.com>
 
        PR middle-end/81931
index 9f1f8e7..268946b 100644 (file)
@@ -85,6 +85,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "print-rtl.h"
 #include "intl.h"
 #include "ifcvt.h"
+#include "symbol-summary.h"
+#include "ipa-prop.h"
+#include "ipa-fnsummary.h"
 
 /* This file should be included last.  */
 #include "target-def.h"
@@ -7544,7 +7547,14 @@ ix86_can_inline_p (tree caller, tree callee)
       else if (caller_opts->tune != callee_opts->tune)
        ret = false;
 
-      else if (caller_opts->x_ix86_fpmath != callee_opts->x_ix86_fpmath)
+      else if (caller_opts->x_ix86_fpmath != callee_opts->x_ix86_fpmath
+              /* If the calle doesn't use FP expressions differences in
+                 ix86_fpmath can be ignored.  We are called from FEs
+                 for multi-versioning call optimization, so beware of
+                 ipa_fn_summaries not available.  */
+              && (! ipa_fn_summaries
+                  || ipa_fn_summaries->get
+                       (cgraph_node::get (callee))->fp_expressions))
        ret = false;
 
       else if (caller_opts->branch_cost != callee_opts->branch_cost)