https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64950
--- Comment #5 from vries at gcc dot gnu.org --- https://gcc.gnu.org/ml/gcc-cvs/2015-04/msg00371.html : Author: vries Date: Fri Apr 17 09:26:59 2015 New Revision: 222173 URL: https://gcc.gnu.org/viewcvs?rev=222173&root=gcc&view=rev Log: Postpone expanding va_arg until pass_stdarg 2015-04-17 Tom de Vries <t...@codesourcery.com> Michael Matz <m...@suse.de> * gimple-iterator.c (update_modified_stmts): Remove static. * gimple-iterator.h (update_modified_stmts): Declare. * gimplify.c (gimplify_modify_expr): Handle IFN_VA_ARG. (gimplify_va_arg_internal): New function. (gimplify_va_arg_expr): Use IFN_VA_ARG. * gimplify.h (gimplify_va_arg_internal): Declare. * internal-fn.c (expand_VA_ARG): New unreachable function. * internal-fn.def (VA_ARG): New DEF_INTERNAL_FN. * tree-stdarg.c (gimple_call_ifn_va_arg_p, expand_ifn_va_arg_1) (expand_ifn_va_arg): New function. (pass_data_stdarg): Add PROP_gimple_lva to properties_provided field. (pass_stdarg::execute): Call expand_ifn_va_arg. (pass_data_lower_vaarg): New pass_data. (pass_lower_vaarg): New gimple_opt_pass. (pass_lower_vaarg::gate, pass_lower_vaarg::execute) (make_pass_lower_vaarg): New function. * cfgexpand.c (pass_data_expand): Add PROP_gimple_lva to properties_required field. * passes.def (all_passes): Add pass_lower_vaarg. * tree-pass.h (PROP_gimple_lva): Add define. (make_pass_lower_vaarg): Declare. * gcc.dg/tree-ssa/stdarg-2.c: Change f15 scan-tree-dump for target x86_64-*-*. Modified: trunk/gcc/ChangeLog trunk/gcc/cfgexpand.c trunk/gcc/gimple-iterator.c trunk/gcc/gimple-iterator.h trunk/gcc/gimplify.c trunk/gcc/gimplify.h trunk/gcc/internal-fn.c trunk/gcc/internal-fn.def trunk/gcc/passes.def trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c trunk/gcc/tree-pass.h trunk/gcc/tree-stdarg.c