1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-optimized" } */
3 /* PR tree-optimization/96694 */
5 static inline int min(int a
, int b
)
10 static inline int max(int a
, int b
)
15 int max_not(int x
, int y
)
17 return ~max(~x
, y
); // min (x, ~y)
19 /* { dg-final { scan-tree-dump "~y_\[0-9\]+.D.;" "optimized" } } */
20 /* { dg-final { scan-tree-dump-not "~x_\[0-9\]+.D.;" "optimized" } } */
21 /* { dg-final { scan-tree-dump "MIN_EXPR <x_\[0-9\]+.D., _\[0-9\]+>|MIN_EXPR <_\[0-9\]+, x_\[0-9\]+.D.>" "optimized" } } */
23 int min_not(int c
, int d
)
25 return ~min(~c
, d
); // max (c, ~d)
27 /* { dg-final { scan-tree-dump "~d_\[0-9\]+.D.;" "optimized" } } */
28 /* { dg-final { scan-tree-dump-not "~c_\[0-9\]+.D.;" "optimized" } } */
29 /* { dg-final { scan-tree-dump "MAX_EXPR <c_\[0-9\]+.D., _\[0-9\]+>|MIN_EXPR <_\[0-9\]+, c_\[0-9\]+.D.>" "optimized" } } */
31 /* { dg-final { scan-tree-dump-times "~" 2 "optimized" } } */