[Bug optimization/13951] [tree-ssa] cselib ICE during x86-64 kernel compile with treessa
jh at suse dot cz
gcc-bugzilla@gcc.gnu.org
Wed Feb 4 23:57:00 GMT 2004
------- Additional Comments From jh at suse dot cz 2004-02-04 23:56 -------
Subject: Re: [tree-ssa] cselib ICE during x86-64 kernel compile with treessa
> >
> > ------- Additional Comments From jh at suse dot cz 2004-02-04 12:11 -------
> > Subject: Re: [tree-ssa] cselib ICE during x86-64 kernel compile with treessa
> >
> > >
> > > ------- Additional Comments From rth at gcc dot gnu dot org 2004-02-04 03:34 -------
> > > Jan, I assume this is some bit of cselib changes present on mainline that
> > > didn't make it to the branch. Would you take care of it please?
> >
> > I think it is unrelated - nothing of my recent changes shall affect
> > something else than schedule-ebbs used only by IA-64, but I plan to look
> > into it soon (once I resolve the remaining cgraphunit merge issues)
> The problem is:
>
> (insn 154 153 155 13 (parallel [
> (set (reg/v:SI 74 [ eax ])
> (asm_operands:SI ("cpuid") ("=a") 0 [
> (reg:SI 108)
> ]
> [
> (asm_input:SI ("0"))
> ] ("include/asm/msr.h") 72))
> (set (reg/v:SI 73 [ dummy ])
> (asm_operands:SI ("cpuid") ("=b") 1 [
> (reg:SI 108)
> ]
> [
> (asm_input:SI ("0"))
> ] ("include/asm/msr.h") 72))
> (set (reg/v:SI 73 [ dummy ])
> (asm_operands:SI ("cpuid") ("=c") 2 [
> (reg:SI 108)
> ]
> [
> (asm_input:SI ("0"))
> ] ("include/asm/msr.h") 72))
> (set (reg:SI 107)
> (asm_operands:SI ("cpuid") ("=d") 3 [
> (reg:SI 108)
> ]
> [
> (asm_input:SI ("0"))
> ] ("include/asm/msr.h") 72))
> (clobber (reg:QI 19 dirflag))
> (clobber (reg:QI 18 fpsr))
> (clobber (reg:QI 17 flags))
> ]) -1 (nil)
> (nil))
>
> I think CSELIB ICE because dummy is set twice. I think it makes sense
> to do so, but I am unsure where to avoid it. I will look into it
> tomorrow.
Hi,
I am testing the attached patch.
Honza
Index: stmt.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/stmt.c,v
retrieving revision 1.267.2.45
diff -c -3 -p -r1.267.2.45 stmt.c
*** stmt.c 30 Jan 2004 13:14:16 -0000 1.267.2.45
--- stmt.c 4 Feb 2004 23:55:36 -0000
*************** expand_asm_operands (tree string, tree o
*** 1671,1676 ****
--- 1671,1694 ----
}
output_rtx[i] = op;
+ if ((REG_P (output_rtx[i]) || GET_CODE (output_rtx[i]) == SUBREG)
+ && !real_output_rtx[i])
+ {
+ int y;
+ rtx reg = output_rtx[i];
+ if (GET_CODE (reg) == SUBREG)
+ reg = SUBREG_REG (reg);
+ for (y = 0; y < i; y++)
+ if ((REG_P (output_rtx[y]) || GET_CODE (output_rtx[y]) == SUBREG)
+ && reg_overlap_mentioned_p (reg, output_rtx[y]))
+ break;
+ if (y != i)
+ {
+ real_output_rtx[i] = output_rtx[i];
+ output_rtx[i] = gen_reg_rtx (GET_MODE (op));
+ }
+ }
+
generating_concat_p = old_generating_concat_p;
if (is_inout)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13951
More information about the Gcc-bugs
mailing list