c-decl.c (implicitly_declare): Call maybe_apply_renaming_pragma.

* c-decl.c (implicitly_declare): Call maybe_apply_renaming_pragma.
	(finish_decl): Likewise.

From-SVN: r87840
This commit is contained in:
Mark Mitchell 2004-09-22 02:24:06 +00:00
parent ad9f20cbce
commit 1ae57298f9
4 changed files with 35 additions and 2 deletions

View 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> 2004-09-21 Devang Patel <dpatel@apple.com>
* tree.def (VEC_COND_EXPR): New tree node. * tree.def (VEC_COND_EXPR): New tree node.

View File

@ -2159,6 +2159,8 @@ implicitly_declare (tree functionid)
{ {
struct c_binding *b; struct c_binding *b;
tree decl = 0; tree decl = 0;
tree asmspec_tree;
for (b = I_SYMBOL_BINDING (functionid); b; b = b->shadowed) for (b = I_SYMBOL_BINDING (functionid); b; b = b->shadowed)
{ {
if (B_IN_SCOPE (b, external_scope)) if (B_IN_SCOPE (b, external_scope))
@ -2230,6 +2232,9 @@ implicitly_declare (tree functionid)
TREE_PUBLIC (decl) = 1; TREE_PUBLIC (decl) = 1;
C_DECL_IMPLICIT (decl) = 1; C_DECL_IMPLICIT (decl) = 1;
implicit_decl_warning (functionid, 0); 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. /* C89 says implicit declarations are in the innermost block.
So we record the decl in the standard fashion. */ 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; const char *asmspec = 0;
/* If a name was specified, get the string. */ /* 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); asmspec_tree = maybe_apply_renaming_pragma (decl, asmspec_tree);
if (asmspec_tree) if (asmspec_tree)
asmspec = TREE_STRING_POINTER (asmspec_tree); asmspec = TREE_STRING_POINTER (asmspec_tree);

View 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 PR c++/15049
* g++.dg/other/anon3.C: New. * g++.dg/other/anon3.C: New.

View File

@ -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();
}