libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / minmax-24.c
blob2b21f94eecfc669a21ea82f1390e9d770622d766
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)
7 return a < b ? a : b;
10 static inline int max(int a, int b)
12 return a > b ? a : 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" } } */