https://bugs.llvm.org/show_bug.cgi?id=42061
Bug ID: 42061
Summary: Math function conflict when using clang++
Product: OpenMP
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: Clang Compiler Support
Assignee: unassignedclangb...@nondot.org
Reporter: csda...@lbl.gov
CC: llvm-bugs@lists.llvm.org
I encounter a math function conflict issue when using clang++. The conflict
does not happen when using clang. I am using LLVM/Clang/OpenMP commits from
today, 29 May 2019. Please see below
csdaley@cgpu03:~/llvm> cat hello.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("hello\n");
return 0;
}
csdaley@cgpu03:~/llvm> clang -fopenmp -fopenmp-targets=nvptx64-nvidia-cuda
hello.c -o hello && ./hello
hello
csdaley@cgpu03:~/llvm> clang++ -fopenmp -fopenmp-targets=nvptx64-nvidia-cuda
hello.c -o hello && ./hello
clang-9: warning: treating 'c' input as 'c++' when in C++ mode, this behavior
is deprecated [-Wdeprecated]
In file included from hello.c:2:
In file included from /opt/gcc/7.3.0/snos/include/g++/stdlib.h:36:
In file included from /opt/gcc/7.3.0/snos/include/g++/cstdlib:77:
/opt/gcc/7.3.0/snos/include/g++/bits/std_abs.h:70:3: error: declaration
conflicts with target of using declaration already in scope
abs(double __x)
^
/project/projectdirs/m1759/csdaley/software/cgpu/llvm/9.0.0-git_20190529/lib/clang/9.0.0/include/__clang_cuda_math_forward_declares.h:50:25:
note: target of using declaration
__DEVICE__ const double abs(const double);
^
/opt/gcc/7.3.0/snos/include/g++/bits/std_abs.h:52:11: note: using declaration
using ::abs;
^
/opt/gcc/7.3.0/snos/include/g++/bits/std_abs.h:74:3: error: declaration
conflicts with target of using declaration already in scope
abs(float __x)
^
/project/projectdirs/m1759/csdaley/software/cgpu/llvm/9.0.0-git_20190529/lib/clang/9.0.0/include/__clang_cuda_math_forward_declares.h:51:24:
note: target of using declaration
__DEVICE__ const float abs(const float);
^
/opt/gcc/7.3.0/snos/include/g++/bits/std_abs.h:52:11: note: using declaration
using ::abs;
^
2 errors generated.
csdaley@cgpu03:~/llvm> clang++ -v
clang version 9.0.0 (https://github.com/llvm-mirror/clang
e420b2015caea78d84601f697fbc33b6116ec622) (https://github.com/llvm-mirror/llvm
36c062c0837bba4d6fc18b4132ab3df6a8cc4113)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir:
/project/projectdirs/m1759/csdaley/software/cgpu/llvm/9.0.0-git_20190529/bin
Found candidate GCC installation:
/opt/gcc/7.3.0/snos/lib/gcc/x86_64-suse-linux/7.3.0
Selected GCC installation: /opt/gcc/7.3.0/snos/lib/gcc/x86_64-suse-linux/7.3.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found CUDA installation: /global/common/cori/software/cuda/9.2, version 9.2
I have been in discussion with Doru and Johannes about this bug. They confirmed
that it is a bug and suggested putting the bug in bugzilla. The latest response
from Doru is
"The fix would be to remove the const float and const double variants of the
abs functions. This unfortunately will break the inclusion of the "random"
header.
I'm not sure how to reconcile those two errors, it looks like those two fixes
cannot coexist. Maybe I'm missing something."
Thanks,
Chris
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs