[Bug target/95443] New: cmpstrnqi patterns update string length
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat May 30 21:58:34 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95443
Bug ID: 95443
Summary: cmpstrnqi patterns update string length
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: hjl.tools at gmail dot com
CC: crazylht at gmail dot com, hubicka at ucw dot cz, ubizjak at gmail dot com
Target Milestone: ---
Target: i386,x86-64
We have
countreg = ix86_zero_extend_to_Pmode (operands[3]);
/* %%% Iff we are testing strict equality, we can use known alignment
to good advantage. This may be possible with combine, particularly
once cc0 is dead. */
align = operands[4];
if (CONST_INT_P (operands[3]))
{
if (operands[3] == const0_rtx)
{
emit_move_insn (operands[0], const0_rtx);
DONE;
}
emit_insn (gen_cmpstrnqi_nz_1 (addr1, addr2, countreg, align,
operands[1], operands[2]));
}
else
{
emit_insn (gen_cmp_1 (Pmode, countreg, countreg));
emit_insn (gen_cmpstrnqi_1 (addr1, addr2, countreg, align,
operands[1], operands[2]));
}
cmpstrnqi patterns updates countreg to 0, wich can lead to wrong codes.
More information about the Gcc-bugs
mailing list