xref: /llvm-project/clang/test/C/C11/n1391.c (revision ba79c2a25069f09728625982c424920452fa6b83)
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