1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-original" } */
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" } } */
11 void f1(short a
, short b
)
14 s_s
= (float) a
< (float) b
;
15 /* { dg-final { scan-tree-dump "s_s = a < b" "original" } } */
18 void f2(unsigned short a
, unsigned short b
)
21 us_us
= (float) a
< (float) b
;
22 /* { dg-final { scan-tree-dump "us_us = a < b" "original" } } */
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
)
30 us_s
= (float) a
< (float) b
;
31 /* { dg-final { scan-tree-dump "us_s = \\(float\\) a < \\(float\\) b" "original" } } */
34 void f4(unsigned short a
, int b
)
37 us_i
= (double) a
< (double) b
;
38 /* { dg-final { scan-tree-dump "us_i = \\(int\\) a < b" "original" { target { ! short_eq_int } } } } */
41 void f4_short_eq_int(unsigned short a
, long b
)
44 us_l
= (double) a
< (double) b
;
45 /* { dg-final { scan-tree-dump "us_l = \\(long int\\) a < b" "original" { target { short_eq_int } } } } */
48 /* We don't optimize here because neither of integral types is
49 subset of the other. */
50 void f5(short a
, unsigned int b
)
53 s_ui
= (double) a
< (double) b
;
54 /* { dg-final { scan-tree-dump "s_ui = \\(double\\) a < \\(double\\) b" "original" } } */