From: Kai Tietz Date: Fri, 4 Jul 2008 12:48:27 +0000 (+0200) Subject: Revert 137452. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6880396e28345c0d255bf9bef8e99c23209134f7;p=platform%2Fupstream%2Fgcc.git Revert 137452. From-SVN: r137458 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 69053a9..df56c9e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -14,56 +14,6 @@ * opts.c (decode_options): Set max-fields-for-field-sensitive to 100 for optimize >= 2. -2008-07-04 Kai Tietz - - * config.gcc (extra_headers): Add cross-stdarg.h for target - x86_64-*-* and i?86-*-*. - * config/i386/cross-stdarg.h: New. - * builtins.c (std_fn_abi_va_list): New. - (std_canonical_va_list_type): New. - (stabilize_va_list): Replace va_list_type_node use by - mtarget.canonical_va_list_type. - (gimplify_va_arg_expr): Likewise. - (expand_builtin_va_copy): Replace va_list_type_node use by - mtarget.fn_abi_va_list. - * tree-sra.c (is_va_list_type): New helper. - (decl_can_be_decomposed_p): Replace - va_list_type_node use by is_va_list_type. - * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise. - * tree-stdarg.c (execute_optimize_stdarg): Likewise. - * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST. - * config/i386/i386-protos.h (ix86_get_valist_type): New. - (ix86_enum_va_list): New. - * config/i386/i386.c (sysv_va_list_type_node): New. - (ms_va_list_type_node): New. - (ix86_function_type_abi): Remove sorry. - (ix86_build_builtin_va_list_abi): New. - (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi - for 64-bit targets. - (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node. - (ix86_init_builtins_va_builtins_abi): New. - (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi - for 64-bit targets. - (ix86_handle_abi_attribute): New. - (attribute_spec): Add sysv_abi and ms_abi. - (ix86_fn_abi_va_list): New. - (ix86_canonical_va_list_type): New. - (ix86_enum_va_list): New. - (TARGET_FN_ABI_VA_LIST): New. - (TARGET_CANONICAL_VA_LIST_TYPE): New. - * config/i386/i386.h (TARGET_ENUM_VA_LIST): New. - * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New. - (TARGET_CANONICAL_VA_LIST_TYPE): New. - (TARGET_ENUM_VA_LIST): New. - * expr.h (std_fn_abi_va_list): New. - (std_canonical_va_list_type): New. - * target-def.h (TARGET_FN_ABI_VA_LIST): New. - (TARGET_CANONICAL_VA_LIST_TYPE): New. - (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and - TARGET_CANONICAL_VA_LIST_TYPE. - * target.h (struct gcc_target): Add fn_abi_va_list hook - and canonical_va_list_type hook. - 2008-07-04 Kaveh R. Ghazi * ggc-zone.c (lookup_page_table_if_allocated, diff --git a/gcc/config/i386/cross-stdarg.h b/gcc/config/i386/cross-stdarg.h deleted file mode 100644 index 98ac1ec..0000000 --- a/gcc/config/i386/cross-stdarg.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 - Free Software Foundation, Inc. - - This file is part of GCC. - - GCC is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GCC is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GCC; see the file COPYING. If not, write to - the Free Software Foundation, 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you include this header file into source - files compiled by GCC, this header file does not by itself cause - the resulting executable to be covered by the GNU General Public - License. This exception does not however invalidate any other - reasons why the executable file might be covered by the GNU General - Public License. */ - -#ifndef __CROSS_STDARG_H_INCLUDED -#define __CROSS_STDARG_H_INCLUDED - -/* Make sure that for non x64 targets cross builtins are defined. */ -#ifndef __x86_64__ -/* Call abi ms_abi. */ -#define __builtin_ms_va_list __builtin_va_list -#define __builtin_ms_va_copy __builtin_va_copy -#define __builtin_ms_va_start __builtin_va_start -#define __builtin_ms_va_end __builtin_va_end - -/* Call abi sysv_abi. */ -#define __builtin_sysv_va_list __builtin_va_list -#define __builtin_sysv_va_copy __builtin_va_copy -#define __builtin_sysv_va_start __builtin_va_start -#define __builtin_sysv_va_end __builtin_va_end -#endif - -#define __ms_va_copy(__d,__s) __builtin_ms_va_copy(__d,__s) -#define __ms_va_start(__v,__l) __builtin_ms_va_start(__v,__l) -#define __ms_va_arg(__v,__l) __builtin_va_arg(__v,__l) -#define __ms_va_end(__v) __builtin_ms_va_end(__v) - -#define __sysv_va_copy(__d,__s) __builtin_sysv_va_copy(__d,__s) -#define __sysv_va_start(__v,__l) __builtin_sysv_va_start(__v,__l) -#define __sysv_va_arg(__v,__l) __builtin_va_arg(__v,__l) -#define __sysv_va_end(__v) __builtin_sysv_va_end(__v) - -#ifndef __GNUC_SYSV_VA_LIST -#define __GNUC_SYSV_VA_LIST - typedef __builtin_sysv_va_list __gnuc_sysv_va_list; -#endif - -#ifndef _SYSV_VA_LIST_DEFINED -#define _SYSV_VA_LIST_DEFINED - typedef __gnuc_sysv_va_list sysv_va_list; -#endif - -#ifndef __GNUC_MS_VA_LIST -#define __GNUC_MS_VA_LIST - typedef __builtin_ms_va_list __gnuc_ms_va_list; -#endif - -#ifndef _MS_VA_LIST_DEFINED -#define _MS_VA_LIST_DEFINED - typedef __gnuc_ms_va_list ms_va_list; -#endif - -#endif /* __CROSS_STDARG_H_INCLUDED */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 923bd13..0ff00d4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -2,14 +2,6 @@ * gcc.dg/tree-ssa/pta-callused.c: New testcase. -2008-07-04 Kai Tietz - - * gcc.dg/callabi/callabi.h: New. - * gcc.dg/callabi/vaarg-1.c: New. - * gcc.dg/callabi/vaarg-2.c: New. - * gcc.dg/callabi/vaarg-3.c: New. - * gcc.dg/callabi/func-1.c: New. - 2008-07-04 Richard Sandiford * gcc.target/m68k/interrupt-2.c: New file. diff --git a/gcc/testsuite/gcc.dg/callabi/callabi.h b/gcc/testsuite/gcc.dg/callabi/callabi.h deleted file mode 100644 index d008ad6..0000000 --- a/gcc/testsuite/gcc.dg/callabi/callabi.h +++ /dev/null @@ -1,50 +0,0 @@ -/* First the default target definition. */ -#ifndef __GNUC_VA_LIST -#define __GNUC_VA_LIST - typedef __builtin_va_list __gnuc_va_list; -#endif - -#ifndef _VA_LIST_DEFINED -#define _VA_LIST_DEFINED - typedef __gnuc_va_list va_list; -#endif - -#define __va_copy(d,s) __builtin_va_copy(d,s) -#define __va_start(v,l) __builtin_va_start(v,l) -#define __va_arg(v,l) __builtin_va_arg(v,l) -#define __va_end(v) __builtin_va_end(v) - -#define __ms_va_copy(d,s) __builtin_ms_va_copy(d,s) -#define __ms_va_start(v,l) __builtin_ms_va_start(v,l) -#define __ms_va_arg(v,l) __builtin_va_arg(v,l) -#define __ms_va_end(v) __builtin_ms_va_end(v) - -#define __sysv_va_copy(d,s) __builtin_sysv_va_copy(d,s) -#define __sysv_va_start(v,l) __builtin_sysv_va_start(v,l) -#define __sysv_va_arg(v,l) __builtin_va_arg(v,l) -#define __sysv_va_end(v) __builtin_sysv_va_end(v) - -#define CALLABI_NATIVE - -#ifdef _WIN64 -#define CALLABI_CROSS __attribute__ ((sysv_abi)) - -#define CROSS_VA_LIST __builtin_sysv_va_list - -#define CROSS_VA_COPY(d,s) __sysv_va_copy(d,s) -#define CROSS_VA_START(v,l) __sysv_va_start(v,l) -#define CROSS_VA_ARG(v,l) __sysv_va_arg(v,l) -#define CROSS_VA_END(v) __sysv_va_end(v) - -#else - -#define CALLABI_CROSS __attribute__ ((ms_abi)) - -#define CROSS_VA_LIST __builtin_ms_va_list - -#define CROSS_VA_COPY(d,s) __ms_va_copy(d,s) -#define CROSS_VA_START(v,l) __ms_va_start(v,l) -#define CROSS_VA_ARG(v,l) __ms_va_arg(v,l) -#define CROSS_VA_END(v) __ms_va_end(v) - -#endif \ No newline at end of file diff --git a/gcc/testsuite/gcc.dg/callabi/func-1.c b/gcc/testsuite/gcc.dg/callabi/func-1.c deleted file mode 100644 index c727dbe..0000000 --- a/gcc/testsuite/gcc.dg/callabi/func-1.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Test for cross x86_64<->w64 abi standard calls. -*/ -/* Origin: Kai Tietz */ -/* { dg-do run { target { x86_64-*-* } } } */ -/* { dg-options "-std=gnu99 -ffast-math" } */ -#include "callabi.h" - -extern void abort (void); - -long double -CALLABI_CROSS func_cross (long double a, double b, float c, long d, int e, - char f) -{ - long double ret; - ret = a + (long double) b + (long double) c; - ret *= (long double) (d + (long) e); - if (f>0) - ret += func_cross (a,b,c,d,e,-f); - return ret; -} - -long double -CALLABI_NATIVE func_native (long double a, double b, float c, long d, int e, - char f) -{ - long double ret; - ret = a + (long double) b + (long double) c; - ret *= (long double) (d + (long) e); - if (f>0) - ret += func_native (a,b,c,d,e,-f); - return ret; -} - -int main () -{ - if (func_cross (1.0,2.0,3.0,1,2,3) - != func_native (1.0,2.0,3.0,1,2,3)) - abort (); - return 0; -} \ No newline at end of file diff --git a/gcc/testsuite/gcc.dg/callabi/vaarg-1.c b/gcc/testsuite/gcc.dg/callabi/vaarg-1.c deleted file mode 100644 index 1e745e5..0000000 --- a/gcc/testsuite/gcc.dg/callabi/vaarg-1.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Test for cross x86_64<->w64 abi va_list calls. -*/ -/* Origin: Kai Tietz */ -/* { dg-do run { target { x86_64-*-* } } } */ -/* { dg-options "-std=gnu99" } */ -#include "callabi.h" - -extern __SIZE_TYPE__ strlen (const char *); -extern int sprintf (char *,const char *, ...); -extern void abort (void); - -static -void CALLABI_CROSS vdo_cpy (char *s, CROSS_VA_LIST argp) -{ - __SIZE_TYPE__ len; - char *r = s; - char *e; - *r = 0; - for (;;) { - e = CROSS_VA_ARG (argp,char *); - if (*e == 0) break; - sprintf (r,"%s", e); - r += strlen (r); - } -} - -static -void CALLABI_CROSS do_cpy (char *s, ...) -{ - CROSS_VA_LIST argp; - CROSS_VA_START (argp, s); - vdo_cpy (s, argp); - CROSS_VA_END (argp); -} - -int main () -{ - char s[256]; - - do_cpy (s, "1","2","3","4", "5", "6", "7", ""); - - if (s[0] != '1' || s[1] !='2' || s[2] != '3' || s[3] != '4' - || s[4] != '5' || s[5] != '6' || s[6] != '7' || s[7] != 0) - abort (); - - return 0; -} diff --git a/gcc/testsuite/gcc.dg/callabi/vaarg-2.c b/gcc/testsuite/gcc.dg/callabi/vaarg-2.c deleted file mode 100644 index c9b7161..0000000 --- a/gcc/testsuite/gcc.dg/callabi/vaarg-2.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Test for cross x86_64<->w64 abi va_list calls. -*/ -/* Origin: Kai Tietz */ -/* { dg-do run { target { x86_64-*-* } } } */ -/* { dg-options "-std=gnu99" } */ -#include "callabi.h" - -extern void abort (void); - -#define SZ_ARGS 1ll,2ll,3ll,4ll,5ll,6ll,7ll,0ll - -static -int CALLABI_CROSS fct1 (va_list argp, ...) -{ - long long p1,p2; - int ret = 1; - CROSS_VA_LIST argp_2; - CROSS_VA_START (argp_2,argp); - - do { - p1 = CROSS_VA_ARG (argp_2, long long); - p2 = __va_arg (argp, long long); - if (p1 != p2) - ret = 0; - } while (ret && p1 != 0); - CROSS_VA_END (argp_2); - return ret; -} - -static -int fct2 (int dummy, ...) -{ - va_list argp; - int ret = dummy; - - __va_start (argp, dummy); - ret += fct1 (argp, SZ_ARGS); - __va_end (argp); - return ret; -} - -int main() -{ - if (fct2 (-1, SZ_ARGS) != 0) - abort (); - return 0; -} diff --git a/gcc/testsuite/gcc.dg/callabi/vaarg-3.c b/gcc/testsuite/gcc.dg/callabi/vaarg-3.c deleted file mode 100644 index d0d0687..0000000 --- a/gcc/testsuite/gcc.dg/callabi/vaarg-3.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Test for cross x86_64<->w64 abi va_list calls. -*/ -/* Origin: Kai Tietz */ -/* { dg-do run { target { x86_64-*-* } } } */ -/* { dg-options "-std=gnu99" } */ -#include "callabi.h" - -extern void abort (void); - -#define SZ_ARGS 1ll,2ll,3ll,4ll,5ll,6ll,7ll,0ll - -static -int fct1 (CROSS_VA_LIST argp, ...) -{ - long long p1,p2; - int ret = 1; - va_list argp_2; - - __va_start (argp_2,argp); - do { - p1 = __va_arg (argp_2, long long); - p2 = CROSS_VA_ARG (argp, long long); - if (p1 != p2) - ret = 0; - } while (ret && p1 != 0); - __va_end (argp_2); - return ret; -} - -static -int CALLABI_CROSS fct2 (int dummy, ...) -{ - CROSS_VA_LIST argp; - int ret = dummy; - - CROSS_VA_START (argp, dummy); - ret += fct1 (argp, SZ_ARGS); - CROSS_VA_END (argp); - return ret; -} - -int main() -{ - if (fct2 (-1, SZ_ARGS) != 0) - abort (); - return 0; -}