c-decl.c (implicitly_declare): Call maybe_apply_renaming_pragma.
authorMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 22 Sep 2004 02:24:06 +0000 (02:24 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 22 Sep 2004 02:24:06 +0000 (02:24 +0000)
* c-decl.c (implicitly_declare): Call maybe_apply_renaming_pragma.
(finish_decl): Likewise.

From-SVN: r87840

gcc/ChangeLog
gcc/c-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pragma-re-3.c [new file with mode: 0644]

index 65651500df3a8466d1f7dfec54e4db10f805743d..147d8d856b76f70ad3b28ad06d8dee843cb4207d 100644 (file)
@@ -1,3 +1,8 @@
+2004-09-21  Mark Mitchell  <mark@codesourcery.com>
+
+       * c-decl.c (implicityl_declare): Call maybe_apply_renaming_pragma.
+       (finish_decl): Likewise.
+
 2004-09-21  Devang Patel  <dpatel@apple.com>
 
        * tree.def (VEC_COND_EXPR): New tree node.
index 76c1a08d3b423f33d5712968775776a1656337e8..98f1580ed5f6845f99f2631bd0e104fbe4110b91 100644 (file)
@@ -2159,6 +2159,8 @@ implicitly_declare (tree functionid)
 {
   struct c_binding *b;
   tree decl = 0;
+  tree asmspec_tree;
+
   for (b = I_SYMBOL_BINDING (functionid); b; b = b->shadowed)
     {
       if (B_IN_SCOPE (b, external_scope))
@@ -2230,6 +2232,9 @@ implicitly_declare (tree functionid)
   TREE_PUBLIC (decl) = 1;
   C_DECL_IMPLICIT (decl) = 1;
   implicit_decl_warning (functionid, 0);
+  asmspec_tree = maybe_apply_renaming_pragma (decl, /*asmname=*/NULL);
+  if (asmspec_tree)
+    set_user_assembler_name (decl, TREE_STRING_POINTER (asmspec_tree));
 
   /* C89 says implicit declarations are in the innermost block.
      So we record the decl in the standard fashion.  */
@@ -3064,7 +3069,8 @@ finish_decl (tree decl, tree init, tree asmspec_tree)
   const char *asmspec = 0;
 
   /* If a name was specified, get the string.  */
-  if (current_scope == file_scope)
+  if ((TREE_CODE (decl) == FUNCTION_DECL || TREE_CODE (decl) == VAR_DECL)
+      && DECL_FILE_SCOPE_P (decl))
     asmspec_tree = maybe_apply_renaming_pragma (decl, asmspec_tree);
   if (asmspec_tree)
     asmspec = TREE_STRING_POINTER (asmspec_tree);
index 11d8dfc4228cc9c3b85e516bce0e445be3b32e0a..fb20f329643cdc69ff14b5d8c7c2038d949530c5 100644 (file)
@@ -1,4 +1,8 @@
-       2004-09-17  Matt Austern  <austern@apple.com>
+2004-09-21  Mark Mitchell  <mark@codesourcery.com>
+
+       * gcc.dg/pragma-re-3.c: New test.
+
+2004-09-17  Matt Austern  <austern@apple.com>
 
        PR c++/15049
        * g++.dg/other/anon3.C: New.
diff --git a/gcc/testsuite/gcc.dg/pragma-re-3.c b/gcc/testsuite/gcc.dg/pragma-re-3.c
new file mode 100644 (file)
index 0000000..4a73c41
--- /dev/null
@@ -0,0 +1,18 @@
+/* { dg-do link { target *-*-solaris* } } */
+
+#pragma redefine_extname f1 f
+#pragma redefine_extname g1 g
+
+void f() {
+  extern int f1();
+  f1();
+}
+
+void g() {
+  g1();
+}
+
+int main () {
+  f();
+  g();
+}