aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlan Modra <amodra@gcc.gnu.org>2005-03-31 21:03:05 +0930
committerAlan Modra <amodra@gcc.gnu.org>2005-03-31 21:03:05 +0930
commitccbca5e4aae1b8a064e50edf99e98732e8ef6deb (patch)
tree3d68dc5c7748e492dbd50c7ad3edfa6ce19fb772 /gcc
parent2767f2589737cec8dfc56e416ccabab6239a73b4 (diff)
downloadgcc-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/ChangeLog10
-rw-r--r--gcc/config/rs6000/rs6000.c19
-rw-r--r--gcc/testsuite/ChangeLog4
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.