[Openmp-dev] Regression in clang-9 for external declare target variable

Joachim Protze via Openmp-dev openmp-dev at lists.llvm.org
Wed Dec 18 10:29:48 PST 2019


Hi all,

we think, we found a regression in clang/9:


#pragma omp declare target
int counter = 0;
#pragma omp end declare target

int main(){
     #pragma omp target
	counter++;
     return 0;
}


The code compiles with clang/7 and clang/8, but fails with clang/9:


clang -fopenmp -fopenmp-targets=x86_64 declare-var.c
/usr/bin/ld: /tmp/declare-var-28ddc5.o: relocation R_X86_64_PC32 against 
symbol `counter' can not be used when making a shared object; recompile 
with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
/usr/bin/ld: cannot find /tmp/declare-var-e0fa25.out
/usr/bin/ld: cannot find /tmp/declare-var-e0fa25.out


Is this intended behavior?
The error goes away, when making counter static.

Best
Joachim


More information about the Openmp-dev mailing list