Commit 821bdb23 by Jakub Jelinek Committed by Jakub Jelinek

re PR target/41680 (ICE in trunc_int_for_mode)

	PR target/41680
	* config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
	paradoxical subregs to prevent partial register stalls if the inner
	mode is integer mode.

	* g++.dg/torture/pr41680.C: New test.

From-SVN: r152665
parent aeaf114b
2009-10-12 Jakub Jelinek <jakub@redhat.com>
PR target/41680
* config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
paradoxical subregs to prevent partial register stalls if the inner
mode is integer mode.
2009-10-12 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (*setcc_<mode>_2): Do not use ix86_expand_clear
......@@ -8571,7 +8571,8 @@
else if (GET_CODE (val) == SUBREG
&& (submode = GET_MODE (SUBREG_REG (val)),
GET_MODE_BITSIZE (mode) > GET_MODE_BITSIZE (submode))
&& pos + len <= GET_MODE_BITSIZE (submode))
&& pos + len <= GET_MODE_BITSIZE (submode)
&& GET_MODE_CLASS (submode) == MODE_INT)
{
/* Narrow a paradoxical subreg to prevent partial register stalls. */
mode = submode;
......
2009-10-12 Jakub Jelinek <jakub@redhat.com>
PR target/41680
* g++.dg/torture/pr41680.C: New test.
2009-10-12 Dodji Seketeli <dodji@redhat.com>
PR c++/41570
......
// PR target/41680
// { dg-do compile }
extern void baz (float);
inline bool
bar (float x)
{
union { float f; int i; } u;
u.f = x;
return (u.i & 1);
}
void
foo (float *x)
{
for (int i = 0; i < 10; i++)
{
float f = x[i];
if (!bar (f))
baz (f);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment