blob: 70629165bb61d212d02910e76eb9d7b07d29a5fa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-phiopt" } */
/* PR tree-optimization/111957 */
int f(int a)
{
if (a)
return a > 0 ? a : -a;
return 0;
}
int f1(int x)
{
int intmin = (-1u >> 1);
intmin = -intmin - 1;
if (x != intmin)
return x > 0 ? x : -x;
return intmin;
}
/* { dg-final { scan-tree-dump-times "if " 1 "phiopt1" } } */
/* { dg-final { scan-tree-dump-not "if " "phiopt2" } } */
/* The ABS_EXPR in f gets rewritten to ABSU_EXPR as phiopt can't prove it was not undefined when moving it. */
/* { dg-final { scan-tree-dump-times "ABS_EXPR <" 1 "phiopt1" } } */
/* { dg-final { scan-tree-dump-times "ABSU_EXPR <" 1 "phiopt1" } } */
/* { dg-final { scan-tree-dump-times "ABSU_EXPR <" 2 "phiopt2" } } */
|