From e0c0a39ef17bbbe380a67afdc2969fe0f87e6729 Mon Sep 17 00:00:00 2001 From: dje Date: Fri, 2 May 2003 14:49:52 +0000 Subject: [PATCH] * config/rs6000/{603.md,6xx.md,7450.md,7xx.md,rs64.md}: Decrease number of automata. * config/rs6000/rs6000.c (symbol_ref_operand): Check SYMBOL_REF_FUNCTION_P on AIX. (current_file_function_operand): Same. * config/rs6000/rs6000.md (call,call_value): Force non-function symbol_ref into register on AIX. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66385 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/config/rs6000/603.md | 4 ++-- gcc/config/rs6000/6xx.md | 4 ++-- gcc/config/rs6000/7450.md | 4 ++-- gcc/config/rs6000/7xx.md | 6 +++--- gcc/config/rs6000/rs6000.c | 18 ++++++------------ gcc/config/rs6000/rs6000.md | 2 ++ gcc/config/rs6000/rs64.md | 4 ++-- 8 files changed, 30 insertions(+), 23 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c2b1e8da47f..48475ffd824 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2003-05-02 David Edelsohn + + * config/rs6000/{603.md,6xx.md,7450.md,7xx.md,rs64.md}: Decrease + number of automata. + + * config/rs6000/rs6000.c (symbol_ref_operand): Check + SYMBOL_REF_FUNCTION_P on AIX. + (current_file_function_operand): Same. + * config/rs6000/rs6000.md (call,call_value): Force non-function + symbol_ref into register on AIX. + 2003-05-02 Alan Modra * calls.c (struct arg_data): Move offset, slot_offset, size and diff --git a/gcc/config/rs6000/603.md b/gcc/config/rs6000/603.md index 7605c69024d..5420cb91774 100644 --- a/gcc/config/rs6000/603.md +++ b/gcc/config/rs6000/603.md @@ -18,10 +18,10 @@ ;; Free Software Foundation, 59 Temple Place - Suite 330, Boston, ;; MA 02111-1307, USA. -(define_automaton "ppc603,ppc603fp,ppc603other") +(define_automaton "ppc603,ppc603fp") (define_cpu_unit "iu_603" "ppc603") (define_cpu_unit "fpu_603" "ppc603fp") -(define_cpu_unit "lsu_603,bpu_603,sru_603" "ppc603other") +(define_cpu_unit "lsu_603,bpu_603,sru_603" "ppc603") ;; PPC603/PPC603e 32-bit IU, LSU, FPU, BPU, SRU ;; Max issue 3 insns/clock cycle (includes 1 branch) diff --git a/gcc/config/rs6000/6xx.md b/gcc/config/rs6000/6xx.md index 6ad7c73e5d2..a4ac520e37f 100644 --- a/gcc/config/rs6000/6xx.md +++ b/gcc/config/rs6000/6xx.md @@ -19,11 +19,11 @@ ;; Free Software Foundation, 59 Temple Place - Suite 330, Boston, ;; MA 02111-1307, USA. -(define_automaton "ppc6xx,ppc6xxfp,ppc6xxfp2,ppc6xxother") +(define_automaton "ppc6xx,ppc6xxfp,ppc6xxfp2") (define_cpu_unit "iu1_6xx,iu2_6xx,mciu_6xx" "ppc6xx") (define_cpu_unit "fpu_6xx" "ppc6xxfp") (define_cpu_unit "fpu1_6xx,fpu2_6xx" "ppc6xxfp2") -(define_cpu_unit "lsu_6xx,bpu_6xx,cru_6xx" "ppc6xxother") +(define_cpu_unit "lsu_6xx,bpu_6xx,cru_6xx" "ppc6xx") ;; PPC604 32-bit 2xSCIU, MCIU, LSU, FPU, BPU ;; PPC604e 32-bit 2xSCIU, MCIU, LSU, FPU, BPU, CRU diff --git a/gcc/config/rs6000/7450.md b/gcc/config/rs6000/7450.md index 5b5168233ac..7c136a5b8a8 100644 --- a/gcc/config/rs6000/7450.md +++ b/gcc/config/rs6000/7450.md @@ -18,10 +18,10 @@ ;; Free Software Foundation, 59 Temple Place - Suite 330, Boston, ;; MA 02111-1307, USA. -(define_automaton "ppc7450,ppc7450fp,ppc7450other,ppc7450vec") +(define_automaton "ppc7450,ppc7450fp,ppc7450vec") (define_cpu_unit "iu1_7450,iu2_7450,iu3_7450,mciu_7450" "ppc7450") (define_cpu_unit "fpu_7450" "ppc7450fp") -(define_cpu_unit "lsu_7450,bpu_7450" "ppc7450other") +(define_cpu_unit "lsu_7450,bpu_7450" "ppc7450") (define_cpu_unit "du1_7450,du2_7450,du3_7450" "ppc7450") (define_cpu_unit "vecsmpl_7450,veccmplx_7450,vecflt_7450,vecperm_7450" "ppc7450vec") (define_cpu_unit "vdu1_7450,vdu2_7450" "ppc7450vec") diff --git a/gcc/config/rs6000/7xx.md b/gcc/config/rs6000/7xx.md index 2da9ba538f8..e46366929d0 100644 --- a/gcc/config/rs6000/7xx.md +++ b/gcc/config/rs6000/7xx.md @@ -18,12 +18,12 @@ ;; Free Software Foundation, 59 Temple Place - Suite 330, Boston, ;; MA 02111-1307, USA. -(define_automaton "ppc7xx,ppc7xxfp,ppc7xxother,ppc7xxvec") +(define_automaton "ppc7xx,ppc7xxfp") (define_cpu_unit "iu1_7xx,iu2_7xx" "ppc7xx") (define_cpu_unit "fpu_7xx" "ppc7xxfp") -(define_cpu_unit "lsu_7xx,bpu_7xx,sru_7xx" "ppc7xxother") +(define_cpu_unit "lsu_7xx,bpu_7xx,sru_7xx" "ppc7xx") (define_cpu_unit "du1_7xx,du2_7xx" "ppc7xx") -(define_cpu_unit "veccmplx_7xx,vecperm_7xx,vdu_7xx" "ppc7xxvec") +(define_cpu_unit "veccmplx_7xx,vecperm_7xx,vdu_7xx" "ppc7xx") ;; PPC740/PPC750/PPC7400 32-bit 2xIU, LSU, SRU, FPU, BPU ;; IU1 can perform all integer operations diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 43763fd7f57..3ef0a6818d4 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -2073,7 +2073,8 @@ symbol_ref_operand (op, mode) if (mode != VOIDmode && GET_MODE (op) != mode) return 0; - return (GET_CODE (op) == SYMBOL_REF); + return (GET_CODE (op) == SYMBOL_REF + && (DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op))); } /* Return 1 if the operand, used inside a MEM, is a valid first argument @@ -2102,17 +2103,10 @@ current_file_function_operand (op, mode) rtx op; enum machine_mode mode ATTRIBUTE_UNUSED; { - if (GET_CODE (op) == SYMBOL_REF - && (SYMBOL_REF_LOCAL_P (op) - || (op == XEXP (DECL_RTL (current_function_decl), 0)))) - { -#ifdef ENABLE_CHECKING - if (!SYMBOL_REF_FUNCTION_P (op)) - abort (); -#endif - return 1; - } - return 0; + return (GET_CODE (op) == SYMBOL_REF + && (DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op)) + && (SYMBOL_REF_LOCAL_P (op) + || (op == XEXP (DECL_RTL (current_function_decl), 0)))); } /* Return 1 if this operand is a valid input for a move insn. */ diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 625355282ea..e97be3fcd7f 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -10089,6 +10089,7 @@ operands[0] = XEXP (operands[0], 0); if (GET_CODE (operands[0]) != SYMBOL_REF + || (DEFAULT_ABI == ABI_AIX && !SYMBOL_REF_FUNCTION_P (operands[0])) || (INTVAL (operands[2]) & CALL_LONG) != 0) { if (INTVAL (operands[2]) & CALL_LONG) @@ -10136,6 +10137,7 @@ operands[1] = XEXP (operands[1], 0); if (GET_CODE (operands[1]) != SYMBOL_REF + || (DEFAULT_ABI == ABI_AIX && !SYMBOL_REF_FUNCTION_P (operands[1])) || (INTVAL (operands[3]) & CALL_LONG) != 0) { if (INTVAL (operands[3]) & CALL_LONG) diff --git a/gcc/config/rs6000/rs64.md b/gcc/config/rs6000/rs64.md index c1ef52a0627..3de2bddcee0 100644 --- a/gcc/config/rs6000/rs64.md +++ b/gcc/config/rs6000/rs64.md @@ -18,11 +18,11 @@ ;; Free Software Foundation, 59 Temple Place - Suite 330, Boston, ;; MA 02111-1307, USA. -(define_automaton "rs64,rs64fp,rs64other") +(define_automaton "rs64,rs64fp") (define_cpu_unit "iu_rs64" "rs64") (define_cpu_unit "mciu_rs64" "rs64") (define_cpu_unit "fpu_rs64" "rs64fp") -(define_cpu_unit "lsu_rs64,bpu_rs64" "rs64other") +(define_cpu_unit "lsu_rs64,bpu_rs64" "rs64") ;; RS64a 64-bit IU, LSU, FPU, BPU -- 2.11.4.GIT