This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PATCH: fix for problem in i386.md ashlqi3_1_lea pattern
- To: gcc-patches at gcc dot gnu dot org
- Subject: PATCH: fix for problem in i386.md ashlqi3_1_lea pattern
- From: Alasdair Baird <alasdair at wildcat dot demon dot co dot uk>
- Date: Tue, 1 Aug 2000 23:37:26 +0100 (BST)
I am currently having problems bootstrapping gcc (CVSed today) for
an ia32 platform, using the -march=athlon flag. Part way through
building stage2 the compiler ends up with the following horrible
death scenario:
stor-layout.c: In function `compute_record_mode':
stor-layout.c:1095: Could not split insn
(insn 582 1038 589 (parallel[
(set (reg:QI 1 dl)
(ashift:QI (reg:QI 5 di)
(const_int 1 [0x1])))
(clobber (reg:CC 17 flags))
] ) 229 {*ashlqi3_1_lea} (nil)
(expr_list:REG_DEAD (reg:QI 5 di)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil))))
stor-layout.c:1095: Internal compiler error in final_scan_insn, at final.c:3004
Please submit a full bug report.
I believe this is occuring to an incorrect constraint on the
ashlqi3_1_lea instruction pattern. Certainly the following patch
returns the compiler to bootstrapping.
Alasdair.
Tue Aug 1 23:19:42 BST 2000 Alasdair Baird <alasdair@wildcat.demon.co.uk>
* i386.md (ashlqi3_1_lea): Fix constraint.
*** gcc/config/i386/i386.md-orig Mon Jul 31 18:33:58 2000
--- gcc/config/i386/i386.md Tue Aug 1 22:45:48 2000
***************
*** 6690,6696 ****
(define_insn "*ashlqi3_1_lea"
[(set (match_operand:QI 0 "nonimmediate_operand" "=qm,r,r")
! (ashift:QI (match_operand:QI 1 "nonimmediate_operand" "0,0,r")
(match_operand:QI 2 "nonmemory_operand" "cI,cI,M")))
(clobber (reg:CC 17))]
"!TARGET_PARTIAL_REG_STALL
--- 6690,6696 ----
(define_insn "*ashlqi3_1_lea"
[(set (match_operand:QI 0 "nonimmediate_operand" "=qm,r,r")
! (ashift:QI (match_operand:QI 1 "nonimmediate_operand" "0,0,0")
(match_operand:QI 2 "nonmemory_operand" "cI,cI,M")))
(clobber (reg:CC 17))]
"!TARGET_PARTIAL_REG_STALL