[multiple changes]
authorDavid Edelsohn <dje@gcc.gnu.org>
Wed, 27 Feb 2002 05:42:20 +0000 (00:42 -0500)
committerDavid Edelsohn <dje@gcc.gnu.org>
Wed, 27 Feb 2002 05:42:20 +0000 (00:42 -0500)
2002-02-26  David Edelsohn  <edelsohn@gnu.org>

        * config/rs6000/aix43.h (THREAD_MODEL_SPEC): Delete.
        * config/rs6000/aix51.h (THREAD_MODEL_SPEC): Delete.
        * config/rs6000/rs6000.c (rs6000_return_addr): Use efficient
        method on AIX.
        * config/rs6000/rs6000.md (movsi_low): Use gpc_reg_operand.
        (movsi_low_st, movdf_low, movdf_low_st, movsf_low, movsf_low_st): Same.
        (load_toc_v4_PIC_2): Same.

2002-02-26  Alan Modra  <amodra@bigpond.net.au>

        * config/rs6000/rs6000.md (load_toc_aix_di): Handle TARGET_RELOCATABLE.

From-SVN: r50090

gcc/ChangeLog
gcc/config/rs6000/aix43.h
gcc/config/rs6000/aix51.h
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md

index 84085d3acebb7191c435bce01f7c90e6561a31cb..8765f325205ca08a7893d95ed6d2c8d1cb7f6dbb 100644 (file)
@@ -1,3 +1,17 @@
+2002-02-26  David Edelsohn  <edelsohn@gnu.org>
+
+       * config/rs6000/aix43.h (THREAD_MODEL_SPEC): Delete.
+       * config/rs6000/aix51.h (THREAD_MODEL_SPEC): Delete.
+       * config/rs6000/rs6000.c (rs6000_return_addr): Use efficient
+       method on AIX.
+       * config/rs6000/rs6000.md (movsi_low): Use gpc_reg_operand.
+       (movsi_low_st, movdf_low, movdf_low_st, movsf_low, movsf_low_st): Same.
+       (load_toc_v4_PIC_2): Same.
+
+2002-02-26  Alan Modra  <amodra@bigpond.net.au>
+
+       * config/rs6000/rs6000.md (load_toc_aix_di): Handle TARGET_RELOCATABLE.
+
 2002-02-26  Richard Henderson  <rth@redhat.com>
 
        * config/alpha/alpha.md (ashldi_se): Re-enable.
index 93e186ca2a0f57e863e30cd5a1f4782dcafa3fb7..7aa8707cdab55024fe47f177b0766e2818e5e3cd 100644 (file)
@@ -199,10 +199,6 @@ do {                                                                       \
        %{pthread:%{pg:gcrt0_r%O%s}%{!pg:%{p:mcrt0_r%O%s}%{!p:crt0_r%O%s}}}\
        %{!pthread:%{pg:gcrt0%O%s}%{!pg:%{p:mcrt0%O%s}%{!p:crt0%O%s}}}}}}"
 
-/* Since there are separate multilibs for pthreads, determine the
-   thread model based on the command-line arguments.  */
-#define THREAD_MODEL_SPEC "%{pthread:posix}%{!pthread:single}"
-
 /* AIX 4.3 typedefs ptrdiff_t as "long" while earlier releases used "int".  */
 
 #undef PTRDIFF_TYPE
index ae01440f5d345542eab0bec1739c6d15a1267e81..8dc0b86ba4ff2315a7271d9554afad85e677f9f9 100644 (file)
@@ -202,10 +202,6 @@ do {                                                                       \
        %{pthread:%{pg:gcrt0_r%O%s}%{!pg:%{p:mcrt0_r%O%s}%{!p:crt0_r%O%s}}}\
        %{!pthread:%{pg:gcrt0%O%s}%{!pg:%{p:mcrt0%O%s}%{!p:crt0%O%s}}}}}}"
 
-/* Since there are separate multilibs for pthreads, determine the
-   thread model based on the command-line arguments.  */
-#define THREAD_MODEL_SPEC "%{pthread:posix}%{!pthread:single}"
-
 /* AIX V5 typedefs ptrdiff_t as "long" while earlier releases used "int".  */
 
 #undef PTRDIFF_TYPE
