[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:
parent
fc04b455f9
commit
f585a35687
|
@ -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.
|
||||||
|
|
|
@ -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 { \
|
||||||
%{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)
|
||||||
/* 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 @@
|
||||||
|
|
||||||
(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"
|
||||||
|
|
Loading…
Reference in New Issue