PR57698, only report errors from early inlining when optimization is turned
authorSriraman Tallam <tmsriram@google.com>
Thu, 18 Jul 2013 19:24:22 +0000 (19:24 +0000)
committerSriraman Tallam <tmsriram@gcc.gnu.org>
Thu, 18 Jul 2013 19:24:22 +0000 (19:24 +0000)
PR57698, only report errors from early inlining when optimization is turned
off.

PR middle-end/57698
* tree-inline.c (expand_call_inline): Emit errors during
early_inlining only if optimization is not turned on.

PR middle-end/57698
* gcc.c-torture/compile/pr57698.c: New test.
* gcc.c-torture/compile/pr43791.c: Remove prune output
directive.
* gcc.c-torture/compile/pr44043.c: Ditto.

From-SVN: r201039

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr43791.c
gcc/testsuite/gcc.c-torture/compile/pr44043.c
gcc/testsuite/gcc.c-torture/compile/pr57698.c [new file with mode: 0644]
gcc/tree-inline.c

index 1486a06ddeb0dc77234f75e980ef7e149f53a61c..15591e1e288109a9644b04f0d1e3ae9f2359fa04 100644 (file)
@@ -1,3 +1,9 @@
+2013-07-18  Sriraman Tallam  <tmsriram@google.com>
+
+       PR middle-end/57698
+       * tree-inline.c (expand_call_inline): Emit errors during
+       early_inlining only if optimization is not turned on.
+
 2013-07-18  David Malcolm  <dmalcolm@redhat.com>
 
        * passes.def: New.
index 1a73f415b8948537b73226875db0a328279f720a..370aeaccf3355711c2e0e55e4d7968d0796008f1 100644 (file)
@@ -1,3 +1,11 @@
+2013-07-18  Sriraman Tallam  <tmsriram@google.com>
+
+       PR middle-end/57698
+       * gcc.c-torture/compile/pr57698.c: New test.
+       * gcc.c-torture/compile/pr43791.c: Remove prune output
+       directive.
+       * gcc.c-torture/compile/pr44043.c: Ditto.
+
 2013-07-18  Wei Mi  <wmi@google.com>
 
        PR rtl-optimization/57878
index 0d8c94f5aed1b456bc5a85683a88a600f0a12311..2b1d06ff78912cd83749c2de8ff4fdfd133848a5 100644 (file)
@@ -18,5 +18,3 @@ void fasttrylock(void (*slowfn)()) {
 void trylock(void) {
      fasttrylock(slowtrylock);
 }
-
-/* { dg-prune-output "(inlining failed in call to always_inline.*indirect function call with a yet undetermined callee|called from here)" } */
index ea8767847c2e2ed96dc01224d49458c16829944e..943501b40915b9438995ca8ecda434bf79833deb 100644 (file)
@@ -85,5 +85,3 @@ int raw_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
 {
   raw_send_hdrinc(sk, msg->msg_iov, len, (void *)0, msg->msg_flags);
 }
-
-/* { dg-prune-output "(inlining failed in call to always_inline.*indirect function call with a yet undetermined callee|called from here)" } */
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr57698.c b/gcc/testsuite/gcc.c-torture/compile/pr57698.c
new file mode 100644 (file)
index 0000000..a9efb42
--- /dev/null
@@ -0,0 +1,19 @@
+typedef int (*IsAcceptableThis) (const int );
+inline int
+fn1 (IsAcceptableThis p1)
+{
+    p1 (0);
+    return 0;
+}
+
+__attribute__ ((always_inline))
+inline int fn2 (const int a)
+{
+    return 0;
+}
+
+void
+fn3 ()
+{
+    fn1 (fn2);
+}
index f5247716c952f328d8e840d226f5ba3810ec686c..cac868a864c46203b490039e685a8a9834a6e718 100644 (file)
@@ -3905,6 +3905,10 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
             for inlining, but we can't do that because frontends overwrite
             the body.  */
          && !cg_edge->callee->local.redefined_extern_inline
+         /* During early inline pass, report only when optimization is
+            not turned on.  */
+         && (cgraph_global_info_ready
+             || !optimize)
          /* PR 20090218-1_0.c. Body can be provided by another module. */
          && (reason != CIF_BODY_NOT_AVAILABLE || !flag_generate_lto))
        {