diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2004-05-07 08:58:00 +0200 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2004-05-07 06:58:00 +0000 |
commit | 92ff0c419aee64c757481517b44043dbe7c6b501 (patch) | |
tree | 5084add9e918868df1cafed96d30bb982b4412ea /gcc | |
parent | 3c4392aa5fcea6f75971cadcd615269a24dc6d69 (diff) | |
download | gcc-92ff0c419aee64c757481517b44043dbe7c6b501.zip gcc-92ff0c419aee64c757481517b44043dbe7c6b501.tar.gz gcc-92ff0c419aee64c757481517b44043dbe7c6b501.tar.bz2 |
re PR c++/14962 (g++ ignores #pragma redefine_extname)
PR c++/14962
* c-pragma.c (handle_pragma_redefine_extname): Only change
the assembler name of FUNCTION_DECLs and VAR_DECLs.
From-SVN: r81610
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-pragma.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/pragma-re-2.C | 25 |
4 files changed, 37 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dacb3ca..edad48c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-05-07 Eric Botcazou <ebotcazou@libertysurf.fr> + + PR c++/14962 + * c-pragma.c (handle_pragma_redefine_extname): Only change + the assembler name of FUNCTION_DECLs and VAR_DECLs. + 2004-05-07 Uros Bizjak <uros@kss-loka.si> * optabs.h (enum optab_index): Add new OTI_log1p. diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c index c9e1505..10c8cae 100644 --- a/gcc/c-pragma.c +++ b/gcc/c-pragma.c @@ -377,7 +377,8 @@ handle_pragma_redefine_extname (cpp_reader *dummy ATTRIBUTE_UNUSED) warning ("junk at end of #pragma redefine_extname"); decl = identifier_global_value (oldname); - if (decl && TREE_CODE_CLASS (TREE_CODE (decl)) == 'd') + if (decl && (TREE_CODE (decl) == FUNCTION_DECL + || TREE_CODE (decl) == VAR_DECL)) { if (DECL_ASSEMBLER_NAME_SET_P (decl) && DECL_ASSEMBLER_NAME (decl) != newname) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2f56939..cb5a6b8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-05-07 Eric Botcazou <ebotcazou@libertysurf.fr> + + * g++.dg/other/pragma-re-2.C: New test. + 2004-05-07 Uros Bizjak <uros@kss-loka.si> * gcc.dg/i386-387-1.c: Add new test for __builtin_fmod. diff --git a/gcc/testsuite/g++.dg/other/pragma-re-2.C b/gcc/testsuite/g++.dg/other/pragma-re-2.C new file mode 100644 index 0000000..44d1b50 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/pragma-re-2.C @@ -0,0 +1,25 @@ +/* PR c++/14962 */ +/* Originator: <phil@fsel.com> */ + +/* { dg-do compile { target *-*-solaris* } } */ +/* { dg-final { scan-assembler "new_name" } } */ +/* { dg-final { scan-assembler-not "old_name" } } */ + +#ifndef __PRAGMA_REDEFINE_EXTNAME +#error +#endif + +extern "C" { + +struct old_name { int i; }; + +#pragma redefine_extname old_name new_name + +int old_name(void); + +} + +int foo(void) +{ + return old_name(); +} |