From e977d24c8e241c530cde7fabd29f8c62f5d988f2 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 4 Nov 2010 00:26:04 +1030 Subject: [PATCH] rs6000.c (rs6000_pic_labelno): Make static. * config/rs6000/rs6000.c (rs6000_pic_labelno): Make static. (rs6000_emit_load_toc_table): Don't use rs6000_pic_labelno when TARGET_SECURE_PLT. * config/rs6000/sysv4.h (rs6000_pic_labelno): Don't declare. * config/rs6000/rs6000.md (load_toc_v4_PIC_3b): Use "b" constraint on input, "r" on output. From-SVN: r166249 --- gcc/ChangeLog | 9 +++++++++ gcc/config/rs6000/rs6000.c | 11 +++++------ gcc/config/rs6000/rs6000.md | 4 ++-- gcc/config/rs6000/sysv4.h | 2 -- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eaf4f5f19b70..e5c1b7832c79 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2010-11-04 Alan Modra + + * config/rs6000/rs6000.c (rs6000_pic_labelno): Make static. + (rs6000_emit_load_toc_table): Don't use rs6000_pic_labelno when + TARGET_SECURE_PLT. + * config/rs6000/sysv4.h (rs6000_pic_labelno): Don't declare. + * config/rs6000/rs6000.md (load_toc_v4_PIC_3b): Use "b" constraint + on input, "r" on output. + 2010-10-30 Uros Bizjak PR middle-end/44569 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index ee6c09f90cd8..63f8ef91c4e5 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -199,7 +199,7 @@ int rs6000_compare_fp_p; /* Label number of label created for -mrelocatable, to call to so we can get the address of the GOT section */ -int rs6000_pic_labelno; +static int rs6000_pic_labelno; #ifdef USING_ELFOS_H /* Which abi to adhere to */ @@ -15330,7 +15330,8 @@ rs6000_emit_load_toc_table (int fromprolog) char buf[30]; rtx lab, tmp1, tmp2, got; - ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno); + lab = gen_label_rtx (); + ASM_GENERATE_INTERNAL_LABEL (buf, "L", CODE_LABEL_NUMBER (lab)); lab = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); if (flag_pic == 2) got = gen_rtx_SYMBOL_REF (Pmode, toc_label_name); @@ -15343,8 +15344,7 @@ rs6000_emit_load_toc_table (int fromprolog) tmp2 = gen_reg_rtx (Pmode); } emit_insn (gen_load_toc_v4_PIC_1 (lab)); - emit_move_insn (tmp1, - gen_rtx_REG (Pmode, LR_REGNO)); + emit_move_insn (tmp1, gen_rtx_REG (Pmode, LR_REGNO)); emit_insn (gen_load_toc_v4_PIC_3b (tmp2, tmp1, got, lab)); emit_insn (gen_load_toc_v4_PIC_3c (dest, tmp2, got, lab)); } @@ -15371,8 +15371,7 @@ rs6000_emit_load_toc_table (int fromprolog) symL = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); emit_insn (gen_load_toc_v4_PIC_1 (symF)); - emit_move_insn (dest, - gen_rtx_REG (Pmode, LR_REGNO)); + emit_move_insn (dest, gen_rtx_REG (Pmode, LR_REGNO)); emit_insn (gen_load_toc_v4_PIC_2 (temp0, dest, symL, symF)); } else diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 30aac3ec0946..3a5226853a11 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -10737,8 +10737,8 @@ [(set_attr "type" "load")]) (define_insn "load_toc_v4_PIC_3b" - [(set (match_operand:SI 0 "gpc_reg_operand" "=b") - (plus:SI (match_operand:SI 1 "gpc_reg_operand" "r") + [(set (match_operand:SI 0 "gpc_reg_operand" "=r") + (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") (high:SI (minus:SI (match_operand:SI 2 "symbol_ref_operand" "s") (match_operand:SI 3 "symbol_ref_operand" "s")))))] diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index a878a53ffa9a..58b5bcd0818b 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -416,8 +416,6 @@ do { \ Some svr4 assemblers need to also have something extra said about the function's return value. We allow for that here. */ -extern int rs6000_pic_labelno; - /* Override elfos.h definition. */ #undef ASM_DECLARE_FUNCTION_NAME #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \ -- 2.47.2