forked from OSchip/llvm-project
Revert "[OPENMP] Fix PR38026: Link -latomic when -fopenmp is used."
This reverts commit r336467: libatomic is not available on all Linux systems and this commit completely breaks OpenMP on them, even if there are no atomic operations or all of them can be lowered to hardware instructions. See http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20180716/234816.html for post-commit discussion. llvm-svn: 337722
This commit is contained in:
parent
2ea81639bd
commit
3f659e8731
|
@ -479,7 +479,6 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
|
||||
bool WantPthread = Args.hasArg(options::OPT_pthread) ||
|
||||
Args.hasArg(options::OPT_pthreads);
|
||||
bool WantAtomic = false;
|
||||
|
||||
// FIXME: Only pass GompNeedsRT = true for platforms with libgomp that
|
||||
// require librt. Most modern Linux platforms do, but some may not.
|
||||
|
@ -488,16 +487,13 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
/* GompNeedsRT= */ true))
|
||||
// OpenMP runtimes implies pthreads when using the GNU toolchain.
|
||||
// FIXME: Does this really make sense for all GNU toolchains?
|
||||
WantAtomic = WantPthread = true;
|
||||
WantPthread = true;
|
||||
|
||||
AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
|
||||
|
||||
if (WantPthread && !isAndroid)
|
||||
CmdArgs.push_back("-lpthread");
|
||||
|
||||
if (WantAtomic)
|
||||
CmdArgs.push_back("-latomic");
|
||||
|
||||
if (Args.hasArg(options::OPT_fsplit_stack))
|
||||
CmdArgs.push_back("--wrap=pthread_create");
|
||||
|
||||
|
|
|
@ -8,14 +8,14 @@
|
|||
// RUN: | FileCheck --check-prefix=CHECK-LD-32 %s
|
||||
// CHECK-LD-32: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-LD-32: "-l[[DEFAULT_OPENMP_LIB:[^"]*]]"
|
||||
// CHECK-LD-32: "-lpthread" "-latomic" "-lc"
|
||||
// CHECK-LD-32: "-lpthread" "-lc"
|
||||
//
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -fopenmp -target x86_64-unknown-linux -rtlib=platform \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-LD-64 %s
|
||||
// CHECK-LD-64: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-LD-64: "-l[[DEFAULT_OPENMP_LIB:[^"]*]]"
|
||||
// CHECK-LD-64: "-lpthread" "-latomic" "-lc"
|
||||
// CHECK-LD-64: "-lpthread" "-lc"
|
||||
//
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -fopenmp=libgomp -target i386-unknown-linux -rtlib=platform \
|
||||
|
@ -27,7 +27,7 @@
|
|||
// SIMD-ONLY2-NOT: liomp
|
||||
// CHECK-GOMP-LD-32: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-GOMP-LD-32: "-lgomp" "-lrt"
|
||||
// CHECK-GOMP-LD-32: "-lpthread" "-latomic" "-lc"
|
||||
// CHECK-GOMP-LD-32: "-lpthread" "-lc"
|
||||
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 -fopenmp-simd -target i386-unknown-linux -rtlib=platform | FileCheck --check-prefix SIMD-ONLY2 %s
|
||||
// SIMD-ONLY2-NOT: lgomp
|
||||
|
@ -39,21 +39,21 @@
|
|||
// RUN: | FileCheck --check-prefix=CHECK-GOMP-LD-64 %s
|
||||
// CHECK-GOMP-LD-64: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-GOMP-LD-64: "-lgomp" "-lrt"
|
||||
// CHECK-GOMP-LD-64: "-lpthread" "-latomic" "-lc"
|
||||
// CHECK-GOMP-LD-64: "-lpthread" "-lc"
|
||||
//
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -fopenmp -target i386-unknown-linux -rtlib=platform \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-IOMP5-LD-32 %s
|
||||
// CHECK-IOMP5-LD-32: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-IOMP5-LD-32: "-l[[DEFAULT_OPENMP_LIB:[^"]*]]"
|
||||
// CHECK-IOMP5-LD-32: "-lpthread" "-latomic" "-lc"
|
||||
// CHECK-IOMP5-LD-32: "-lpthread" "-lc"
|
||||
//
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -fopenmp -target x86_64-unknown-linux -rtlib=platform \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-IOMP5-LD-64 %s
|
||||
// CHECK-IOMP5-LD-64: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-IOMP5-LD-64: "-l[[DEFAULT_OPENMP_LIB:[^"]*]]"
|
||||
// CHECK-IOMP5-LD-64: "-lpthread" "-latomic" "-lc"
|
||||
// CHECK-IOMP5-LD-64: "-lpthread" "-lc"
|
||||
//
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -fopenmp=lib -target i386-unknown-linux \
|
||||
|
@ -71,7 +71,7 @@
|
|||
// RUN: | FileCheck --check-prefix=CHECK-LD-OVERRIDE-32 %s
|
||||
// CHECK-LD-OVERRIDE-32: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-LD-OVERRIDE-32: "-lgomp" "-lrt"
|
||||
// CHECK-LD-OVERRIDE-32: "-lpthread" "-latomic" "-lc"
|
||||
// CHECK-LD-OVERRIDE-32: "-lpthread" "-lc"
|
||||
//
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -fopenmp -fopenmp=libgomp -target x86_64-unknown-linux \
|
||||
|
@ -79,7 +79,7 @@
|
|||
// RUN: | FileCheck --check-prefix=CHECK-LD-OVERRIDE-64 %s
|
||||
// CHECK-LD-OVERRIDE-64: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-LD-OVERRIDE-64: "-lgomp" "-lrt"
|
||||
// CHECK-LD-OVERRIDE-64: "-lpthread" "-latomic" "-lc"
|
||||
// CHECK-LD-OVERRIDE-64: "-lpthread" "-lc"
|
||||
//
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -fopenmp=libomp -target x86_64-msvc-win32 -rtlib=platform \
|
||||
|
|
Loading…
Reference in New Issue