This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/20983] [4.0/4.1/4.2/4.3 Regression] varargs functions force va_list variable to stack unnecessarily



------- Comment #13 from jakub at gcc dot gnu dot org  2007-12-06 13:25 -------
Subject: Bug 20983

Author: jakub
Date: Thu Dec  6 13:25:37 2007
New Revision: 130650

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=130650
Log:
        PR middle-end/20983
        * tree-ssa-ccp.c (optimize_stdarg_builtin): New function.
        (execute_fold_all_builtins): Call it for BUILT_IN_VA_START,
        BUILT_IN_VA_COPY and BUILT_IN_VA_END.

        * target.h (struct ggc_target): Add expand_builtin_va_start
        hook.
        * target-def.h (TARGET_EXPAND_BUILTIN_VA_START): Define.
        (TARGET_INITIALIZER): Add it.
        * builtins.c (expand_builtin_va_start): Use
        targetm.expand_builtin_va_start hook instead of
        EXPAND_BUILTIN_VA_START macro.
        * alpha/alpha.c (alpha_va_start): Made static.
        (override_options): Clear targetm.expand_builtin_va_start if
        TARGET_UNICOSMK.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * alpha/unicosmk.h (EXPAND_BUILTIN_VA_START): Remove.
        * alpha/alpha.h (EXPAND_BUILTIN_VA_START): Remove.
        * alpha/alpha-protos.h (alpha_va_start): Remove prototype.
        * xtensa/xtensa.h (EXPAND_BUILTIN_VA_START): Remove.
        * xtensa/xtensa.c (TARGET_EXPAND_BUILTIN_VA_START): Define.
        (xtensa_va_start): Made static.
        * xtensa/xtensa-protos.h (xtensa_va_start): Remove prototype.
        * pa/pa-protos.h (hppa_va_start): Remove prototype.
        * pa/pa.h (EXPAND_BUILTIN_VA_START): Remove.
        * pa/pa.c (hppa_va_start): Made static, add prototype.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * frv/frv.c (frv_expand_builtin_va_start): Made static, add prototype.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * frv/frv-protos.h (frv_expand_builtin_va_start): Remove prototype.
        * frv/frv.h (EXPAND_BUILTIN_VA_START): Remove.
        * i386/i386.c (override_options): Clear
        targetm.expand_builtin_va_start if -m32 or 64-bit MS ABI.
        (ix86_va_start): Made static.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * i386/i386.h (EXPAND_BUILTIN_VA_START): Remove.
        * i386/i386-protos.h (ix86_va_start, ix86_va_arg): Remove prototypes.
        * iq2000/iq2000-protos.h (iq2000_va_start): Remove prototype.
        * iq2000/iq2000.h (EXPAND_BUILTIN_VA_START): Remove.
        * iq2000/iq2000.c (iq2000_va_start): Made static, add prototype.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * rs6000/rs6000-protos.h (rs6000_va_start): Remove prototype.
        * rs6000/rs6000.c (rs6000_va_start): Made static, add prototype.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        (rs6000_override_options): Clear targetm.expand_builtin_va_start if
        DEFAULT_ABI != ABI_V4.
        * rs6000/rs6000.h (EXPAND_BUILTIN_VA_START): Remove.
        * spu/spu.c (spu_va_start): Made static, add prototype.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * spu/spu.h (EXPAND_BUILTIN_VA_START): Remove.
        * spu/spu-protos.h spu_va_start): Remove prototype.
        * stormy16/stormy16.h (EXPAND_BUILTIN_VA_START): Remove.
        * stormy16/stormy16-protos.h (xstormy16_expand_builtin_va_start):
        Remove prototype.
        * stormy16/stormy16.c (xstormy16_expand_builtin_va_start): Made
        static.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * s390/s390-protos.h (s390_va_start): Remove prototype.
        * s390/s390.c (s390_va_start): Made static.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * s390/s390.h (EXPAND_BUILTIN_VA_START): Remove.
        * mn10300/mn10300.h (EXPAND_BUILTIN_VA_START): Remove.
        * mn10300/mn10300-protos.h (mn10300_va_start): Remove prototype.
        * mn10300/mn10300.c (mn10300_va_start): Made static, add prototype.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * arc/arc.c (arc_va_start): Made static, add prototype.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * arc/arc.h (EXPAND_BUILTIN_VA_START): Remove.
        * arc/arc-protos.h (arc_va_start): Remove prototype.
        * mt/mt-protos.h (mt_va_start): Remove prototype.
        * sparc/sparc.c (sparc_va_start): Made static, add prototype.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * sparc/sparc-protos.h (sparc_va_start): Remove prototype.
        * sparc/sparc.h (EXPAND_BUILTIN_VA_START): Remove.
        * sh/sh.c (sh_va_start): Made static, add prototype.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * sh/sh-protos.h (sh_va_start): Remove prototype.
        * sh/sh.h (EXPAND_BUILTIN_VA_START): Remove.
        * mips/mips-protos.h (mips_va_start): Remove prototype.
        * mips/mips.h (EXPAND_BUILTIN_VA_START): Remove.
        * mips/mips.c (mips_va_start): Made static.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/builtins.c
    trunk/gcc/config/alpha/alpha-protos.h
    trunk/gcc/config/alpha/alpha.c
    trunk/gcc/config/alpha/alpha.h
    trunk/gcc/config/alpha/unicosmk.h
    trunk/gcc/config/arc/arc-protos.h
    trunk/gcc/config/arc/arc.c
    trunk/gcc/config/arc/arc.h
    trunk/gcc/config/frv/frv-protos.h
    trunk/gcc/config/frv/frv.c
    trunk/gcc/config/frv/frv.h
    trunk/gcc/config/i386/i386-protos.h
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/i386.h
    trunk/gcc/config/iq2000/iq2000-protos.h
    trunk/gcc/config/iq2000/iq2000.c
    trunk/gcc/config/iq2000/iq2000.h
    trunk/gcc/config/mips/mips-protos.h
    trunk/gcc/config/mips/mips.c
    trunk/gcc/config/mips/mips.h
    trunk/gcc/config/mn10300/mn10300-protos.h
    trunk/gcc/config/mn10300/mn10300.c
    trunk/gcc/config/mn10300/mn10300.h
    trunk/gcc/config/mt/mt-protos.h
    trunk/gcc/config/pa/pa-protos.h
    trunk/gcc/config/pa/pa.c
    trunk/gcc/config/pa/pa.h
    trunk/gcc/config/rs6000/rs6000-protos.h
    trunk/gcc/config/rs6000/rs6000.c
    trunk/gcc/config/rs6000/rs6000.h
    trunk/gcc/config/s390/s390-protos.h
    trunk/gcc/config/s390/s390.c
    trunk/gcc/config/s390/s390.h
    trunk/gcc/config/sh/sh-protos.h
    trunk/gcc/config/sh/sh.c
    trunk/gcc/config/sh/sh.h
    trunk/gcc/config/sparc/sparc-protos.h
    trunk/gcc/config/sparc/sparc.c
    trunk/gcc/config/sparc/sparc.h
    trunk/gcc/config/spu/spu-protos.h
    trunk/gcc/config/spu/spu.c
    trunk/gcc/config/spu/spu.h
    trunk/gcc/config/stormy16/stormy16-protos.h
    trunk/gcc/config/stormy16/stormy16.c
    trunk/gcc/config/stormy16/stormy16.h
    trunk/gcc/config/xtensa/xtensa-protos.h
    trunk/gcc/config/xtensa/xtensa.c
    trunk/gcc/config/xtensa/xtensa.h
    trunk/gcc/target-def.h
    trunk/gcc/target.h
    trunk/gcc/tree-ssa-ccp.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20983


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]