Gimplify VA_ARG_EXPR into simpler forms.
authorJason Merrill <jason@redhat.com>
Wed, 9 Jun 2004 15:32:44 +0000 (11:32 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 9 Jun 2004 15:32:44 +0000 (11:32 -0400)
commitcd3ce9b44c1c3b4f4567de0d2767df058b89ce58
treea63536f7f79b61493abe2609fb704c1c740bcd7d
parente072ae27e0898a7244b08d003a43b4cecf146df0
Gimplify VA_ARG_EXPR into simpler forms.

        * target.h: Add gimplify_va_arg_expr hook.
        * target-def.h: Add TARGET_GIMPLIFY_VA_ARG_EXPR.
        * fold-const.c (build_fold_addr_expr)
        (build_fold_addr_expr_with_type): Move from gimplify.c.
        * tree.h: Declare them.
        * gimplify.c (gimplify_and_add): New fn.
        (build_addr_expr, build_addr_expr_with_type): Move to fold-const.c.
        (gimplify_array_ref_to_plus, gimplify_modify_expr)
        (gimplify_expr): Use build_fold_*.
        (copy_if_shared_r): Only mark VA_ARG_EXPR volatile if we
        don't know how to gimplify it.
        * builtins.c (std_gimplify_va_arg_expr): New fn.
        (dummy_object): New static fn.
        (gimplify_va_arg_expr): New fn.
        (stabilize_va_list): Use build_fold_*.
        * tree-gimple.h: Declare new fns.
        * config/i386/i386.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
        (ix86_gimplify_va_arg): New fn.
        * config/i386/ia64.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
        (ia64_gimplify_va_arg): New fn.
        * config/i386/rs6000.c (rs6000_gimplify_va_arg): New fn.
        (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
        * config/i386/sparc.c (sparc_gimplify_va_arg): New fn.
        * alias.c (get_varargs_alias_set): Just return 0 for now.

        * c-objc-common.c (c_tree_printer): Improve handling of %T.

From-SVN: r82838
13 files changed:
gcc/ChangeLog
gcc/alias.c
gcc/builtins.c
gcc/c-objc-common.c
gcc/config/i386/i386.c
gcc/config/ia64/ia64.c
gcc/config/rs6000/rs6000.c
gcc/fold-const.c
gcc/gimplify.c
gcc/target-def.h
gcc/target.h
gcc/tree-gimple.h
gcc/tree.h