aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2004-05-07 08:58:00 +0200
committerEric Botcazou <ebotcazou@gcc.gnu.org>2004-05-07 06:58:00 +0000
commit92ff0c419aee64c757481517b44043dbe7c6b501 (patch)
tree5084add9e918868df1cafed96d30bb982b4412ea /gcc
parent3c4392aa5fcea6f75971cadcd615269a24dc6d69 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/c-pragma.c3
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/other/pragma-re-2.C25
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();
+}