From: David Edelsohn Date: Wed, 27 Feb 2002 05:42:20 +0000 (-0500) Subject: [multiple changes] X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f585a35687df424814b57fd201253c11a19795f5;p=gcc.git [multiple changes] 2002-02-26 David Edelsohn * 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 * config/rs6000/rs6000.md (load_toc_aix_di): Handle TARGET_RELOCATABLE. From-SVN: r50090 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 84085d3aceb..8765f325205 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2002-02-26 David Edelsohn + + * 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 + + * config/rs6000/rs6000.md (load_toc_aix_di): Handle TARGET_RELOCATABLE. + 2002-02-26 Richard Henderson * config/alpha/alpha.md (ashldi_se): Re-enable. diff --git a/gcc/config/rs6000/aix43.h b/gcc/config/rs6000/aix43.h index 93e186ca2a0..7aa8707cdab 100644 --- a/gcc/config/rs6000/aix43.h +++ b/gcc/config/rs6000/aix43.h @@ -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 diff --git a/gcc/config/rs6000/aix51.h b/gcc/config/rs6000/aix51.h index ae01440f5d3..8dc0b86ba4f 100644 --- a/gcc/config/rs6000/aix51.h +++ b/gcc/config/rs6000/aix51.h @@ -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 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index c1d89111825..887c3b4729a 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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; diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 1def589df2d..cf1627657c3 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -7573,7 +7573,7 @@ (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)" @@ -7581,7 +7581,7 @@ (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" @@ -7591,7 +7591,7 @@ (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" "* @@ -7621,7 +7621,7 @@ (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" @@ -7631,7 +7631,7 @@ (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" "@ @@ -7641,7 +7641,7 @@ (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" @@ -9566,7 +9566,12 @@ "* { 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)); @@ -9602,8 +9607,8 @@ (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"