OSDN Git Service

PR c++/14962
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 May 2004 06:58:00 +0000 (06:58 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 May 2004 06:58:00 +0000 (06:58 +0000)
* c-pragma.c (handle_pragma_redefine_extname): Only change
the assembler name of FUNCTION_DECLs and VAR_DECLs.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81610 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-pragma.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/pragma-re-2.C [new file with mode: 0644]

index dacb3ca..edad48c 100644 (file)
@@ -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.
index c9e1505..10c8cae 100644 (file)
@@ -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)
index 2f56939..cb5a6b8 100644 (file)
@@ -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 (file)
index 0000000..44d1b50
--- /dev/null
@@ -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();
+}