Update address_taken after ifn_va_arg expansion 2015-05-08 Tom de Vries PR tree-optimization/66013 * tree-stdarg.c: Include tree-ssa.h. (expand_ifn_va_arg_1): Call execute_update_addresses_taken after TODO_update_ssa. * gcc.dg/tree-ssa/stdarg-2.c: Add ia32 scan for 'va_list escapes 0'. --- gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c | 2 ++ gcc/tree-stdarg.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c b/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c index f09b5de..3b1bc2c 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c @@ -300,6 +300,8 @@ f15 (int i, ...) /* We may be able to improve upon this after fixing PR66010/PR66013. */ /* { dg-final { scan-tree-dump "f15: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" { target alpha*-*-linux* } } } */ +/* { dg-final { scan-tree-dump "f15: va_list escapes 0" "stdarg" { target { { i?86-*-* x86_64-*-* } && ia32 } } } } */ + /* { dg-final { scan-tree-dump-not "f15: va_list escapes 0, needs to save 0 GPR units" "stdarg" { target { { i?86-*-* x86_64-*-* } && ia32 } } } } */ /* { dg-final { scan-tree-dump-not "f15: va_list escapes 0, needs to save 0 GPR units" "stdarg" { target ia64-*-* } } } */ /* { dg-final { scan-tree-dump-not "f15: va_list escapes 0, needs to save 0 GPR units" "stdarg" { target { powerpc*-*-* && lp64 } } } } */ diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c index 1356374..64e6224 100644 --- a/gcc/tree-stdarg.c +++ b/gcc/tree-stdarg.c @@ -62,6 +62,7 @@ along with GCC; see the file COPYING3. If not see #include "tree-cfg.h" #include "tree-pass.h" #include "tree-stdarg.h" +#include "tree-ssa.h" /* A simple pass that attempts to optimize stdarg functions on architectures that need to save register arguments to stack on entry to stdarg functions. @@ -1108,6 +1109,7 @@ expand_ifn_va_arg_1 (function *fun) free_dominance_info (CDI_DOMINATORS); update_ssa (TODO_update_ssa); + execute_update_addresses_taken (); } /* Expand IFN_VA_ARGs in FUN, if necessary. */ -- 1.9.1