From ccbca5e4aae1b8a064e50edf99e98732e8ef6deb Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 31 Mar 2005 21:03:05 +0930 Subject: 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 --- gcc/ChangeLog | 10 ++++++++-- gcc/config/rs6000/rs6000.c | 19 ++++--------------- gcc/testsuite/ChangeLog | 4 ++++ 3 files changed, 16 insertions(+), 17 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ff39a5d..152d8e6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ -2005-03-31 Mostafa Hagog +2005-03-31 Alan Modra - * 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 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index ffb2167..9533073 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -2809,21 +2809,16 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) rs6000_emit_move (got, gsym, Pmode); else { - char buf[30]; - static int tls_got_labelno = 0; - rtx tempLR, lab, tmp3, mem; + rtx tempLR, tmp3, mem; 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); tmp1 = gen_reg_rtx (Pmode); tmp2 = gen_reg_rtx (Pmode); tmp3 = gen_reg_rtx (Pmode); mem = gen_const_mem (Pmode, tmp1); - first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, lab, - gsym)); + first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, gsym)); emit_move_insn (tmp1, tempLR); emit_move_insn (tmp2, mem); emit_insn (gen_addsi3 (tmp3, tmp1, tmp2)); @@ -12024,11 +12019,10 @@ rs6000_emit_load_toc_table (int fromprolog) rtx temp0 = (fromprolog ? gen_rtx_REG (Pmode, 0) : gen_reg_rtx (Pmode)); - rtx symF; if (fromprolog) { - rtx symL; + rtx symF, symL; ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno); symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); @@ -12046,14 +12040,9 @@ rs6000_emit_load_toc_table (int fromprolog) else { rtx tocsym; - static int reload_toc_labelno = 0; tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name); - - 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_insn (gen_load_toc_v4_PIC_1b (tempLR, tocsym)); emit_move_insn (dest, tempLR); emit_move_insn (temp0, gen_rtx_MEM (Pmode, dest)); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a02d78e..4d30efb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-03-31 Mostafa Hagog + + * gcc.dg/20050330-1.c: New test. + 2005-03-30 Devang Patel * g++.dg/tree-sra/ssa-sra-3.C: New test. -- cgit v1.1