diff options
author | Alan Modra <amodra@gcc.gnu.org> | 2005-03-31 21:03:05 +0930 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2005-03-31 21:03:05 +0930 |
commit | ccbca5e4aae1b8a064e50edf99e98732e8ef6deb (patch) | |
tree | 3d68dc5c7748e492dbd50c7ad3edfa6ce19fb772 /gcc | |
parent | 2767f2589737cec8dfc56e416ccabab6239a73b4 (diff) | |
download | gcc-ccbca5e4aae1b8a064e50edf99e98732e8ef6deb.zip gcc-ccbca5e4aae1b8a064e50edf99e98732e8ef6deb.tar.gz gcc-ccbca5e4aae1b8a064e50edf99e98732e8ef6deb.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 19 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 |
3 files changed, 16 insertions, 17 deletions
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 <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> 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 <mustafa@il.ibm.com> + + * gcc.dg/20050330-1.c: New test. + 2005-03-30 Devang Patel <dpatel@apple.com> * g++.dg/tree-sra/ssa-sra-3.C: New test. |