re PR tree-optimization/79908 (ICE in gimplify_expr (gimplify.c:12155) gimplification...
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Tue, 21 Mar 2017 18:14:42 +0000 (18:14 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Tue, 21 Mar 2017 18:14:42 +0000 (18:14 +0000)
[gcc]

2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR tree-optimization/79908
* tree-stdarg.c (expand_ifn_va_arg_1): Revert the following
change: For a VA_ARG whose LHS has been cast away, use
force_gimple_operand to construct the side effects.

[gcc/testsuite]

2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR tree-optimization/79908
* gcc.dg/torture/pr79908.c: Revert addition of new file.

From-SVN: r246330

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr79908.c
gcc/tree-stdarg.c

index 15a24412f4f86ad3a40a578ee5b8c91ec4c7c897..4706704ade58842f6e44910a291201dcc9f3b30c 100644 (file)
@@ -1,3 +1,10 @@
+2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR tree-optimization/79908
+       * tree-stdarg.c (expand_ifn_va_arg_1): Revert the following
+       change: For a VA_ARG whose LHS has been cast away, use
+       force_gimple_operand to construct the side effects.
+
 2017-03-21  David Malcolm  <dmalcolm@redhat.com>
 
        PR translation/80001
index 854726236e0284706e9dc0586dbc5db2b1803d3b..aa6ec43ebc0eb3b389871212b1f6ddd865ef884a 100644 (file)
@@ -1,3 +1,8 @@
+2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR tree-optimization/79908
+       * gcc.dg/torture/pr79908.c: Revert addition of new file.
+
 2017-03-21  Marek Polacek  <polacek@redhat.com>
            Martin Sebor  <msebor@redhat.com>
 
index e2d6920a4cda00d34a56a2acdefbb6398ba8f81b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,12 +0,0 @@
-/* { dg-do compile } */
-
-/* Used to fail in the stdarg pass before fix for PR79908.  */
-
-typedef __builtin_va_list __gnuc_va_list;
-typedef __gnuc_va_list va_list;
-
-void testva (int n, ...)
-{
-  va_list ap;
-  _Complex int i = __builtin_va_arg (ap, _Complex int);
-}
index 18dd972e3f60ea3cfbe441ec9b84d4394d9b01e9..8972822f5b7d38fdb66d8261639d72b97d56f878 100644 (file)
@@ -33,7 +33,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-iterator.h"
 #include "gimple-walk.h"
 #include "gimplify.h"
-#include "gimplify-me.h"
 #include "tree-into-ssa.h"
 #include "tree-cfg.h"
 #include "tree-stdarg.h"
@@ -1059,16 +1058,12 @@ expand_ifn_va_arg_1 (function *fun)
            gimplify_assign (lhs, expr, &pre);
          }
        else
-         {
-           gimple_seq tmp_seq;
-           force_gimple_operand (expr, &tmp_seq, false, NULL_TREE);
-           gimple_seq_add_seq_without_update (&pre, tmp_seq);
-         }
+         gimplify_expr (&expr, &pre, &post, is_gimple_lvalue, fb_lvalue);
 
        input_location = saved_location;
        pop_gimplify_context (NULL);
 
-       gimple_seq_add_seq_without_update (&pre, post);
+       gimple_seq_add_seq (&pre, post);
        update_modified_stmts (pre);
 
        /* Add the sequence after IFN_VA_ARG.  This splits the bb right
@@ -1077,10 +1072,11 @@ expand_ifn_va_arg_1 (function *fun)
        gimple_find_sub_bbs (pre, &i);
 
        /* Remove the IFN_VA_ARG gimple_call.  It's the last stmt in the
-          bb if we added any stmts.  */
+          bb.  */
        unlink_stmt_vdef (stmt);
        release_ssa_name_fn (fun, gimple_vdef (stmt));
        gsi_remove (&i, true);
+       gcc_assert (gsi_end_p (i));
 
        /* We're walking here into the bbs which contain the expansion of
           IFN_VA_ARG, and will not contain another IFN_VA_ARG that needs