[OPENMP] Added option -fopenmp=libiomp5|libgomp
llvm-svn: 203081
This commit is contained in:
@@ -741,7 +741,8 @@ def fno_objc_nonfragile_abi : Flag<["-"], "fno-objc-nonfragile-abi">, Group<f_Gr
|
|||||||
|
|
||||||
def fobjc_sender_dependent_dispatch : Flag<["-"], "fobjc-sender-dependent-dispatch">, Group<f_Group>;
|
def fobjc_sender_dependent_dispatch : Flag<["-"], "fobjc-sender-dependent-dispatch">, Group<f_Group>;
|
||||||
def fomit_frame_pointer : Flag<["-"], "fomit-frame-pointer">, Group<f_Group>;
|
def fomit_frame_pointer : Flag<["-"], "fomit-frame-pointer">, Group<f_Group>;
|
||||||
def fopenmp : Flag<["-"], "fopenmp">, Group<f_Group>, Flags<[CC1Option]>;
|
def fopenmp : Flag<["-"], "fopenmp">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>;
|
||||||
|
def fopenmp_EQ : Joined<["-"], "fopenmp=">, Group<f_Group>, Flags<[CC1Option]>;
|
||||||
def fno_optimize_sibling_calls : Flag<["-"], "fno-optimize-sibling-calls">, Group<f_Group>;
|
def fno_optimize_sibling_calls : Flag<["-"], "fno-optimize-sibling-calls">, Group<f_Group>;
|
||||||
def foptimize_sibling_calls : Flag<["-"], "foptimize-sibling-calls">, Group<f_Group>;
|
def foptimize_sibling_calls : Flag<["-"], "foptimize-sibling-calls">, Group<f_Group>;
|
||||||
def force__cpusubtype__ALL : Flag<["-"], "force_cpusubtype_ALL">;
|
def force__cpusubtype__ALL : Flag<["-"], "force_cpusubtype_ALL">;
|
||||||
|
|||||||
@@ -5190,6 +5190,12 @@ void darwin::Link::AddLinkArgs(Compilation &C,
|
|||||||
Args.AddLastArg(CmdArgs, options::OPT_Mach);
|
Args.AddLastArg(CmdArgs, options::OPT_Mach);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum LibOpenMP {
|
||||||
|
LibUnknown,
|
||||||
|
LibGOMP,
|
||||||
|
LibIOMP5
|
||||||
|
};
|
||||||
|
|
||||||
void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
const InputInfo &Output,
|
const InputInfo &Output,
|
||||||
const InputInfoList &Inputs,
|
const InputInfoList &Inputs,
|
||||||
@@ -5241,9 +5247,28 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
|||||||
|
|
||||||
Args.AddAllArgs(CmdArgs, options::OPT_L);
|
Args.AddAllArgs(CmdArgs, options::OPT_L);
|
||||||
|
|
||||||
if (Args.hasArg(options::OPT_fopenmp))
|
LibOpenMP UsedOpenMPLib = LibUnknown;
|
||||||
// This is more complicated in gcc...
|
if (Args.hasArg(options::OPT_fopenmp)) {
|
||||||
|
UsedOpenMPLib = LibGOMP;
|
||||||
|
} else if (const Arg *A = Args.getLastArg(options::OPT_fopenmp_EQ)) {
|
||||||
|
UsedOpenMPLib = llvm::StringSwitch<LibOpenMP>(A->getValue())
|
||||||
|
.Case("libgomp", LibGOMP)
|
||||||
|
.Case("libiomp5", LibIOMP5)
|
||||||
|
.Default(LibUnknown);
|
||||||
|
if (UsedOpenMPLib == LibUnknown)
|
||||||
|
getToolChain().getDriver().Diag(diag::err_drv_unsupported_option_argument)
|
||||||
|
<< A->getOption().getName() << A->getValue();
|
||||||
|
}
|
||||||
|
switch (UsedOpenMPLib) {
|
||||||
|
case LibGOMP:
|
||||||
CmdArgs.push_back("-lgomp");
|
CmdArgs.push_back("-lgomp");
|
||||||
|
break;
|
||||||
|
case LibIOMP5:
|
||||||
|
CmdArgs.push_back("-liomp5");
|
||||||
|
break;
|
||||||
|
case LibUnknown:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
|
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
|
||||||
|
|
||||||
@@ -6856,19 +6881,36 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
|||||||
if (Args.hasArg(options::OPT_static))
|
if (Args.hasArg(options::OPT_static))
|
||||||
CmdArgs.push_back("--start-group");
|
CmdArgs.push_back("--start-group");
|
||||||
|
|
||||||
bool OpenMP = Args.hasArg(options::OPT_fopenmp);
|
LibOpenMP UsedOpenMPLib = LibUnknown;
|
||||||
if (OpenMP) {
|
if (Args.hasArg(options::OPT_fopenmp)) {
|
||||||
|
UsedOpenMPLib = LibGOMP;
|
||||||
|
} else if (const Arg *A = Args.getLastArg(options::OPT_fopenmp_EQ)) {
|
||||||
|
UsedOpenMPLib = llvm::StringSwitch<LibOpenMP>(A->getValue())
|
||||||
|
.Case("libgomp", LibGOMP)
|
||||||
|
.Case("libiomp5", LibIOMP5)
|
||||||
|
.Default(LibUnknown);
|
||||||
|
if (UsedOpenMPLib == LibUnknown)
|
||||||
|
D.Diag(diag::err_drv_unsupported_option_argument)
|
||||||
|
<< A->getOption().getName() << A->getValue();
|
||||||
|
}
|
||||||
|
switch (UsedOpenMPLib) {
|
||||||
|
case LibGOMP:
|
||||||
CmdArgs.push_back("-lgomp");
|
CmdArgs.push_back("-lgomp");
|
||||||
|
|
||||||
// FIXME: Exclude this for platforms with libgomp that don't require
|
// FIXME: Exclude this for platforms with libgomp that don't require
|
||||||
// librt. Most modern Linux platforms require it, but some may not.
|
// librt. Most modern Linux platforms require it, but some may not.
|
||||||
CmdArgs.push_back("-lrt");
|
CmdArgs.push_back("-lrt");
|
||||||
|
break;
|
||||||
|
case LibIOMP5:
|
||||||
|
CmdArgs.push_back("-liomp5");
|
||||||
|
break;
|
||||||
|
case LibUnknown:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
|
AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
|
||||||
|
|
||||||
if (Args.hasArg(options::OPT_pthread) ||
|
if (Args.hasArg(options::OPT_pthread) ||
|
||||||
Args.hasArg(options::OPT_pthreads) || OpenMP)
|
Args.hasArg(options::OPT_pthreads) || UsedOpenMPLib == LibGOMP)
|
||||||
CmdArgs.push_back("-lpthread");
|
CmdArgs.push_back("-lpthread");
|
||||||
|
|
||||||
CmdArgs.push_back("-lc");
|
CmdArgs.push_back("-lc");
|
||||||
|
|||||||
@@ -1431,8 +1431,12 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
|
|||||||
Opts.setMSPointerToMemberRepresentationMethod(InheritanceModel);
|
Opts.setMSPointerToMemberRepresentationMethod(InheritanceModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if -fopenmp is specified.
|
// Check if -fopenmp= is specified.
|
||||||
Opts.OpenMP = Args.hasArg(OPT_fopenmp);
|
if (const Arg *A = Args.getLastArg(options::OPT_fopenmp_EQ)) {
|
||||||
|
Opts.OpenMP = llvm::StringSwitch<bool>(A->getValue())
|
||||||
|
.Case("libiomp5", true)
|
||||||
|
.Default(false);
|
||||||
|
}
|
||||||
|
|
||||||
// Record whether the __DEPRECATED define was requested.
|
// Record whether the __DEPRECATED define was requested.
|
||||||
Opts.Deprecated = Args.hasFlag(OPT_fdeprecated_macro,
|
Opts.Deprecated = Args.hasFlag(OPT_fdeprecated_macro,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// Test the that the driver produces reasonable linker invocations with
|
// Test the that the driver produces reasonable linker invocations with
|
||||||
// -fopenmp.
|
// -fopenmp or -fopenmp=libiomp5|libgomp.
|
||||||
//
|
//
|
||||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||||
// RUN: -fopenmp -target i386-unknown-linux \
|
// RUN: -fopenmp -target i386-unknown-linux \
|
||||||
@@ -14,3 +14,56 @@
|
|||||||
// CHECK-LD-64: "{{.*}}ld{{(.exe)?}}"
|
// CHECK-LD-64: "{{.*}}ld{{(.exe)?}}"
|
||||||
// CHECK-LD-64: "-lgomp" "-lrt" "-lgcc"
|
// CHECK-LD-64: "-lgomp" "-lrt" "-lgcc"
|
||||||
// CHECK-LD-64: "-lpthread" "-lc"
|
// CHECK-LD-64: "-lpthread" "-lc"
|
||||||
|
//
|
||||||
|
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||||
|
// RUN: -fopenmp=libgomp -target i386-unknown-linux \
|
||||||
|
// RUN: | FileCheck --check-prefix=CHECK-GOMP-LD-32 %s
|
||||||
|
// CHECK-GOMP-LD-32: "{{.*}}ld{{(.exe)?}}"
|
||||||
|
// CHECK-GOMP-LD-32: "-lgomp" "-lrt" "-lgcc"
|
||||||
|
// CHECK-GOMP-LD-32: "-lpthread" "-lc"
|
||||||
|
//
|
||||||
|
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||||
|
// RUN: -fopenmp=libgomp -target x86_64-unknown-linux \
|
||||||
|
// RUN: | FileCheck --check-prefix=CHECK-GOMP-LD-64 %s
|
||||||
|
// CHECK-GOMP-LD-64: "{{.*}}ld{{(.exe)?}}"
|
||||||
|
// CHECK-GOMP-LD-64: "-lgomp" "-lrt" "-lgcc"
|
||||||
|
// CHECK-GOMP-LD-64: "-lpthread" "-lc"
|
||||||
|
//
|
||||||
|
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||||
|
// RUN: -fopenmp=libiomp5 -target i386-unknown-linux \
|
||||||
|
// RUN: | FileCheck --check-prefix=CHECK-IOMP5-LD-32 %s
|
||||||
|
// CHECK-IOMP5-LD-32: "{{.*}}ld{{(.exe)?}}"
|
||||||
|
// CHECK-IOMP5-LD-32: "-liomp5"
|
||||||
|
//
|
||||||
|
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||||
|
// RUN: -fopenmp=libiomp5 -target x86_64-unknown-linux \
|
||||||
|
// RUN: | FileCheck --check-prefix=CHECK-IOMP5-LD-64 %s
|
||||||
|
// CHECK-IOMP5-LD-64: "{{.*}}ld{{(.exe)?}}"
|
||||||
|
// CHECK-IOMP5-LD-64: "-liomp5"
|
||||||
|
//
|
||||||
|
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||||
|
// RUN: -fopenmp=lib -target i386-unknown-linux \
|
||||||
|
// RUN: | FileCheck --check-prefix=CHECK-LIB-LD-32 %s
|
||||||
|
// CHECK-LIB-LD-32: error: unsupported argument 'lib' to option 'fopenmp='
|
||||||
|
//
|
||||||
|
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||||
|
// RUN: -fopenmp=lib -target x86_64-unknown-linux \
|
||||||
|
// RUN: | FileCheck --check-prefix=CHECK-LIB-LD-64 %s
|
||||||
|
// CHECK-LIB-LD-64: error: unsupported argument 'lib' to option 'fopenmp='
|
||||||
|
//
|
||||||
|
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||||
|
// RUN: -fopenmp -fopenmp=libiomp5 -target i386-unknown-linux \
|
||||||
|
// RUN: | FileCheck --check-prefix=CHECK-LD-WARN-32 %s
|
||||||
|
// CHECK-LD-WARN-32: warning: argument unused during compilation: '-fopenmp=libiomp5'
|
||||||
|
// CHECK-LD-WARN-32: "{{.*}}ld{{(.exe)?}}"
|
||||||
|
// CHECK-LD-WARN-32: "-lgomp" "-lrt" "-lgcc"
|
||||||
|
// CHECK-LD-WARN-32: "-lpthread" "-lc"
|
||||||
|
//
|
||||||
|
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||||
|
// RUN: -fopenmp -fopenmp=libiomp5 -target x86_64-unknown-linux \
|
||||||
|
// RUN: | FileCheck --check-prefix=CHECK-LD-WARN-64 %s
|
||||||
|
// CHECK-LD-WARN-64: warning: argument unused during compilation: '-fopenmp=libiomp5'
|
||||||
|
// CHECK-LD-WARN-64: "{{.*}}ld{{(.exe)?}}"
|
||||||
|
// CHECK-LD-WARN-64: "-lgomp" "-lrt" "-lgcc"
|
||||||
|
// CHECK-LD-WARN-64: "-lpthread" "-lc"
|
||||||
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -o - %s
|
// RUN: %clang_cc1 -verify -fopenmp=libiomp5 -ferror-limit 100 -o - %s
|
||||||
|
|
||||||
#pragma omp // expected-error {{expected an OpenMP directive}}
|
#pragma omp // expected-error {{expected an OpenMP directive}}
|
||||||
#pragma omp unknown_directive // expected-error {{expected an OpenMP directive}}
|
#pragma omp unknown_directive // expected-error {{expected an OpenMP directive}}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s
|
// RUN: %clang_cc1 -verify -fopenmp=libiomp5 -ast-print %s | FileCheck %s
|
||||||
// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s
|
// RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -std=c++11 -emit-pch -o %t %s
|
||||||
// RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s
|
// RUN: %clang_cc1 -fopenmp=libiomp5 -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s
|
||||||
// expected-no-diagnostics
|
// expected-no-diagnostics
|
||||||
|
|
||||||
#ifndef HEADER
|
#ifndef HEADER
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -o - %s
|
// RUN: %clang_cc1 -verify -fopenmp=libiomp5 -ferror-limit 100 -o - %s
|
||||||
|
|
||||||
void foo();
|
void foo();
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s
|
// RUN: %clang_cc1 -verify -fopenmp=libiomp5 -ferror-limit 100 %s
|
||||||
|
|
||||||
void foo() {
|
void foo() {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s
|
// RUN: %clang_cc1 -verify -fopenmp=libiomp5 -ferror-limit 100 %s
|
||||||
|
|
||||||
void foo() {
|
void foo() {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -std=c++11 -o - %s
|
// RUN: %clang_cc1 -verify -fopenmp=libiomp5 -ferror-limit 100 -std=c++11 -o - %s
|
||||||
|
|
||||||
void foo() {
|
void foo() {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s
|
// RUN: %clang_cc1 -verify -fopenmp=libiomp5 -ferror-limit 100 %s
|
||||||
|
|
||||||
void foo() {
|
void foo() {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s
|
// RUN: %clang_cc1 -verify -fopenmp=libiomp5 -ferror-limit 100 %s
|
||||||
|
|
||||||
void foo() {
|
void foo() {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,32 +1,32 @@
|
|||||||
// RUN: %clang_cc1 -fopenmp -verify -DFOPENMP -o - %s
|
// RUN: %clang_cc1 -fopenmp=libiomp5 -verify -DFOPENMP -o - %s
|
||||||
// RUN: %clang_cc1 -verify -o - %s
|
// RUN: %clang_cc1 -verify -o - %s
|
||||||
// expected-no-diagnostics
|
// expected-no-diagnostics
|
||||||
#ifdef FOPENMP
|
#ifdef FOPENMP
|
||||||
// -fopenmp option is specified
|
// -fopenmp=libiomp5 option is specified
|
||||||
#ifndef _OPENMP
|
#ifndef _OPENMP
|
||||||
#error "No _OPENMP macro is defined with -fopenmp option"
|
#error "No _OPENMP macro is defined with -fopenmp option"
|
||||||
#elsif _OPENMP != 201107
|
#elsif _OPENMP != 201107
|
||||||
#error "_OPENMP has incorrect value"
|
#error "_OPENMP has incorrect value"
|
||||||
#endif //_OPENMP
|
#endif //_OPENMP
|
||||||
#else
|
#else
|
||||||
// No -fopenmp option is specified
|
// No -fopenmp=libiomp5 option is specified
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#error "_OPENMP macro is defined without -fopenmp option"
|
#error "_OPENMP macro is defined without -fopenmp option"
|
||||||
#endif // _OPENMP
|
#endif // _OPENMP
|
||||||
#endif // FOPENMP
|
#endif // FOPENMP
|
||||||
|
|
||||||
// RUN: %clang_cc1 -fopenmp -verify -DFOPENMP -o - %s
|
// RUN: %clang_cc1 -fopenmp=libiomp5 -verify -DFOPENMP -o - %s
|
||||||
// RUN: %clang_cc1 -verify -o - %s
|
// RUN: %clang_cc1 -verify -o - %s
|
||||||
// expected-no-diagnostics
|
// expected-no-diagnostics
|
||||||
#ifdef FOPENMP
|
#ifdef FOPENMP
|
||||||
// -fopenmp option is specified
|
// -fopenmp=libiomp5 option is specified
|
||||||
#ifndef _OPENMP
|
#ifndef _OPENMP
|
||||||
#error "No _OPENMP macro is defined with -fopenmp option"
|
#error "No _OPENMP macro is defined with -fopenmp option"
|
||||||
#elsif _OPENMP != 201107
|
#elsif _OPENMP != 201107
|
||||||
#error "_OPENMP has incorrect value"
|
#error "_OPENMP has incorrect value"
|
||||||
#endif // _OPENMP
|
#endif // _OPENMP
|
||||||
#else
|
#else
|
||||||
// No -fopenmp option is specified
|
// No -fopenmp=libiomp5 option is specified
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#error "_OPENMP macro is defined without -fopenmp option"
|
#error "_OPENMP macro is defined without -fopenmp option"
|
||||||
#endif // _OPENMP
|
#endif // _OPENMP
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s
|
// RUN: %clang_cc1 -verify -fopenmp=libiomp5 -ast-print %s | FileCheck %s
|
||||||
// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s
|
// RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -std=c++11 -emit-pch -o %t %s
|
||||||
// RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s
|
// RUN: %clang_cc1 -fopenmp=libiomp5 -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s
|
||||||
// expected-no-diagnostics
|
// expected-no-diagnostics
|
||||||
|
|
||||||
#ifndef HEADER
|
#ifndef HEADER
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// RUN: %clang_cc1 -fsyntax-only -fopenmp -verify %s
|
// RUN: %clang_cc1 -fsyntax-only -fopenmp=libiomp5 -verify %s
|
||||||
|
|
||||||
// expected-error@+1 {{unexpected OpenMP directive '#pragma omp simd'}}
|
// expected-error@+1 {{unexpected OpenMP directive '#pragma omp simd'}}
|
||||||
#pragma omp simd
|
#pragma omp simd
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s
|
// RUN: %clang_cc1 -verify -fopenmp=libiomp5 -ast-print %s | FileCheck %s
|
||||||
// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s
|
// RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -std=c++11 -emit-pch -o %t %s
|
||||||
// RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print
|
// RUN: %clang_cc1 -fopenmp=libiomp5 -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print
|
||||||
// expected-no-diagnostics
|
// expected-no-diagnostics
|
||||||
|
|
||||||
#ifndef HEADER
|
#ifndef HEADER
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -verify -fopenmp -ferror-limit 100 %s
|
// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -verify -fopenmp=libiomp5 -ferror-limit 100 %s
|
||||||
|
|
||||||
#pragma omp threadprivate // expected-error {{expected '(' after 'threadprivate'}}
|
#pragma omp threadprivate // expected-error {{expected '(' after 'threadprivate'}}
|
||||||
#pragma omp threadprivate( // expected-error {{expected identifier}} expected-error {{expected ')'}} expected-note {{to match this '('}}
|
#pragma omp threadprivate( // expected-error {{expected identifier}} expected-error {{expected ')'}} expected-note {{to match this '('}}
|
||||||
|
|||||||
Reference in New Issue
Block a user