1/* { dg-do compile } */ 2/* { dg-options "-fstrict-overflow -fdump-tree-gimple" } */ 3/* Test for folding abs(x) where appropriate. */ 4#define abs(x) x > 0 ? x : -x 5extern double fabs (double); 6 7int a (int x) { 8 return (abs(x)) >= 0; 9} 10 11int b (int x) { 12 return (abs(x)) == 0; 13} 14 15int c (int x) { 16 return (abs(x)) != 0; 17} 18 19int d (int x) { 20 return 0 != (abs(x)); 21} 22 23int e (int x) { 24 return 0 == (abs(x)); 25} 26 27int f (int x) { 28 return 0 <= (abs(x)); 29} 30 31int g (int x) { 32 return 0 > (abs(x)); 33} 34 35int h (float x) { 36 return 0.0 > fabs(x); 37} 38 39int i (float x) { 40 return fabs(x) == -0.0; 41} 42/* { dg-final { scan-tree-dump-times "ABS_EXPR" 0 "gimple" } } */ 43/* { dg-final { cleanup-tree-dump "gimple" } } */ 44