annotate gcc/testsuite/gcc.dg/pr31096-1.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* PR middle-end/31096 */
kono
parents:
diff changeset
2 /* { dg-do compile } */
kono
parents:
diff changeset
3 /* { dg-options "-O2 -fdump-tree-optimized" } */
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 #if __SIZEOF_INT__ < 4
kono
parents:
diff changeset
6 __extension__ typedef __INT32_TYPE__ int32_t;
kono
parents:
diff changeset
7 __extension__ typedef __UINT32_TYPE__ uint32_t;
kono
parents:
diff changeset
8 #else
kono
parents:
diff changeset
9 typedef int int32_t;
kono
parents:
diff changeset
10 typedef unsigned uint32_t;
kono
parents:
diff changeset
11 #endif
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 #define zero(name, op) \
kono
parents:
diff changeset
14 int32_t name (int32_t a, int32_t b) \
kono
parents:
diff changeset
15 { return a * 0 op b * 0; }
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 zero(zeq, ==) zero(zne, !=) zero(zlt, <)
kono
parents:
diff changeset
18 zero(zgt, >) zero(zge, >=) zero(zle, <=)
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 #define unsign_pos(name, op) \
kono
parents:
diff changeset
21 int32_t name (uint32_t a, uint32_t b) \
kono
parents:
diff changeset
22 { return a * 4 op b * 4; }
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 unsign_pos(upeq, ==) unsign_pos(upne, !=) unsign_pos(uplt, <)
kono
parents:
diff changeset
25 unsign_pos(upgt, >) unsign_pos(upge, >=) unsign_pos(uple, <=)
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 #define unsign_neg(name, op) \
kono
parents:
diff changeset
28 int32_t name (uint32_t a, uint32_t b) \
kono
parents:
diff changeset
29 { return a * -2 op b * -2; }
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 unsign_neg(uneq, ==) unsign_neg(unne, !=) unsign_neg(unlt, <)
kono
parents:
diff changeset
32 unsign_neg(ungt, >) unsign_neg(unge, >=) unsign_neg(unle, <=)
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 #define float(name, op) \
kono
parents:
diff changeset
35 int32_t name (float a, float b) \
kono
parents:
diff changeset
36 { return a * 5 op b * 5; }
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 float(feq, ==) float(fne, !=) float(flt, <)
kono
parents:
diff changeset
39 float(fgt, >) float(fge, >=) float(fle, <=)
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 #define float_val(name, op) \
kono
parents:
diff changeset
42 int32_t name (int32_t a, int32_t b) \
kono
parents:
diff changeset
43 { return a * 54.0 op b * 54.0; }
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 float_val(fveq, ==) float_val(fvne, !=) float_val(fvlt, <)
kono
parents:
diff changeset
46 float_val(fvgt, >) float_val(fvge, >=) float_val(fvle, <=)
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 #define vec(name, op) \
kono
parents:
diff changeset
49 int32_t name (int32_t a, int32_t b) \
kono
parents:
diff changeset
50 { int32_t c[10]; return a * c[1] op b * c[1]; }
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 vec(veq, ==) vec(vne, !=) vec(vlt, <)
kono
parents:
diff changeset
53 vec(vgt, >) vec(vge, >=) vec(vle, <=)
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 /* { dg-final { scan-tree-dump-times "\\(D\\) \\* 4" 24 "optimized" } } */
kono
parents:
diff changeset
56 /* { dg-final { scan-tree-dump-times "\\(D\\) \\* 4294967294" 12 "optimized" } } */
kono
parents:
diff changeset
57 /* { dg-final { scan-tree-dump-times "\\(D\\) \\* 5\\.0e\\+0" 12 "optimized" } } */
kono
parents:
diff changeset
58 /* { dg-final { scan-tree-dump-times "\\* 5\\.4e\\+1" 12 "optimized" } } */
kono
parents:
diff changeset
59 /* { dg-final { scan-tree-dump-times "\\(D\\) \\* c\\\$1_8\\(D\\)" 12 "optimized" } } */