]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR bootstrap/51346 (LTO bootstrap failed with bootstrap-profiled)
authorDiego Novillo <dnovillo@google.com>
Thu, 1 Dec 2011 21:05:10 +0000 (16:05 -0500)
committerDiego Novillo <dnovillo@gcc.gnu.org>
Thu, 1 Dec 2011 21:05:10 +0000 (16:05 -0500)
PR bootstrap/51346
* ipa-inline.c (can_inline_edge_p): If the edge E has a
statement, use the statement's inline indicator instead
of E's.
Remove consistency check.

From-SVN: r181894

gcc/ChangeLog
gcc/ipa-inline.c

index f2d1bc2e69ae61eebf7b72212457fec4fb1dd4b5..000fdc08c86834cbc79a3be6f0d7da16219fe542 100644 (file)
@@ -1,5 +1,14 @@
 2011-12-01   Diego Novillo  <dnovillo@google.com>
 
+       PR bootstrap/51346
+       * ipa-inline.c (can_inline_edge_p): If the edge E has a
+       statement, use the statement's inline indicator instead
+       of E's.
+       Remove consistency check.
+
+2011-12-01   Diego Novillo  <dnovillo@google.com>
+
+       PR bootstrap/51346
        Revert
 
        2011-11-29   Diego Novillo  <dnovillo@google.com>
index 3dadf8d12d75866fdbfac21c02af71d97e975d78..e3c6b3ce824fe43d08dc36725e9c2e3d9bccff93 100644 (file)
@@ -246,6 +246,14 @@ can_inline_edge_p (struct cgraph_edge *e, bool report)
   struct function *caller_cfun = DECL_STRUCT_FUNCTION (e->caller->decl);
   struct function *callee_cfun
     = callee ? DECL_STRUCT_FUNCTION (callee->decl) : NULL;
+  bool call_stmt_cannot_inline_p;
+
+  /* If E has a call statement in it, use the inline attribute from
+     the statement, otherwise use the inline attribute in E.  Edges
+     will not have statements when working in WPA mode.  */
+  call_stmt_cannot_inline_p = (e->call_stmt)
+                             ? gimple_call_cannot_inline_p (e->call_stmt)
+                             : e->call_stmt_cannot_inline_p;
 
   if (!caller_cfun && e->caller->clone_of)
     caller_cfun = DECL_STRUCT_FUNCTION (e->caller->clone_of->decl);
@@ -270,7 +278,7 @@ can_inline_edge_p (struct cgraph_edge *e, bool report)
       e->inline_failed = CIF_OVERWRITABLE;
       return false;
     }
-  else if (e->call_stmt_cannot_inline_p)
+  else if (call_stmt_cannot_inline_p)
     {
       e->inline_failed = CIF_MISMATCHED_ARGUMENTS;
       inlinable = false;
@@ -343,14 +351,6 @@ can_inline_edge_p (struct cgraph_edge *e, bool report)
        }
     }
 
-  /* Be sure that the cannot_inline_p flag is up to date.  */
-  gcc_checking_assert (!e->call_stmt
-                      || (gimple_call_cannot_inline_p (e->call_stmt)
-                          == e->call_stmt_cannot_inline_p)
-                      /* In -flto-partition=none mode we really keep things out of
-                         sync because call_stmt_cannot_inline_p is set at cgraph
-                         merging when function bodies are not there yet.  */
-                      || (in_lto_p && !gimple_call_cannot_inline_p (e->call_stmt)));
   if (!inlinable && report)
     report_inline_failed_reason (e);
   return inlinable;