diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-12-23 16:53:53 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-12-23 16:53:53 +0000 |
commit | 57702a80e805859260710953242bf87c08f5c410 (patch) | |
tree | 730fb1dd5cb47c7638fd2ccd44d2e5ecb188026c /gcc | |
parent | 32a2571b0cafa323c8133b1fb5a11c036a58a9e5 (diff) | |
download | gcc-57702a80e805859260710953242bf87c08f5c410.zip gcc-57702a80e805859260710953242bf87c08f5c410.tar.gz gcc-57702a80e805859260710953242bf87c08f5c410.tar.bz2 |
c-common.c (flag_abi_version): Default to 2.
* c-common.c (flag_abi_version): Default to 2.
* c-cppbuiltin.c (c_cpp_builtins): Define __GXX_ABI_VERSION
uniformly for versions above 2.
* doc/invoke.texi: Update documentation for -fabi-version.
* cp-lang.c (cp_expr_size): Return zero for empty classes.
* cp-tree.h (warn_if_uknown_interface): Remove unused function.
* decl2.c (warn_if_unknown_interface): Likewise.
* g++.dg/abi/macro0.C: New test.
* g++.dg/abi/macro1.C: Likewise.
* g++.dg/abi/macro2.C: Likewise.
* g++.dg/abi/bitfield5.C: Add explicit -fabi-version=1 option.
* g++.dg/abi/bitfield7.C: Likewise.
* g++.dg/abi/dtor2.C: Likewise.
* g++.dg/abi/mangle11.C: Likewise.
* g++.dg/abi/mangle12.C: Likewise.
* g++.dg/abi/mangle14.C: Likewise.
* g++.dg/abi/mangle17.C: Likewise.
* g++.dg/abi/vbase10.C: Likewise.
* g++.dg/abi/vbase14.C: Likewise.
* g++.dg/template/qualttp17.C: Likewise.
From-SVN: r74973
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/c-common.c | 4 | ||||
-rw-r--r-- | gcc/c-cppbuiltin.c | 18 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/cp-lang.c | 4 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 1 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 15 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 11 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 17 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/bitfield5.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/bitfield7.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/dtor2.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/macro0.C | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/macro1.C | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/macro2.C | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/mangle11.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/mangle12.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/mangle14.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/mangle17.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/vbase10.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/vbase14.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/qualttp17.C | 2 |
22 files changed, 85 insertions, 34 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 768fce9..86135fb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-12-23 Mark Mitchell <mark@codesourcery.com> + + * c-common.c (flag_abi_version): Default to 2. + * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_ABI_VERSION + uniformly for versions above 2. + * doc/invoke.texi: Update documentation for -fabi-version. + 2003-12-22 Geoffrey Keating <geoffk@apple.com> * config/rs6000/rs6000.md: Change many instances of '! diff --git a/gcc/c-common.c b/gcc/c-common.c index ce90433..9cdd144 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -609,10 +609,12 @@ int flag_enforce_eh_specs = 1; 1: The version of the ABI first used in G++ 3.2. + 2: The version of the ABI first used in G++ 3.4. + Additional positive integers will be assigned as new versions of the ABI become the default version of the ABI. */ -int flag_abi_version = 1; +int flag_abi_version = 2; /* Nonzero means warn about things that will change when compiling with an ABI-compliant compiler. */ diff --git a/gcc/c-cppbuiltin.c b/gcc/c-cppbuiltin.c index 19a9cf4..739a342 100644 --- a/gcc/c-cppbuiltin.c +++ b/gcc/c-cppbuiltin.c @@ -310,7 +310,23 @@ c_cpp_builtins (cpp_reader *pfile) /* represents the C++ ABI version, always defined so it can be used while preprocessing C and assembler. */ - cpp_define (pfile, "__GXX_ABI_VERSION=102"); + if (flag_abi_version == 0) + /* Use a very large value so that: + + #if __GXX_ABI_VERSION >= <value for version X> + + will work whether the user explicitly says "-fabi-version=x" or + "-fabi-version=0". Do not use INT_MAX because that will be + different from system to system. */ + builtin_define_with_int_value ("__GXX_ABI_VERSION", 999999); + else if (flag_abi_version == 1) + /* Due to an historical accident, this version had the value + "102". */ + builtin_define_with_int_value ("__GXX_ABI_VERSION", 102); + else + /* Newer versions have values 1002, 1003, ... */ + builtin_define_with_int_value ("__GXX_ABI_VERSION", + 1000 + flag_abi_version); /* libgcc needs to know this. */ if (USING_SJLJ_EXCEPTIONS) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 69cbbed..9d13f3d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2003-12-23 Mark Mitchell <mark@codesourcery.com> + + * cp-lang.c (cp_expr_size): Return zero for empty classes. + + * cp-tree.h (warn_if_uknown_interface): Remove unused function. + * decl2.c (warn_if_unknown_interface): Likewise. + 2003-12-23 Nathan Sidwell <nathan@codesourcery.com> PR c++/13387 diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index 94cf462..f1f5eed 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -347,7 +347,9 @@ cp_expr_size (tree exp) abort (); /* This would be wrong for a type with virtual bases, but they are caught by the abort above. */ - return CLASSTYPE_SIZE_UNIT (TREE_TYPE (exp)); + return (is_empty_class (TREE_TYPE (exp)) + ? size_zero_node + : CLASSTYPE_SIZE_UNIT (TREE_TYPE (exp))); } else /* Use the default code. */ diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index ba97705..91e38f4 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -3710,7 +3710,6 @@ extern GTY(()) tree last_function_parms; /* in decl2.c */ extern bool check_java_method (tree); extern int grok_method_quals (tree, tree, tree); -extern void warn_if_unknown_interface (tree); extern void grok_x_components (tree); extern void maybe_retrofit_in_chrg (tree); extern void maybe_make_one_only (tree); diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 92b661d..4068826 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -156,21 +156,6 @@ grok_method_quals (tree ctype, tree function, tree quals) return this_quals; } -/* Warn when -fexternal-templates is used and #pragma - interface/implementation is not used all the times it should be, - inform the user. */ - -void -warn_if_unknown_interface (tree decl) -{ - static int already_warned = 0; - if (already_warned++) - return; - - cp_warning_at ("template `%#D' defined in file without #pragma interface", - decl); -} - /* A subroutine of the parser, to handle a component list. */ void diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 012ec04..db5c0b0 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -1274,11 +1274,12 @@ Here is a list of options that are @emph{only} for compiling C++ programs: @item -fabi-version=@var{n} @opindex fabi-version -Use version @var{n} of the C++ ABI. Version 1 is the version of the C++ -ABI that first appeared in G++ 3.2. Version 0 will always be the -version that conforms most closely to the C++ ABI specification. -Therefore, the ABI obtained using version 0 will change as ABI bugs are -fixed. +Use version @var{n} of the C++ ABI. Version 2 is the version of the +C++ ABI that first appeared in G++ 3.4. Version 1 is the version of +the C++ ABI that first appeared in G++ 3.2. Version 0 will always be +the version that conforms most closely to the C++ ABI specification. +Therefore, the ABI obtained using version 0 will change as ABI bugs +are fixed. The default is version 1. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 985f926..7c5ee7f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,20 @@ +2003-12-23 Mark Mitchell <mark@codesourcery.com> + + * g++.dg/abi/macro0.C: New test. + * g++.dg/abi/macro1.C: Likewise. + * g++.dg/abi/macro2.C: Likewise. + + * g++.dg/abi/bitfield5.C: Add explicit -fabi-version=1 option. + * g++.dg/abi/bitfield7.C: Likewise. + * g++.dg/abi/dtor2.C: Likewise. + * g++.dg/abi/mangle11.C: Likewise. + * g++.dg/abi/mangle12.C: Likewise. + * g++.dg/abi/mangle14.C: Likewise. + * g++.dg/abi/mangle17.C: Likewise. + * g++.dg/abi/vbase10.C: Likewise. + * g++.dg/abi/vbase14.C: Likewise. + * g++.dg/template/qualttp17.C: Likewise. + 2003-12-21 Andrew Pinski <pinskia@physics.uc.edu> PR c/11995 diff --git a/gcc/testsuite/g++.dg/abi/bitfield5.C b/gcc/testsuite/g++.dg/abi/bitfield5.C index eed76e6..e754f0d 100644 --- a/gcc/testsuite/g++.dg/abi/bitfield5.C +++ b/gcc/testsuite/g++.dg/abi/bitfield5.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-Wabi" } +// { dg-options "-Wabi -fabi-version=1" } struct A { virtual void f(); diff --git a/gcc/testsuite/g++.dg/abi/bitfield7.C b/gcc/testsuite/g++.dg/abi/bitfield7.C index 9868cfc..b5b656f 100644 --- a/gcc/testsuite/g++.dg/abi/bitfield7.C +++ b/gcc/testsuite/g++.dg/abi/bitfield7.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-Wabi" } +// { dg-options "-Wabi -fabi-version=1" } union U { // { dg-warning "ABI" } int i: 4096; // { dg-warning "exceeds" } diff --git a/gcc/testsuite/g++.dg/abi/dtor2.C b/gcc/testsuite/g++.dg/abi/dtor2.C index f4a1336..6b89cc8 100644 --- a/gcc/testsuite/g++.dg/abi/dtor2.C +++ b/gcc/testsuite/g++.dg/abi/dtor2.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-Wabi" } +// { dg-options "-Wabi -fabi-version=1" } struct A { virtual void a (); diff --git a/gcc/testsuite/g++.dg/abi/macro0.C b/gcc/testsuite/g++.dg/abi/macro0.C new file mode 100644 index 0000000..6c391e6 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/macro0.C @@ -0,0 +1,5 @@ +// { dg-options "-fabi-version=0" } + +#if __GXX_ABI_VERSION != 999999 +#error "Incorrect value of __GXX_ABI_VERSION" +#endif diff --git a/gcc/testsuite/g++.dg/abi/macro1.C b/gcc/testsuite/g++.dg/abi/macro1.C new file mode 100644 index 0000000..871208d --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/macro1.C @@ -0,0 +1,5 @@ +// { dg-options "-fabi-version=1" } + +#if __GXX_ABI_VERSION != 102 +#error "Incorrect value of __GXX_ABI_VERSION" +#endif diff --git a/gcc/testsuite/g++.dg/abi/macro2.C b/gcc/testsuite/g++.dg/abi/macro2.C new file mode 100644 index 0000000..9f0af9c --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/macro2.C @@ -0,0 +1,5 @@ +// { dg-options "-fabi-version=2" } + +#if __GXX_ABI_VERSION != 1002 +#error "Incorrect value of __GXX_ABI_VERSION" +#endif diff --git a/gcc/testsuite/g++.dg/abi/mangle11.C b/gcc/testsuite/g++.dg/abi/mangle11.C index f715117..a049a95 100644 --- a/gcc/testsuite/g++.dg/abi/mangle11.C +++ b/gcc/testsuite/g++.dg/abi/mangle11.C @@ -1,4 +1,4 @@ -// { dg-options "-Wabi" } +// { dg-options "-Wabi -fabi-version=1" } template <typename Q> void f (typename Q::X) {} diff --git a/gcc/testsuite/g++.dg/abi/mangle12.C b/gcc/testsuite/g++.dg/abi/mangle12.C index 772b58b..406a13b 100644 --- a/gcc/testsuite/g++.dg/abi/mangle12.C +++ b/gcc/testsuite/g++.dg/abi/mangle12.C @@ -1,4 +1,4 @@ -// { dg-options "-Wabi" } +// { dg-options "-Wabi -fabi-version=1" } template <template <typename> class Q> void f (typename Q<int>::X) {} diff --git a/gcc/testsuite/g++.dg/abi/mangle14.C b/gcc/testsuite/g++.dg/abi/mangle14.C index 8e2bfdd..1205ac4 100644 --- a/gcc/testsuite/g++.dg/abi/mangle14.C +++ b/gcc/testsuite/g++.dg/abi/mangle14.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-Wabi" } +// { dg-options "-Wabi -fabi-version=1" } struct A { template <typename T> int f (); diff --git a/gcc/testsuite/g++.dg/abi/mangle17.C b/gcc/testsuite/g++.dg/abi/mangle17.C index 6f8e387..994da88 100644 --- a/gcc/testsuite/g++.dg/abi/mangle17.C +++ b/gcc/testsuite/g++.dg/abi/mangle17.C @@ -1,4 +1,4 @@ -// { dg-options "-Wabi" } +// { dg-options "-Wabi -fabi-version=1" } enum E { e = 3 }; diff --git a/gcc/testsuite/g++.dg/abi/vbase10.C b/gcc/testsuite/g++.dg/abi/vbase10.C index 3c110be..7683250 100644 --- a/gcc/testsuite/g++.dg/abi/vbase10.C +++ b/gcc/testsuite/g++.dg/abi/vbase10.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-Wabi" } +// { dg-options "-Wabi -fabi-version=1" } struct A { virtual void f(); char c1; }; struct B { B(); char c2; }; diff --git a/gcc/testsuite/g++.dg/abi/vbase14.C b/gcc/testsuite/g++.dg/abi/vbase14.C index 99290b8..320d5ba 100644 --- a/gcc/testsuite/g++.dg/abi/vbase14.C +++ b/gcc/testsuite/g++.dg/abi/vbase14.C @@ -1,4 +1,4 @@ -// { dg-options "-Wabi" } +// { dg-options "-Wabi -fabi-version=1" } struct E1 {}; struct E2 : public E1 {}; // { dg-warning "layout" } diff --git a/gcc/testsuite/g++.dg/template/qualttp17.C b/gcc/testsuite/g++.dg/template/qualttp17.C index 4766c53..4d79c9a 100644 --- a/gcc/testsuite/g++.dg/template/qualttp17.C +++ b/gcc/testsuite/g++.dg/template/qualttp17.C @@ -1,7 +1,7 @@ // Copyright (C) 2001 Free Software Foundation // Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> // { dg-do compile } -// { dg-options "-fno-inline" } +// { dg-options "-fno-inline -fabi-version=1" } struct A { |