re PR middle-end/32441 (ICE in expand_expr_real_1, at expr.c:7109)
authorIan Lance Taylor <iant@google.com>
Fri, 6 Jul 2007 17:57:58 +0000 (17:57 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Fri, 6 Jul 2007 17:57:58 +0000 (17:57 +0000)
2007-07-06  Ian Lance Taylor  <iant@google.com>
            Zack Weinberg  <zackw@panix.com>

PR middle-end/32441
* builtins.c (std_expand_builtin_va_start): Don't use make_tree.

Co-Authored-By: Zack Weinberg <zackw@panix.com>
From-SVN: r126424

gcc/ChangeLog
gcc/builtins.c

index 7a9b7c971c5e9746a1ee91bde6776c8b5238aa74..8bf43ab5c578854edfd29bc612eccf3115782c21 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-06  Ian Lance Taylor  <iant@google.com>
+            Zack Weinberg  <zackw@panix.com>
+
+       PR middle-end/32441
+       * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
+
 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
 
        * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
index cf1d743b30e107306df166fb22fe178927959ef7..45dea02084205b348dafd0e6e062a3cf380f6b34 100644 (file)
@@ -4649,14 +4649,8 @@ std_build_builtin_va_list (void)
 void
 std_expand_builtin_va_start (tree valist, rtx nextarg)
 {
-  tree t;
-  t = make_tree (sizetype, nextarg);
-  t = fold_convert (ptr_type_node, t);
-
-  t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist, t);
-  TREE_SIDE_EFFECTS (t) = 1;
-
-  expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
+  rtx va_r = expand_expr (valist, NULL_RTX, VOIDmode, EXPAND_WRITE);
+  convert_move (va_r, nextarg, 0);
 }
 
 /* Expand EXP, a call to __builtin_va_start.  */