A minimal (C) test case (with "-O -ftree-vectorize") for me is:
struct test
{
unsigned long exp[0];
};
void test (struct test *a, long b, unsigned long bitmask)
{
if (b > 0)
{
a->exp[0] &= ~bitmask;
a->exp[0] |= b;
}
else
{
a->exp[0] &= ~bitmask;
}
}
The problem here is a bug in the data dependency detection when zero-
sized arrays are involved in an access.
This bug was latent, and got exposed by Ira's patch to improve conditional
store sinking:
http://gcc.gnu.org/ml/gcc-patches/2011-03/msg01393.html
The bug was later fixed (inadvertently) by Richard Guenther's data-dependency
fix series, in particular this patch:
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01878.html
Since both of these patches are in mainline (and FSF 4.7, and Linaro 4.7), the
bug is not appear there.
Since FSF 4.6 contains neither of those, the bug is latent (without visible
effect) there.
The bug does appear in Linaro 4.6, since we backported Ira's patch but
not Richard's data-dependency fix.
I'll try testing a backport of that fix.
** Changed in: gcc-linaro
Status: Triaged => In Progress
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/972648
Title:
ICE (segfault) in gsi_for_stmt
To manage notifications about this bug go to:
https://bugs.launchpad.net/gcc-linaro/+bug/972648/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs