94 lines
1.6 KiB
C
94 lines
1.6 KiB
C
/* PR tree-optimization/66299 */
|
|
/* { dg-do run } */
|
|
/* { dg-options "-fdump-tree-original" } */
|
|
/* { dg-require-effective-target int32plus } */
|
|
|
|
void
|
|
test1 (int x)
|
|
{
|
|
if ((0 << x) != 0
|
|
|| (1 << x) != 2
|
|
|| (2 << x) != 4
|
|
|| (3 << x) != 6
|
|
|| (4 << x) != 8
|
|
|| (5 << x) != 10
|
|
|| (6 << x) != 12
|
|
|| (7 << x) != 14
|
|
|| (8 << x) != 16
|
|
|| (9 << x) != 18
|
|
|| (10 << x) != 20)
|
|
__builtin_abort ();
|
|
}
|
|
|
|
void
|
|
test2 (int x)
|
|
{
|
|
if (!((0 << x) == 0
|
|
&& (1 << x) == 4
|
|
&& (2 << x) == 8
|
|
&& (3 << x) == 12
|
|
&& (4 << x) == 16
|
|
&& (5 << x) == 20
|
|
&& (6 << x) == 24
|
|
&& (7 << x) == 28
|
|
&& (8 << x) == 32
|
|
&& (9 << x) == 36
|
|
&& (10 << x) == 40))
|
|
__builtin_abort ();
|
|
}
|
|
|
|
void
|
|
test3 (unsigned int x)
|
|
{
|
|
if ((0U << x) != 0U
|
|
|| (1U << x) != 16U
|
|
|| (2U << x) != 32U
|
|
|| (3U << x) != 48U
|
|
|| (4U << x) != 64U
|
|
|| (5U << x) != 80U
|
|
|| (6U << x) != 96U
|
|
|| (7U << x) != 112U
|
|
|| (8U << x) != 128U
|
|
|| (9U << x) != 144U
|
|
|| (10U << x) != 160U)
|
|
__builtin_abort ();
|
|
}
|
|
|
|
void
|
|
test4 (unsigned int x)
|
|
{
|
|
if (!((0U << x) == 0U
|
|
|| (1U << x) == 8U
|
|
|| (2U << x) == 16U
|
|
|| (3U << x) == 24U
|
|
|| (4U << x) == 32U
|
|
|| (5U << x) == 40U
|
|
|| (6U << x) == 48U
|
|
|| (7U << x) == 56U
|
|
|| (8U << x) == 64U
|
|
|| (9U << x) == 72U
|
|
|| (10U << x) == 80U))
|
|
__builtin_abort ();
|
|
}
|
|
|
|
void
|
|
test5 (int x)
|
|
{
|
|
if ((0 << x) == 1
|
|
|| (0 << x) != 0
|
|
|| (0x8001U << x) != 0x20000U)
|
|
__builtin_abort ();
|
|
}
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
test1 (1);
|
|
test2 (2);
|
|
test3 (4U);
|
|
test4 (3U);
|
|
test5 (17);
|
|
}
|
|
|
|
/* { dg-final { scan-tree-dump-not "<<" "original" } } */
|