summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-01 07:43:03 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-01 07:43:03 +0000
commita8de373224425ffefd70fc9194124b79ccb9306a (patch)
treea582f845763856e5c9c0cdb2a1ee2ad60b0089d5 /gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c
parent8ff30ff667615cfff1615bd94ddc11c4efce521d (diff)
downloadgcc-a8de373224425ffefd70fc9194124b79ccb9306a.tar.gz
2004-10-01 Jakub Jelinek <jakub@redhat.com>
Revert 2004-09-29 Jakub Jelinek <jakub@redhat.com> * tree.h (enum tree_index): Add TI_VA_LIST_GPR_COUNTER_FIELD and TI_VA_LIST_FPR_COUNTER_FIELD. (va_list_gpr_counter_field, va_list_fpr_counter_field): Define. * tree-pass.h (pass_stdarg): Add. * tree-optimize.c (init_tree_optimization_passes): Add pass_stdarg. * tree-stdarg.c: New file. * Makefile.in (OBJS-common): Add tree-stdarg.o. (tree-stdarg.o): Add dependencies. * function.h (struct function): Add va_list_gpr_size and va_list_fpr_size fields. * function.c (allocate_struct_function): Initialize them. * config/i386/i386.c (ix86_build_builtin_va_list): Initialize va_list_{g,f}pr_counter_field. (ix86_setup_incoming_varargs): Don't do anything if reg_save area will not be used. Only save registers that tree-stdarg.c detected they need saving. (ix86_va_start): Don't set up fields that won't be used. * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Initialize va_list_{g,f}pr_counter_field. (setup_incoming_varargs): Don't do anything if reg_save area will not be used. Only save registers that tree-stdarg.c detected they need saving. (rs6000_va_start): Don't set up fields that won't be used. * gcc.dg/tree-ssa/stdarg-1.c: Removed. * gcc.dg/tree-ssa/stdarg-2.c: Removed. * gcc.dg/tree-ssa/stdarg-3.c: Removed. * gcc.dg/tree-ssa/stdarg-4.c: Removed. * gcc.dg/tree-ssa/stdarg-5.c: Removed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88383 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c')
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c124
1 files changed, 0 insertions, 124 deletions
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c b/gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c
deleted file mode 100644
index cf68fe8dfc9..00000000000
--- a/gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* This test is only for architectures that save general and floating point
- registers separately in stdarg functions. */
-/* { dg-do compile { target x86_64-*-* powerpc-*-* } } */
-/* { dg-options "-O2 -fdump-tree-stdarg" } */
-
-#include <stdarg.h>
-
-extern void foo (int, va_list);
-extern void bar (int);
-long x;
-va_list gap;
-
-/* If va_list is not local variable, it escapes the function. */
-void
-f1 (int i, ...)
-{
- va_start (gap, i);
- x = va_arg (gap, long);
- va_end (gap);
-}
-/* { dg-final { scan-tree-dump "f1: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */
-
-void
-f2 (int i, ...)
-{
- va_start (gap, i);
- bar (i);
- va_end (gap);
-}
-/* { dg-final { scan-tree-dump "f2: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */
-
-/* tree-stdarg.c only handles va_list variables, not arrays of them or
- va_list fields embedded in structures. */
-void
-f3 (int i, ...)
-{
- va_list aps[10];
- va_start (aps[4], i);
- x = va_arg (aps[4], long);
- va_end (aps[4]);
-}
-/* { dg-final { scan-tree-dump "f3: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */
-
-void
-f4 (int i, ...)
-{
- va_list aps[10];
- va_start (aps[4], i);
- bar (i);
- va_end (aps[4]);
-}
-/* { dg-final { scan-tree-dump "f4: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */
-
-void
-f5 (int i, ...)
-{
- va_list aps[10];
- va_start (aps[4], i);
- foo (i, aps[4]);
- va_end (aps[4]);
-}
-/* { dg-final { scan-tree-dump "f5: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */
-
-struct A { int i; va_list g; va_list h[2]; };
-
-void
-f6 (int i, ...)
-{
- struct A a;
- va_start (a.g, i);
- x = va_arg (a.g, long);
- va_end (a.g);
-}
-/* { dg-final { scan-tree-dump "f6: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */
-
-void
-f7 (int i, ...)
-{
- struct A a;
- va_start (a.g, i);
- bar (i);
- va_end (a.g);
-}
-/* { dg-final { scan-tree-dump "f7: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */
-
-void
-f8 (int i, ...)
-{
- struct A a;
- va_start (a.g, i);
- foo (i, a.g);
- va_end (a.g);
-}
-/* { dg-final { scan-tree-dump "f8: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */
-
-void
-f10 (int i, ...)
-{
- struct A a;
- va_start (a.h[1], i);
- x = va_arg (a.h[1], long);
- va_end (a.h[1]);
-}
-/* { dg-final { scan-tree-dump "f10: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */
-
-void
-f11 (int i, ...)
-{
- struct A a;
- va_start (a.h[1], i);
- bar (i);
- va_end (a.h[1]);
-}
-/* { dg-final { scan-tree-dump "f11: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */
-
-void
-f12 (int i, ...)
-{
- struct A a;
- va_start (a.h[1], i);
- foo (i, a.h[1]);
- va_end (a.h[1]);
-}
-/* { dg-final { scan-tree-dump "f12: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */