OSDN Git Service

* config/rs6000/rs6000.c (rs6000_pic_labelno): Make static.
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 Nov 2010 13:52:32 +0000 (13:52 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 Nov 2010 13:52:32 +0000 (13:52 +0000)
(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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166247 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/sysv4.h

index 2408777..49e208e 100644 (file)
@@ -1,3 +1,12 @@
+2010-11-04  Alan Modra  <amodra@gmail.com>
+
+       * 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-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        Implemented -fobjc-std=objc1 flag.
index 78f0a14..d7d94ef 100644 (file)
@@ -193,7 +193,7 @@ static GTY(()) int common_mode_defined;
 
 /* 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 */
@@ -18898,7 +18898,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);
@@ -18911,8 +18912,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));
     }
@@ -18939,8 +18939,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
index f1e63cc..1dbf52c 100644 (file)
   [(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")))))]
index 04cc70e..de2ebd5 100644 (file)
@@ -402,8 +402,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)                    \