mirror of
https://github.com/intel/llvm.git
synced 2026-02-04 03:26:06 +08:00
Basic: make the nan family pure
The nan family of math routines do not rely on global state. They do however depend on their parameter. This fits the description of pure: Functions which have no effects except the return value and their return value depends only on the parameters and/or global variables. Mark the family as `readonly`. llvm-svn: 315968
This commit is contained in:
@@ -1008,9 +1008,9 @@ LIBBUILTIN(modf, "ddd*", "fn", "math.h", ALL_LANGUAGES)
|
||||
LIBBUILTIN(modff, "fff*", "fn", "math.h", ALL_LANGUAGES)
|
||||
LIBBUILTIN(modfl, "LdLdLd*", "fn", "math.h", ALL_LANGUAGES)
|
||||
|
||||
LIBBUILTIN(nan, "dcC*", "fn", "math.h", ALL_LANGUAGES)
|
||||
LIBBUILTIN(nanf, "fcC*", "fn", "math.h", ALL_LANGUAGES)
|
||||
LIBBUILTIN(nanl, "LdcC*", "fn", "math.h", ALL_LANGUAGES)
|
||||
LIBBUILTIN(nan, "dcC*", "fUn", "math.h", ALL_LANGUAGES)
|
||||
LIBBUILTIN(nanf, "fcC*", "fUn", "math.h", ALL_LANGUAGES)
|
||||
LIBBUILTIN(nanl, "LdcC*", "fUn", "math.h", ALL_LANGUAGES)
|
||||
|
||||
LIBBUILTIN(pow, "ddd", "fne", "math.h", ALL_LANGUAGES)
|
||||
LIBBUILTIN(powf, "fff", "fne", "math.h", ALL_LANGUAGES)
|
||||
|
||||
@@ -330,9 +330,9 @@ void *use[] = {
|
||||
// CHECK-NOERRNO: declare double @ldexp(double, i32) [[NUWRN]]
|
||||
// CHECK-NOERRNO: declare float @ldexpf(float, i32) [[NUWRN]]
|
||||
// CHECK-NOERRNO: declare x86_fp80 @ldexpl(x86_fp80, i32) [[NUWRN]]
|
||||
// CHECK-NOERRNO: declare double @nan(i8*) [[NUW:#[0-9]+]]
|
||||
// CHECK-NOERRNO: declare float @nanf(i8*) [[NUW]]
|
||||
// CHECK-NOERRNO: declare x86_fp80 @nanl(i8*) [[NUW]]
|
||||
// CHECK-NOERRNO: declare double @nan(i8*) [[NUWRO:#[0-9]+]]
|
||||
// CHECK-NOERRNO: declare float @nanf(i8*) [[NUWRO]]
|
||||
// CHECK-NOERRNO: declare x86_fp80 @nanl(i8*) [[NUWRO]]
|
||||
// CHECK-NOERRNO: declare double @pow(double, double) [[NUWRN]]
|
||||
// CHECK-NOERRNO: declare float @powf(float, float) [[NUWRN]]
|
||||
// CHECK-NOERRNO: declare x86_fp80 @powl(x86_fp80, x86_fp80) [[NUWRN]]
|
||||
@@ -539,9 +539,9 @@ void *use[] = {
|
||||
// CHECK-ERRNO: declare double @fabs(double) [[NUWRN]]
|
||||
// CHECK-ERRNO: declare float @fabsf(float) [[NUWRN]]
|
||||
// CHECK-ERRNO: declare x86_fp80 @fabsl(x86_fp80) [[NUWRN]]
|
||||
// CHECK-ERRNO: declare double @nan(i8*) [[NUW:#[0-9]+]]
|
||||
// CHECK-ERRNO: declare float @nanf(i8*) [[NUW]]
|
||||
// CHECK-ERRNO: declare x86_fp80 @nanl(i8*) [[NUW]]
|
||||
// CHECK-ERRNO: declare double @nan(i8*) [[NUWRO:#[0-9]+]]
|
||||
// CHECK-ERRNO: declare float @nanf(i8*) [[NUWRO]]
|
||||
// CHECK-ERRNO: declare x86_fp80 @nanl(i8*) [[NUWRO]]
|
||||
// CHECK-ERRNO: declare double @ceil(double) [[NUWRN]]
|
||||
// CHECK-ERRNO: declare float @ceilf(float) [[NUWRN]]
|
||||
// CHECK-ERRNO: declare x86_fp80 @ceill(x86_fp80) [[NUWRN]]
|
||||
@@ -615,11 +615,7 @@ void *use[] = {
|
||||
// CHECK-ERRNO: declare <2 x float> @ctanhf(<2 x float>) [[NUWRN]]
|
||||
|
||||
// CHECK-NOERRNO: attributes [[NUWRN]] = { nounwind readnone{{.*}} }
|
||||
// CHECK-NOERRNO: attributes [[NUW]] = { nounwind
|
||||
// CHECK-NOERRNO-NOT: readnone
|
||||
// CHECK-NOERRNO-SAME: {{.*}} }
|
||||
// CHECK-NOERRNO: attributes [[NUWRO]] = { nounwind readonly{{.*}} }
|
||||
|
||||
// CHECK-ERRNO: attributes [[NUW]] = { nounwind
|
||||
// CHECK-ERRNO-NOT: readnone
|
||||
// CHECK-ERRNO-SAME: {{.*}} }
|
||||
// CHECK-ERRNO: attributes [[NUWRN]] = { nounwind readnone{{.*}} }
|
||||
// CHECK-ERRNO: attributes [[NUWRO]] = { nounwind readonly{{.*}} }
|
||||
|
||||
Reference in New Issue
Block a user