Commit ccbca5e4 by Alan Modra

re PR target/20611 (duplicate label for inlined function referencing TLS)

	PR target/20611
	* config/rs6000/rs6000.md (load_toc_v4_PIC_1b): Remove inline
	label operand.  Remove (use (unspec..)).  Don't emit a label on
	the offset word.
	* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Don't
	generate inline label for load_toc_v4_PIC_1b.
	(rs6000_emit_load_toc_table): Likewise.

From-SVN: r97313
parent 2767f258
2005-03-31 Mostafa Hagog <mustafa@il.ibm.com> 2005-03-31 Alan Modra <amodra@bigpond.net.au>
* testsuite/gcc.dg/20050330-1.c: New test. PR target/20611
* config/rs6000/rs6000.md (load_toc_v4_PIC_1b): Remove inline
label operand. Remove (use (unspec..)). Don't emit a label on
the offset word.
* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Don't
generate inline label for load_toc_v4_PIC_1b.
(rs6000_emit_load_toc_table): Likewise.
2005-03-31 Kazu Hirata <kazu@cs.umass.edu> 2005-03-31 Kazu Hirata <kazu@cs.umass.edu>
......
...@@ -2809,21 +2809,16 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) ...@@ -2809,21 +2809,16 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model)
rs6000_emit_move (got, gsym, Pmode); rs6000_emit_move (got, gsym, Pmode);
else else
{ {
char buf[30]; rtx tempLR, tmp3, mem;
static int tls_got_labelno = 0;
rtx tempLR, lab, tmp3, mem;
rtx first, last; rtx first, last;
ASM_GENERATE_INTERNAL_LABEL (buf, "LTLS", tls_got_labelno++);
lab = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
tempLR = gen_reg_rtx (Pmode); tempLR = gen_reg_rtx (Pmode);
tmp1 = gen_reg_rtx (Pmode); tmp1 = gen_reg_rtx (Pmode);
tmp2 = gen_reg_rtx (Pmode); tmp2 = gen_reg_rtx (Pmode);
tmp3 = gen_reg_rtx (Pmode); tmp3 = gen_reg_rtx (Pmode);
mem = gen_const_mem (Pmode, tmp1); mem = gen_const_mem (Pmode, tmp1);
first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, lab, first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, gsym));
gsym));
emit_move_insn (tmp1, tempLR); emit_move_insn (tmp1, tempLR);
emit_move_insn (tmp2, mem); emit_move_insn (tmp2, mem);
emit_insn (gen_addsi3 (tmp3, tmp1, tmp2)); emit_insn (gen_addsi3 (tmp3, tmp1, tmp2));
...@@ -12024,11 +12019,10 @@ rs6000_emit_load_toc_table (int fromprolog) ...@@ -12024,11 +12019,10 @@ rs6000_emit_load_toc_table (int fromprolog)
rtx temp0 = (fromprolog rtx temp0 = (fromprolog
? gen_rtx_REG (Pmode, 0) ? gen_rtx_REG (Pmode, 0)
: gen_reg_rtx (Pmode)); : gen_reg_rtx (Pmode));
rtx symF;
if (fromprolog) if (fromprolog)
{ {
rtx symL; rtx symF, symL;
ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno); ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno);
symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
...@@ -12046,14 +12040,9 @@ rs6000_emit_load_toc_table (int fromprolog) ...@@ -12046,14 +12040,9 @@ rs6000_emit_load_toc_table (int fromprolog)
else else
{ {
rtx tocsym; rtx tocsym;
static int reload_toc_labelno = 0;
tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name); tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name);
emit_insn (gen_load_toc_v4_PIC_1b (tempLR, tocsym));
ASM_GENERATE_INTERNAL_LABEL (buf, "LCG", reload_toc_labelno++);
symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
emit_insn (gen_load_toc_v4_PIC_1b (tempLR, symF, tocsym));
emit_move_insn (dest, tempLR); emit_move_insn (dest, tempLR);
emit_move_insn (temp0, gen_rtx_MEM (Pmode, dest)); emit_move_insn (temp0, gen_rtx_MEM (Pmode, dest));
} }
......
2005-03-31 Mostafa Hagog <mustafa@il.ibm.com>
* gcc.dg/20050330-1.c: New test.
2005-03-30 Devang Patel <dpatel@apple.com> 2005-03-30 Devang Patel <dpatel@apple.com>
* g++.dg/tree-sra/ssa-sra-3.C: New test. * g++.dg/tree-sra/ssa-sra-3.C: New test.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment