This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Fix for failing gcc.c-torture/execute/stdarg-2.c test
- From: "Ben Elliston" <bje at au1 dot ibm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Ulrich Weigand <weigand at i1 dot informatik dot uni-erlangen dot de>
- Date: 20 Oct 2004 14:13:50 +1000
- Subject: 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. */