This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Fix for i686-pc-linux-gnu gcc.dg/20000720-1.c regression


The i686-pc-linux-gnu gcc from the cvs mainline fails the gcc.dg/20000720-1.c
compilation:
/s/fsf/egcs/gcc/testsuite/gcc.dg/20000720-1.c: In function `dead':
/s/fsf/egcs/gcc/testsuite/gcc.dg/20000720-1.c:39: Insn does not satisfy its constraints:
(insn:TI 195 194 196 (parallel[ 
            (set (zero_extract:SI (reg:SI 5 edi)
                    (const_int 8 [0x8])
                    (const_int 8 [0x8]))
                (xor:SI (zero_extract:SI (reg:SI 5 edi)
                        (const_int 8 [0x8])
                        (const_int 8 [0x8]))
                    (zero_extract:SI (reg:SI 5 edi)
                        (const_int 8 [0x8])
                        (const_int 8 [0x8]))))
            (clobber (reg:CC 17 flags))
        ] ) 318 {*xorqi_ext_1} (insn_list 194 (nil))
    (expr_list:REG_UNUSED (reg:CC 17 flags)
        (nil)))
/s/fsf/egcs/gcc/testsuite/gcc.dg/20000720-1.c:39: Internal compiler error in extract_constrain_insn_cached, at recog.c:2241

This insn has been generated by a splitter after reload.  The following patch
prevents this splitter from generating this pattern if the operand is not of
a suitable class:

Thu Apr  5 00:15:27 2001  J"orn Rennecke <amylaar@redhat.com>

	* i386.md (*andsi_1+3): If used after reload, make sure the operand is
	in class Q_REGS.

Index: config/i386/i386.md
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/i386/i386.md,v
retrieving revision 1.253
diff -p -r1.253 i386.md
*** i386.md	2001/04/01 09:50:06	1.253
--- i386.md	2001/04/04 23:14:41
***************
*** 8080,8086 ****
     (clobber (reg:CC 17))]
    "(optimize_size || !TARGET_PARTIAL_REG_STALL)
     && (GET_MODE (operands[0]) == SImode || GET_MODE (operands[0]) == HImode
!        || (TARGET_64BIT && GET_MODE (operands[0]) == DImode))"
    [(parallel [(set (zero_extract:SI (match_dup 0)
  				    (const_int 8)
  				    (const_int 8))
--- 8080,8089 ----
     (clobber (reg:CC 17))]
    "(optimize_size || !TARGET_PARTIAL_REG_STALL)
     && (GET_MODE (operands[0]) == SImode || GET_MODE (operands[0]) == HImode
!        || (TARGET_64BIT && GET_MODE (operands[0]) == DImode))
!    && (! reload_completed
!        || TEST_HARD_REG_BIT (reg_class_contents[Q_REGS],
! 			     true_regnum (operands[0])))"
    [(parallel [(set (zero_extract:SI (match_dup 0)
  				    (const_int 8)
  				    (const_int 8))


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]