mirror of git://gcc.gnu.org/git/gcc.git
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>
|
2008-07-30 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
|
||||||
* configure.ac: Substitute ADA_CFLAGS.
|
* 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.
|
/* The final scan for one insn, INSN.
|
||||||
Args are same as in `final', except that INSN
|
Args are same as in `final', except that INSN
|
||||||
is the insn being scanned.
|
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);
|
targetm.asm_out.unwind_emit (asm_out_file, insn);
|
||||||
#endif
|
#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 assembler code from the template. */
|
||||||
output_asm_insn (templ, recog_data.operand);
|
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>
|
2008-07-30 Dodji Seketeli <dseketel@redhat.com>
|
||||||
|
|
||||||
PR c++/36767
|
PR c++/36767
|
||||||
|
|
Loading…
Reference in New Issue