131
|
1 /* { dg-do compile } */
|
|
2 /* { dg-options "-O2 -fdump-tree-original" } */
|
|
3
|
|
4 typedef double c_t;
|
|
5 typedef int a_t;
|
|
6 int f(a_t a1, a_t a2) {
|
|
7 return (c_t) a1 < (c_t) a2;
|
|
8 /* { dg-final { scan-tree-dump "return (<retval> = )?a1 < a2" "original" } } */
|
|
9 }
|
|
10
|
|
11 void f1(short a, short b)
|
|
12 {
|
|
13 volatile int s_s;
|
|
14 s_s = (float) a < (float) b;
|
|
15 /* { dg-final { scan-tree-dump "s_s = a < b" "original" } } */
|
|
16 }
|
|
17
|
|
18 void f2(unsigned short a, unsigned short b)
|
|
19 {
|
|
20 volatile int us_us;
|
|
21 us_us = (float) a < (float) b;
|
|
22 /* { dg-final { scan-tree-dump "us_us = a < b" "original" } } */
|
|
23 }
|
|
24
|
|
25 /* We don't optimize here because neither of integral types is
|
|
26 subset of the other. */
|
|
27 void f3(unsigned short a, short b)
|
|
28 {
|
|
29 volatile int us_s;
|
|
30 us_s = (float) a < (float) b;
|
|
31 /* { dg-final { scan-tree-dump "us_s = \\(float\\) a < \\(float\\) b" "original" } } */
|
|
32 }
|
|
33
|
|
34 void f4(unsigned short a, int b)
|
|
35 {
|
|
36 volatile int us_i;
|
|
37 us_i = (double) a < (double) b;
|
|
38 /* { dg-final { scan-tree-dump "us_i = \\(int\\) a < b" "original" } } */
|
|
39 }
|
|
40
|
|
41 /* We don't optimize here because neither of integral types is
|
|
42 subset of the other. */
|
|
43 void f5(short a, unsigned int b)
|
|
44 {
|
|
45 volatile int s_ui;
|
|
46 s_ui = (double) a < (double) b;
|
|
47 /* { dg-final { scan-tree-dump "s_ui = \\(double\\) a < \\(double\\) b" "original" } } */
|
|
48 }
|