index c1d891118258b658f2808cd5f43f363ddcf51fd7..887c3b4729ab28a3bb7d318e3f769d3e3a25d7e5 100644 (file)
@@ -8056,10 +8056,7 @@ rs6000_return_addr (count, frame)
   /* Currently we don't optimize very well between prolog and body
      code and for PIC code the code can be actually quite bad, so
      don't try to be too clever here.  */
-  if (count != 0
-      || flag_pic != 0
-      || DEFAULT_ABI == ABI_AIX
-      || DEFAULT_ABI == ABI_AIX_NODESC)
+  if (count != 0 || flag_pic != 0)
     {
       cfun->machine->ra_needs_full_frame = 1;
 
index 1def589df2dec7c1e4f20c7138ad002143c040de..cf1627657c364d75da27257609aa688bd2e7f569 100644 (file)
 
 (define_insn "movsi_low"
   [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
-        (mem:SI (lo_sum:SI (match_operand:SI 1 "register_operand" "b")
+        (mem:SI (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b")
                            (match_operand 2 "" ""))))]
   "TARGET_MACHO && ! TARGET_64BIT"
   "{l|lwz} %0,lo16(%2)(%1)"
    (set_attr "length" "4")])
 
 (define_insn "movsi_low_st"
-  [(set (mem:SI (lo_sum:SI (match_operand:SI 1 "register_operand" "b")
+  [(set (mem:SI (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b")
                            (match_operand 2 "" "")))
        (match_operand:SI 0 "gpc_reg_operand" "r"))]
   "TARGET_MACHO && ! TARGET_64BIT"
 
 (define_insn "movdf_low"
   [(set (match_operand:DF 0 "gpc_reg_operand" "=f,!r")
-        (mem:DF (lo_sum:SI (match_operand:SI 1 "register_operand" "b,b")
+        (mem:DF (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b,b")
                            (match_operand 2 "" ""))))]
   "TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT"
   "*
    (set_attr "length" "4,12")])
 
 (define_insn "movdf_low_st"
-  [(set (mem:DF (lo_sum:SI (match_operand:SI 1 "register_operand" "b")
+  [(set (mem:DF (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b")
                            (match_operand 2 "" "")))
        (match_operand:DF 0 "gpc_reg_operand" "f"))]
   "TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT"
 
 (define_insn "movsf_low"
   [(set (match_operand:SF 0 "gpc_reg_operand" "=f,!r")
-        (mem:SF (lo_sum:SI (match_operand:SI 1 "register_operand" "b,b")
+        (mem:SF (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b,b")
                            (match_operand 2 "" ""))))]
   "TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT"
   "@
    (set_attr "length" "4")])
 
 (define_insn "movsf_low_st"
-  [(set (mem:SF (lo_sum:SI (match_operand:SI 1 "register_operand" "b,b")
+  [(set (mem:SF (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b,b")
                            (match_operand 2 "" "")))
        (match_operand:SF 0 "gpc_reg_operand" "f,!r"))]
   "TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT"
   "*
 {
   char buf[30];
+#ifdef TARGET_RELOCATABLE
+  ASM_GENERATE_INTERNAL_LABEL (buf, \"LCTOC\",
+                              !TARGET_MINIMAL_TOC || TARGET_RELOCATABLE);
+#else
   ASM_GENERATE_INTERNAL_LABEL (buf, \"LCTOC\", 1);
+#endif
   if (TARGET_ELF)
     strcat (buf, \"@toc\");
   operands[1] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
    (set_attr "length" "8")])
 
 (define_insn "load_toc_v4_PIC_2"
-  [(set (match_operand:SI 0 "register_operand" "=r")
-       (mem:SI (plus:SI (match_operand:SI 1 "register_operand" "r")
+  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
+       (mem:SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "r")
                   (minus:SI (match_operand:SI 2 "immediate_operand" "s")
                             (match_operand:SI 3 "immediate_operand" "s")))))]
   "TARGET_ELF && flag_pic == 2"