This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix for failing gcc.c-torture/execute/stdarg-2.c test


The following patch, mimicked from Ulrich Weigand's patch [1], adapts
some backend code to using build_va_arg_indirect_ref().  Tested with a
powerpc-linux bootstrap and make check.  The change corrects the
failing gcc.c-torture/execute/stdarg-2.c test.

When I say that I mimicked Ulrich's patch, I must admit that I don't
completely understand the change, so please scruitinise my patch
heavily!

Ben

[1] http://gcc.gnu.org/ml/gcc-patches/2004-10/msg01043.html


2004-10-20  Ben Elliston  <bje@au.ibm.com>

	* config/rs6000/rs6000.c
	(rs6000_va_start): Use build_va_arg_indirect_ref.
	(rs6000_gimplify_va_arg): Likewise.

Index: rs6000.c
===================================================================
RCS file: /home/bje/gcc-cvs/gcc/gcc/config/rs6000/rs6000.c,v
retrieving revision 1.724
diff -u -p -r1.724 rs6000.c
--- rs6000.c	14 Oct 2004 22:30:42 -0000	1.724
+++ rs6000.c	20 Oct 2004 04:10:29 -0000
@@ -5519,7 +5519,7 @@ rs6000_va_start (tree valist, rtx nextar
   f_ovf = TREE_CHAIN (f_res);
   f_sav = TREE_CHAIN (f_ovf);
 
-  valist = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (valist)), valist);
+  valist = build_va_arg_indirect_ref (valist);
   gpr = build (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
   fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
   ovf = build (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
@@ -5578,7 +5578,7 @@ rs6000_gimplify_va_arg (tree valist, tre
   if (pass_by_reference (NULL, TYPE_MODE (type), type, false))
     {
       t = rs6000_gimplify_va_arg (valist, ptrtype, pre_p, post_p);
-      return build_fold_indirect_ref (t);
+      return build_va_arg_indirect_ref (t);
     }
 
   if (DEFAULT_ABI != ABI_V4)
@@ -5617,7 +5617,7 @@ rs6000_gimplify_va_arg (tree valist, tre
   f_ovf = TREE_CHAIN (f_res);
   f_sav = TREE_CHAIN (f_ovf);
 
-  valist = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (valist)), valist);
+  valist = build_va_arg_indirect_ref (valist);
   gpr = build (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
   fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
   ovf = build (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
@@ -5733,7 +5733,7 @@ rs6000_gimplify_va_arg (tree valist, tre
     }
 
   addr = fold_convert (ptrtype, addr);
-  return build_fold_indirect_ref (addr);
+  return build_va_arg_indirect_ref (addr);
 }
 
 /* Builtins.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]