// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -menable-no-infs -menable-no-nans -fclangir -emit-cir %s -o %t.cir // RUN: FileCheck --check-prefix=CIR --input-file=%t.cir %s // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -menable-no-infs -menable-no-nans -fclangir -emit-llvm %s -o %t-cir.ll // RUN: FileCheck --check-prefix=LLVM --input-file=%t-cir.ll %s // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -menable-no-infs -menable-no-nans -emit-llvm %s -o %t.ll // RUN: FileCheck --check-prefix=LLVM --input-file=%t.ll %s float identity(float x) { return x; } // CIR: cir.func {{.*}} @identity(%arg0: !cir.float {llvm.nofpclass = 519 : i64, llvm.noundef} // CIR-SAME: -> (!cir.float {llvm.nofpclass = 519 : i64}) // LLVM: define {{.*}} nofpclass(nan inf) float @identity(float noundef nofpclass(nan inf) %{{.*}}) double add(double a, double b) { return a + b; } // CIR: cir.func {{.*}} @add(%arg0: !cir.double {llvm.nofpclass = 519 : i64, llvm.noundef} // CIR-SAME: %arg1: !cir.double {llvm.nofpclass = 519 : i64, llvm.noundef} // CIR-SAME: -> (!cir.double {llvm.nofpclass = 519 : i64}) // LLVM: define {{.*}} nofpclass(nan inf) double @add(double noundef nofpclass(nan inf) %{{.*}}, double noundef nofpclass(nan inf) %{{.*}}) _Complex double ret_complex(void) { return 1.0 + 2.0i; } // CIR: cir.func {{.*}} @ret_complex() -> (!cir.complex {llvm.nofpclass = 519 : i64}) // LLVM: define {{.*}} nofpclass(nan inf) { double, double } @ret_complex() int non_fp(int x) { return x; } // CIR: cir.func {{.*}} @non_fp(%arg0: !s32i {llvm.noundef}{{.*}}) -> !s32i // LLVM: define {{.*}} i32 @non_fp(i32 noundef %{{.*}})