2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-04-24 17:41:42 +08:00

re PR tree-optimization/67916 (wrong code at -O3 on x86_64-linux-gnu)

PR tree-optimization/67916
	* gcc.dg/torture/pr67916.c: New test.

From-SVN: r231117
This commit is contained in:
Marek Polacek 2015-12-01 15:47:34 +00:00 committed by Marek Polacek
parent 8b6ab677a2
commit 4bc84763c0
2 changed files with 51 additions and 0 deletions
gcc/testsuite
ChangeLog
gcc.dg/torture

@ -1,3 +1,8 @@
2015-12-01 Marek Polacek <polacek@redhat.com>
PR tree-optimization/67916
* gcc.dg/torture/pr67916.c: New test.
2015-12-01 Marek Polacek <polacek@redhat.com>
PR middle-end/68582

@ -0,0 +1,46 @@
/* PR tree-optimization/67916 */
/* { dg-do run } */
int a[6], b = 1, d, e;
long long c;
static int f = 1;
void
fn1 (int p1)
{
b = (b >> 1) & (1 ^ a[(1 ^ p1) & 5]);
}
void
fn2 ()
{
b = (b >> 1) & (1 ^ a[(b ^ 1) & 1]);
fn1 (c >> 1 & 5);
fn1 (c >> 2 & 5);
fn1 (c >> 4 & 5);
fn1 (c >> 8 & 5);
}
int
main ()
{
int i, j;
for (; d;)
{
for (; e;)
fn2 ();
f = 0;
}
for (i = 0; i < 8; i++)
{
if (f)
i = 9;
for (j = 0; j < 7; j++)
fn2 ();
}
if (b != 0)
__builtin_abort ();
return 0;
}