------- Comment #21 from ubizjak at gmail dot com 2009-09-10 18:37 -------
Either -fno-tree-fre or -fno-tree-dce "fixes" this test in the sense that
somehow disables stdarg optimization:
f4: va_list escapes 1, needs to save all GPR units and all FPR units.
This all happens on top of:
Index: gcc/config/alpha/alpha.c
===================================================================
--- gcc/config/alpha/alpha.c (revision 151587)
+++ gcc/config/alpha/alpha.c (working copy)
@@ -6339,7 +6339,7 @@ alpha_gimplify_va_arg_1 (tree type, tree
}
addend = offset;
- ptr_type = build_pointer_type (type);
+ ptr_type = build_pointer_type_for_mode (type, ptr_mode, true);
if (TREE_CODE (type) == COMPLEX_TYPE)
{
@@ -6420,7 +6420,7 @@ alpha_gimplify_va_arg (tree valist, tree
indirect = pass_by_reference (NULL, TYPE_MODE (type), type, false);
if (indirect)
- type = build_pointer_type (type);
+ type = build_pointer_type_for_mode (type, ptr_mode, true);
/* Find the value. Note that this will be a stable indirection, or
a composite of stable indirections in the case of complex. */
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41089