comparison gcc/testsuite/gcc.dg/minmax-1.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 /* { dg-do run } */
2 /* { dg-options "-fdump-tree-original" } */
3
4 /* Check that MIN-MAX and MAX-MIN combinations are folded. */
5
6 extern void abort (void);
7
8 #define MIN(a,b) ((a) < (b) ? (a) : (b))
9 #define MAX(a,b) ((a) > (b) ? (a) : (b))
10
11 int f1(int a, int b)
12 {
13 return MIN (MAX (a, b), b); /* == b */
14 }
15
16 int f2(int a, int b)
17 {
18 return MAX (MIN (a, b), b); /* == b */
19 }
20
21 int f3(int a, int b)
22 {
23 return MIN (MAX (b, a), b); /* == b */
24 }
25
26 int f4(int a, int b)
27 {
28 return MAX (MIN (b, a), b); /* == b */
29 }
30
31
32 int g1(int a, int b)
33 {
34 return MIN (a, MAX (a, b)); /* == a */
35 }
36
37 int g2(int a, int b)
38 {
39 return MAX (a, MIN (a, b)); /* == a */
40 }
41
42 int g3(int a, int b)
43 {
44 return MIN (a, MAX (b, a)); /* == a */
45 }
46
47 int g4(int a, int b)
48 {
49 return MAX (a, MIN (b, a)); /* == a */
50 }
51
52 int main(void)
53 {
54 if (f1 (1, 2) != 2)
55 abort ();
56
57 if (f2 (1, 2) != 2)
58 abort ();
59
60 if (f3 (1, 2) != 2)
61 abort ();
62
63 if (f4 (1, 2) != 2)
64 abort ();
65
66 if (g1 (1, 2) != 1)
67 abort ();
68
69 if (g2 (1, 2) != 1)
70 abort ();
71
72 if (g3 (1, 2) != 1)
73 abort ();
74
75 if (g4 (1, 2) != 1)
76 abort ();
77
78 return 0;
79 }
80
81 /* { dg-final { scan-tree-dump-times "MIN_EXPR" 0 "original"} } */
82 /* { dg-final { scan-tree-dump-times "MAX_EXPR" 0 "original"} } */