final.c (call_from_call_insn): New.
2008-07-30 Rafael Avila de Espindola <espindola@google.com> * final.c (call_from_call_insn): New. (final_scan_insn): Call assemble_external on FUNCTION_DECLs. 2008-07-30 Rafael Avila de Espindola <espindola@google.com> * gcc.dg/visibility-14.c: New test. * gcc.dg/visibility-15.c: New test. * gcc.dg/visibility-16.c: New test. * gcc.dg/visibility-17.c: New test. * gcc.dg/visibility-18.c: New test. * gcc.dg/visibility-19.c: New test. From-SVN: r138310
This commit is contained in:
parent
e44c800e35
commit
f410e1b3d2
@ -1,3 +1,8 @@
|
||||
2008-07-30 Rafael Avila de Espindola <espindola@google.com>
|
||||
|
||||
* final.c (call_from_call_insn): New.
|
||||
(final_scan_insn): Call assemble_external on FUNCTION_DECLs.
|
||||
|
||||
2008-07-30 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
* configure.ac: Substitute ADA_CFLAGS.
|
||||
|
39
gcc/final.c
39
gcc/final.c
@ -1744,6 +1744,31 @@ output_alternate_entry_point (FILE *file, rtx insn)
|
||||
}
|
||||
}
|
||||
|
||||
/* Given a CALL_INSN, find and return the nested CALL. */
|
||||
static rtx
|
||||
call_from_call_insn (rtx insn)
|
||||
{
|
||||
rtx x;
|
||||
gcc_assert (CALL_P (insn));
|
||||
x = PATTERN (insn);
|
||||
|
||||
while (GET_CODE (x) != CALL)
|
||||
{
|
||||
switch (GET_CODE (x))
|
||||
{
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
case PARALLEL:
|
||||
x = XVECEXP (x, 0, 0);
|
||||
break;
|
||||
case SET:
|
||||
x = XEXP (x, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return x;
|
||||
}
|
||||
|
||||
/* The final scan for one insn, INSN.
|
||||
Args are same as in `final', except that INSN
|
||||
is the insn being scanned.
|
||||
@ -2609,6 +2634,20 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
|
||||
targetm.asm_out.unwind_emit (asm_out_file, insn);
|
||||
#endif
|
||||
|
||||
if (CALL_P (insn))
|
||||
{
|
||||
rtx x = call_from_call_insn (insn);
|
||||
x = XEXP (x, 0);
|
||||
if (x && MEM_P (x) && GET_CODE (XEXP (x, 0)) == SYMBOL_REF)
|
||||
{
|
||||
tree t;
|
||||
x = XEXP (x, 0);
|
||||
t = SYMBOL_REF_DECL (x);
|
||||
if (t)
|
||||
assemble_external (t);
|
||||
}
|
||||
}
|
||||
|
||||
/* Output assembler code from the template. */
|
||||
output_asm_insn (templ, recog_data.operand);
|
||||
|
||||
|
@ -1,3 +1,12 @@
|
||||
2008-07-30 Rafael Avila de Espindola <espindola@google.com>
|
||||
|
||||
* gcc.dg/visibility-14.c: New test.
|
||||
* gcc.dg/visibility-15.c: New test.
|
||||
* gcc.dg/visibility-16.c: New test.
|
||||
* gcc.dg/visibility-17.c: New test.
|
||||
* gcc.dg/visibility-18.c: New test.
|
||||
* gcc.dg/visibility-19.c: New test.
|
||||
|
||||
2008-07-30 Dodji Seketeli <dseketel@redhat.com>
|
||||
|
||||
PR c++/36767
|
||||
|
Loading…
Reference in New Issue
Block a user