re PR ipa/64776 (FAIL: gcc.dg/ipa/pr64307.c (internal compiler error) on x86_64-apple...
authorJakub Jelinek <jakub@redhat.com>
Tue, 27 Jan 2015 09:21:26 +0000 (10:21 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 27 Jan 2015 09:21:26 +0000 (10:21 +0100)
PR ipa/64776
* cgraphunit.c (cgraph_node::expand_thunk): If not this_adjusting,
handle the first argument in the same loop as all the other arguments.

From-SVN: r220156

gcc/ChangeLog
gcc/cgraphunit.c

index 57f5efe08fb6a86e6b7648904b312f3a05257d58..2f4e5255e23a1755c50c13aeb7fd53ca015219a6 100644 (file)
@@ -1,5 +1,9 @@
 2015-01-27  Jakub Jelinek  <jakub@redhat.com>
 
+       PR ipa/64776
+       * cgraphunit.c (cgraph_node::expand_thunk): If not this_adjusting,
+       handle the first argument in the same loop as all the other arguments.
+
        PR rtl-optimization/61058
        * jump.c (cleanup_barriers): Update basic block boundaries
        if BLOCK_FOR_INSN is non-NULL on PREV.
index 1ef1b6c648df22181526d717f2a715bfa2e48a09..bde3e420a7130fea58b1dffa7d148adb8fa22e01 100644 (file)
@@ -1610,14 +1610,18 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk)
       for (arg = a; arg; arg = DECL_CHAIN (arg))
         nargs++;
       auto_vec<tree> vargs (nargs);
+      i = 0;
+      arg = a;
       if (this_adjusting)
-        vargs.quick_push (thunk_adjust (&bsi, a, 1, fixed_offset,
-                                       virtual_offset));
-      else if (nargs)
-        vargs.quick_push (a);
+       {
+         vargs.quick_push (thunk_adjust (&bsi, a, 1, fixed_offset,
+                                         virtual_offset));
+         arg = DECL_CHAIN (a);
+         i = 1;
+       }
 
       if (nargs)
-        for (i = 1, arg = DECL_CHAIN (a); i < nargs; i++, arg = DECL_CHAIN (arg))
+       for (; i < nargs; i++, arg = DECL_CHAIN (arg))
          {
            tree tmp = arg;
            if (!is_gimple_val (arg))