1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-optimized" } */
4 typedef __INT16_TYPE__
int16_t;
5 typedef __INT32_TYPE__
int32_t;
6 typedef __UINT16_TYPE__
uint16_t;
7 typedef __UINT32_TYPE__
uint32_t;
9 #define MAGIC (~ (uint32_t) 0 / 2 + 1)
12 f_i16_i16 (int16_t x
, int16_t y
)
14 return x
+ MAGIC
< y
+ MAGIC
;
18 f_i16_i32 (int16_t x
, int32_t y
)
20 return x
+ MAGIC
< y
+ MAGIC
;
24 f_i32_i32 (int32_t x
, int32_t y
)
26 return x
+ MAGIC
< y
+ MAGIC
;
30 f_u32_i32 (uint32_t x
, int32_t y
)
32 return x
+ MAGIC
< y
+ MAGIC
;
36 f_u32_u32 (uint32_t x
, uint32_t y
)
38 return x
+ MAGIC
< y
+ MAGIC
;
42 f_i32_i32_sub (int32_t x
, int32_t y
)
44 return x
- MAGIC
< y
- MAGIC
;
47 /* The addition/subtraction of constants should be optimized away. */
48 /* { dg-final { scan-tree-dump-not " \\+ " "optimized"} } */
49 /* { dg-final { scan-tree-dump-not " \\- " "optimized"} } */