[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
This commit is contained in:
David Edelsohn 2002-02-27 00:42:20 -05:00
parent fc04b455f9
commit f585a35687
5 changed files with 28 additions and 20 deletions

View 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> 2002-02-26 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.md (ashldi_se): Re-enable. * config/alpha/alpha.md (ashldi_se): Re-enable.

View 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_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

View 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_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

View File

@ -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;

View File

@ -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 @@
(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 @@
(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 @@
(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 @@
(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 @@
(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 @@
"* "*
{ {
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 @@
(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"