]> granicus.if.org Git - clang/commitdiff
[OpenMP][Bugfix] Move double and float versions of abs under c++ macro
authorGheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com>
Wed, 15 May 2019 20:28:23 +0000 (20:28 +0000)
committerGheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com>
Wed, 15 May 2019 20:28:23 +0000 (20:28 +0000)
Summary:
This is a fix for the reported bug:

[[ https://bugs.llvm.org/show_bug.cgi?id=41861 | 41861 ]]

abs functions need to be moved under the c++ macro to avoid conflicts with included headers.

Reviewers: tra, jdoerfert, hfinkel, ABataev, caomhin

Reviewed By: jdoerfert

Subscribers: guansong, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D61959

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@360809 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Headers/__clang_cuda_cmath.h
lib/Headers/__clang_cuda_math_forward_declares.h
test/Headers/Inputs/include/cstdlib
test/Headers/nvptx_device_cmath_functions.c
test/Headers/nvptx_device_cmath_functions.cpp
test/Headers/nvptx_device_cmath_functions_cxx17.cpp
test/Headers/nvptx_device_math_functions.c
test/Headers/nvptx_device_math_functions.cpp
test/Headers/nvptx_device_math_functions_cxx17.cpp

index 65caf02cebefad624607795d19a6d7a034219e81..c570451c77f7aec3020a06f3052caf1b3e67bc64 100644 (file)
@@ -48,9 +48,9 @@
 #if !(defined(_OPENMP) && defined(__cplusplus))
 __DEVICE__ long long abs(long long __n) { return ::llabs(__n); }
 __DEVICE__ long abs(long __n) { return ::labs(__n); }
-#endif
 __DEVICE__ float abs(float __x) { return ::fabsf(__x); }
 __DEVICE__ double abs(double __x) { return ::fabs(__x); }
+#endif
 __DEVICE__ float acos(float __x) { return ::acosf(__x); }
 __DEVICE__ float asin(float __x) { return ::asinf(__x); }
 __DEVICE__ float atan(float __x) { return ::atanf(__x); }
index 1b6ec105316218f24d858cfc2b39f1d837eece22..c94c3b7518fde08347f9527a9911ebe1f1645da4 100644 (file)
 #if !(defined(_OPENMP) && defined(__cplusplus))
 __DEVICE__ long abs(long);
 __DEVICE__ long long abs(long long);
-#endif
-__DEVICE__ int abs(int) __NOEXCEPT;
 __DEVICE__ double abs(double);
 __DEVICE__ float abs(float);
+#endif
+__DEVICE__ int abs(int) __NOEXCEPT;
 __DEVICE__ double acos(double);
 __DEVICE__ float acos(float);
 __DEVICE__ double acosh(double);
index f34673e7ad9fc00a7e5ea207ceac02051a566001..f038a6d90cb0e7a75a222afd6a7d23379da7bd1b 100644 (file)
@@ -3,9 +3,11 @@
 #if __cplusplus >= 201703L
 extern int abs (int __x) throw()  __attribute__ ((__const__)) ;
 extern long int labs (long int __x) throw() __attribute__ ((__const__)) ;
+extern float fabs (float __x) throw() __attribute__ ((__const__)) ;
 #else
 extern int abs (int __x) __attribute__ ((__const__)) ;
 extern long int labs (long int __x) __attribute__ ((__const__)) ;
+extern float fabs (float __x) __attribute__ ((__const__)) ;
 #endif
 
 namespace std
index 54e60a1da2a7ad790b84841f13b21ae6f873ecb9..23265d00f13d00135f59e0e9d4ecd0b7fde6af09 100644 (file)
@@ -17,5 +17,9 @@ void test_sqrt(double a1) {
     double l2 = pow(a1, a1);
     // CHECK-YES: call double @__nv_modf(double
     double l3 = modf(a1 + 3.5, &a1);
+    // CHECK-YES: call double @__nv_fabs(double
+    double l4 = fabs(a1);
+    // CHECK-YES: call i32 @__nv_abs(i32
+    double l5 = abs((int)a1);
   }
 }
index 48795feb9bc3ae5d409f616cc4b803c9ae072fd0..0787b9406261acc1c6bff6b83924880c43732d10 100644 (file)
@@ -18,5 +18,9 @@ void test_sqrt(double a1) {
     double l2 = pow(a1, a1);
     // CHECK-YES: call double @__nv_modf(double
     double l3 = modf(a1 + 3.5, &a1);
+    // CHECK-YES: call double @__nv_fabs(double
+    double l4 = fabs(a1);
+    // CHECK-YES: call i32 @__nv_abs(i32
+    double l5 = abs((int)a1);
   }
 }
index 89b997aba375dc3476a394043b0adc6a29e72908..0b715fea01f1b62772688906097dc9b14d778806 100644 (file)
@@ -18,5 +18,9 @@ void test_sqrt(double a1) {
     double l2 = pow(a1, a1);
     // CHECK-YES: call double @__nv_modf(double
     double l3 = modf(a1 + 3.5, &a1);
+    // CHECK-YES: call double @__nv_fabs(double
+    double l4 = fabs(a1);
+    // CHECK-YES: call i32 @__nv_abs(i32
+    double l5 = abs((int)a1);
   }
 }
index 22767d0cdeb98d01f24d4ab8ea575c48e2f59fb5..3cc1be51ce88e486eb4d658e52f6db6ae0b88be2 100644 (file)
@@ -17,5 +17,9 @@ void test_sqrt(double a1) {
     double l2 = pow(a1, a1);
     // CHECK-YES: call double @__nv_modf(double
     double l3 = modf(a1 + 3.5, &a1);
+    // CHECK-YES: call double @__nv_fabs(double
+    double l4 = fabs(a1);
+    // CHECK-YES: call i32 @__nv_abs(i32
+    double l5 = abs((int)a1);
   }
 }
index a4f637ba6b38fae721096858ad162b207dd21c1d..e0f18263f04e4e0e39fb1800c67a74227a279f49 100644 (file)
@@ -18,5 +18,9 @@ void test_sqrt(double a1) {
     double l2 = pow(a1, a1);
     // CHECK-YES: call double @__nv_modf(double
     double l3 = modf(a1 + 3.5, &a1);
+    // CHECK-YES: call double @__nv_fabs(double
+    double l4 = fabs(a1);
+    // CHECK-YES: call i32 @__nv_abs(i32
+    double l5 = abs((int)a1);
   }
 }
index f19d07a7cf22f51cbace14d694940a19967c6644..e3c0b1241b8cbe8ab0f2e54d55b6d0c5c265ebeb 100644 (file)
@@ -18,5 +18,9 @@ void test_sqrt(double a1) {
     double l2 = pow(a1, a1);
     // CHECK-YES: call double @__nv_modf(double
     double l3 = modf(a1 + 3.5, &a1);
+    // CHECK-YES: call double @__nv_fabs(double
+    double l4 = fabs(a1);
+    // CHECK-YES: call i32 @__nv_abs(i32
+    double l5 = abs((int)a1);
   }
 }