[Bug target/15550] New: [i386] ICE in extract_insn, at recog.c:2083

dannysmith at users dot sourceforge dot net gcc-bugzilla@gcc.gnu.org
Fri May 21 10:03:00 GMT 2004


The following, compiled with -O1 results in ICE on i386-pc-mingw32,
with GCC-3.4.0.

-O0 and -O2 work fine.

On trunk, the code compiles at all optimisation levels

/* test1.c */
typedef struct _foo
{
  unsigned long _bkgd;
} FOO;

void wbkgdset (FOO* foo, unsigned long ch)
{
  unsigned long bkgdattr;

  if ( (ch & 0xFFFF0000UL) == 0UL )
    bkgdattr = 0x0000000UL;
  else
    bkgdattr = (ch & 0xFFFF0000UL);

  foo->_bkgd = (ch | bkgdattr);
}


>gcc-3.4.0  -O1 -c test1.c 
test1.c: In function `wbkgdset':
test1.c:17: error: unrecognizable insn:
(insn 36 11 23 0 (set (reg/v:SI 60 [ bkgdattr ])
        (and:SI (reg/v:SI 59 [ ch ])
            (const_int -65536 [0xffff0000]))) -1 (nil)
    (nil))
test1.c:17: internal compiler error: in extract_insn, at recog.c:2083
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.mingw.org/bugs.shtml> for instructions.

If I simplify the if...else to:
bkgdattr = (ch & 0xFFFF0000UL);
there is no problem.

Danny

-- 
           Summary: [i386] ICE in extract_insn, at recog.c:2083
           Product: gcc
           Version: 3.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dannysmith at users dot sourceforge dot net
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-mingw32
  GCC host triplet: i686-pc-mingw32
GCC target triplet: i686-pc-mingw32


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15550



More information about the Gcc-bugs mailing list