Commit f585a356 by David Edelsohn

[multiple changes]

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
parent fc04b455
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> 2002-02-26 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.md (ashldi_se): Re-enable. * config/alpha/alpha.md (ashldi_se): Re-enable.
......
...@@ -199,10 +199,6 @@ do { \ ...@@ -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_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}}}}}}" %{!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". */ /* AIX 4.3 typedefs ptrdiff_t as "long" while earlier releases used "int". */
#undef PTRDIFF_TYPE #undef PTRDIFF_TYPE
......
...@@ -202,10 +202,6 @@ do { \ ...@@ -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_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}}}}}}" %{!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". */ /* AIX V5 typedefs ptrdiff_t as "long" while earlier releases used "int". */
#undef PTRDIFF_TYPE #undef PTRDIFF_TYPE
......
...@@ -8056,10 +8056,7 @@ rs6000_return_addr (count, frame) ...@@ -8056,10 +8056,7 @@ rs6000_return_addr (count, frame)
/* Currently we don't optimize very well between prolog and body /* Currently we don't optimize very well between prolog and body
code and for PIC code the code can be actually quite bad, so code and for PIC code the code can be actually quite bad, so
don't try to be too clever here. */ don't try to be too clever here. */
if (count != 0 if (count != 0 || flag_pic != 0)
|| flag_pic != 0
|| DEFAULT_ABI == ABI_AIX
|| DEFAULT_ABI == ABI_AIX_NODESC)
{ {
cfun->machine->ra_needs_full_frame = 1; cfun->machine->ra_needs_full_frame = 1;
......
...@@ -7573,7 +7573,7 @@ ...@@ -7573,7 +7573,7 @@
(define_insn "movsi_low" (define_insn "movsi_low"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r") [(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 "" ""))))] (match_operand 2 "" ""))))]
"TARGET_MACHO && ! TARGET_64BIT" "TARGET_MACHO && ! TARGET_64BIT"
"{l|lwz} %0,lo16(%2)(%1)" "{l|lwz} %0,lo16(%2)(%1)"
...@@ -7581,7 +7581,7 @@ ...@@ -7581,7 +7581,7 @@
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn "movsi_low_st" (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 2 "" "")))
(match_operand:SI 0 "gpc_reg_operand" "r"))] (match_operand:SI 0 "gpc_reg_operand" "r"))]
"TARGET_MACHO && ! TARGET_64BIT" "TARGET_MACHO && ! TARGET_64BIT"
...@@ -7591,7 +7591,7 @@ ...@@ -7591,7 +7591,7 @@
(define_insn "movdf_low" (define_insn "movdf_low"
[(set (match_operand:DF 0 "gpc_reg_operand" "=f,!r") [(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 "" ""))))] (match_operand 2 "" ""))))]
"TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT" "TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT"
"* "*
...@@ -7621,7 +7621,7 @@ ...@@ -7621,7 +7621,7 @@
(set_attr "length" "4,12")]) (set_attr "length" "4,12")])
(define_insn "movdf_low_st" (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 2 "" "")))
(match_operand:DF 0 "gpc_reg_operand" "f"))] (match_operand:DF 0 "gpc_reg_operand" "f"))]
"TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT" "TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT"
...@@ -7631,7 +7631,7 @@ ...@@ -7631,7 +7631,7 @@
(define_insn "movsf_low" (define_insn "movsf_low"
[(set (match_operand:SF 0 "gpc_reg_operand" "=f,!r") [(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 "" ""))))] (match_operand 2 "" ""))))]
"TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT" "TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT"
"@ "@
...@@ -7641,7 +7641,7 @@ ...@@ -7641,7 +7641,7 @@
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn "movsf_low_st" (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 2 "" "")))
(match_operand:SF 0 "gpc_reg_operand" "f,!r"))] (match_operand:SF 0 "gpc_reg_operand" "f,!r"))]
"TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT" "TARGET_MACHO && TARGET_HARD_FLOAT && ! TARGET_64BIT"
...@@ -9566,7 +9566,12 @@ ...@@ -9566,7 +9566,12 @@
"* "*
{ {
char buf[30]; 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); ASM_GENERATE_INTERNAL_LABEL (buf, \"LCTOC\", 1);
#endif
if (TARGET_ELF) if (TARGET_ELF)
strcat (buf, \"@toc\"); strcat (buf, \"@toc\");
operands[1] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); operands[1] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
...@@ -9602,8 +9607,8 @@ ...@@ -9602,8 +9607,8 @@
(set_attr "length" "8")]) (set_attr "length" "8")])
(define_insn "load_toc_v4_PIC_2" (define_insn "load_toc_v4_PIC_2"
[(set (match_operand:SI 0 "register_operand" "=r") [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(mem:SI (plus:SI (match_operand:SI 1 "register_operand" "r") (mem:SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(minus:SI (match_operand:SI 2 "immediate_operand" "s") (minus:SI (match_operand:SI 2 "immediate_operand" "s")
(match_operand:SI 3 "immediate_operand" "s")))))] (match_operand:SI 3 "immediate_operand" "s")))))]
"TARGET_ELF && flag_pic == 2" "TARGET_ELF && flag_pic == 2"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment