
D70365 allows us to make attributes default. This is a follow up to actually make nosync, nofree and willreturn default. The approach we chose, for now, is to opt-in to default attributes to avoid introducing problems to target specific intrinsics. Intrinsics with default attributes can be created using `DefaultAttrsIntrinsic` class.
16 lines
639 B
C
16 lines
639 B
C
// RUN: %clang_cc1 -fmath-errno -triple x86_64-apple-darwin %s -emit-llvm -o - | FileCheck %s --check-prefix=HAS_ERRNO
|
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - | FileCheck %s --check-prefix=NO_ERRNO
|
|
|
|
float foo(float X) {
|
|
// HAS_ERRNO: call float @sqrtf(float
|
|
// NO_ERRNO: call float @llvm.sqrt.f32(float
|
|
return __builtin_sqrtf(X);
|
|
}
|
|
|
|
// HAS_ERRNO: declare float @sqrtf(float) [[ATTR:#[0-9]+]]
|
|
// HAS_ERRNO-NOT: attributes [[ATTR]] = {{{.*}} readnone
|
|
|
|
// NO_ERRNO: declare float @llvm.sqrt.f32(float) [[ATTR:#[0-9]+]]
|
|
// NO_ERRNO: attributes [[ATTR]] = { nofree nosync nounwind readnone {{.*}}}
|
|
|