From 7b8781c8617d3469e7f12a6d6dc12542f192f4dc Mon Sep 17 00:00:00 2001 From: Philip Blundell Date: Tue, 19 Feb 2002 22:23:56 +0000 Subject: [PATCH] re PR target/5185 ([ARM] Segmentation fault in final.c) 2002-02-19 Philip Blundell PR 5185 * config/arm/arm.h (THUMB_LEGITIMATE_CONSTANT_P): Accept anything if generating PIC. PR 5054 * config/arm/arm.md (call_insn) [TARGET_THUMB]: Use arm_is_longcall_p rather than inspecting call-type cookie directly. (call_value_insn) [TARGET_THUMB]: Likewise. From-SVN: r49879 --- gcc/ChangeLog | 12 ++++++++++++ gcc/config/arm/arm.h | 3 ++- gcc/config/arm/arm.md | 6 ++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c5813d2af9a..45819e6d991 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2002-02-19 Philip Blundell + + PR 5185 + * config/arm/arm.h (THUMB_LEGITIMATE_CONSTANT_P): Accept anything + if generating PIC. + + PR 5054 + * config/arm/arm.md (call_insn) [TARGET_THUMB]: Use + arm_is_longcall_p rather than inspecting call-type cookie + directly. + (call_value_insn) [TARGET_THUMB]: Likewise. + 2002-02-19 Graham Stott * config/i386/i386.c (ix86_expand_builtin): Fix typo. diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index bd448dbe4e2..c68c86757d4 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -1843,7 +1843,8 @@ typedef struct #define THUMB_LEGITIMATE_CONSTANT_P(X) \ ( GET_CODE (X) == CONST_INT \ || GET_CODE (X) == CONST_DOUBLE \ - || CONSTANT_ADDRESS_P (X)) + || CONSTANT_ADDRESS_P (X) \ + || flag_pic) #define LEGITIMATE_CONSTANT_P(X) \ (TARGET_ARM ? ARM_LEGITIMATE_CONSTANT_P (X) : THUMB_LEGITIMATE_CONSTANT_P (X)) diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 3646fe5890f..d1259d472b7 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -6655,7 +6655,8 @@ (use (match_operand 2 "" "")) (clobber (reg:SI LR_REGNUM))] "TARGET_THUMB - && operands[2] == const0_rtx && (GET_CODE (operands[0]) == SYMBOL_REF)" + && GET_CODE (operands[0]) == SYMBOL_REF + && !arm_is_longcall_p (operands[0], INTVAL (operands[2]), 1)" "bl\\t%a0" [(set_attr "length" "4") (set_attr "type" "call")] @@ -6668,7 +6669,8 @@ (use (match_operand 3 "" "")) (clobber (reg:SI LR_REGNUM))] "TARGET_THUMB - && operands[3] == const0_rtx && (GET_CODE (operands[1]) == SYMBOL_REF)" + && GET_CODE (operands[1]) == SYMBOL_REF + && !arm_is_longcall_p (operands[1], INTVAL (operands[3]), 1)" "bl\\t%a1" [(set_attr "length" "4") (set_attr "type" "call")] -- 2.30.2