PATCH: fix for problem in i386.md ashlqi3_1_lea pattern

Alasdair Baird alasdair@wildcat.demon.co.uk
Tue Aug 1 15:37:00 GMT 2000


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


More information about the Gcc-patches mailing list