1 // RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
2
3 /* WG14 N1391: Yes
4 * Floating-point to int/_Bool conversions
5 */
6
neg_zero(void)7 int neg_zero(void) {
8 // CHECK: define{{.*}} i32 @neg_zero()
9 return (_Bool)-0.0 ? -1 : 1; // Negative zero -> false
10 // CHECK: ret i32 1
11 }
12
pos_inf(void)13 int pos_inf(void) {
14 // CHECK: define{{.*}} i32 @pos_inf()
15 return (_Bool)(1.0f / 0.0f) ? 1 : -1; // Positive inf -> true
16 // CHECK: ret i32 1
17 }
18
neg_inf(void)19 int neg_inf(void) {
20 // CHECK: define{{.*}} i32 @neg_inf()
21 return (_Bool)(-1.0f / 0.0f) ? 1 : -1; // Negative inf -> true
22 // CHECK: ret i32 1
23 }
24
nan(void)25 int nan(void) {
26 // CHECK: define{{.*}} i32 @nan()
27 return (_Bool)(0.0f / 0.0f) ? 1 : -1; // NaN -> true
28 // CHECK: ret i32 1
29 }
30