diff options
author | Anastasia Stulova <anastasia.stulova@arm.com> | 2021-03-03 19:00:55 +0000 |
---|---|---|
committer | Anastasia Stulova <anastasia.stulova@arm.com> | 2021-03-24 13:07:04 +0000 |
commit | d1c8a151df830c6c727f0bb7d33774bd3eb96824 (patch) | |
tree | 9bae6c87c7ae299856492f7559b28e1cbaa9f904 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 2f1b43908975a01db12dcacf8b34bce350a73fb1 (diff) | |
download | llvm-d1c8a151df830c6c727f0bb7d33774bd3eb96824.zip llvm-d1c8a151df830c6c727f0bb7d33774bd3eb96824.tar.gz llvm-d1c8a151df830c6c727f0bb7d33774bd3eb96824.tar.bz2 |
[OpenCL] Added distinct file extension for C++ for OpenCL.
Files compiled with C++ for OpenCL mode can now have a distinct
file extension - clcpp, then clang driver picks the compilation
mode automatically (-x clcpp) without the use of -cl-std=clc++.
Differential Revision: https://reviews.llvm.org/D96771
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index ffaf368..56aa4b4 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -520,7 +520,9 @@ static bool FixupInvocation(CompilerInvocation &Invocation, static unsigned getOptimizationLevel(ArgList &Args, InputKind IK, DiagnosticsEngine &Diags) { unsigned DefaultOpt = llvm::CodeGenOpt::None; - if (IK.getLanguage() == Language::OpenCL && !Args.hasArg(OPT_cl_opt_disable)) + if ((IK.getLanguage() == Language::OpenCL || + IK.getLanguage() == Language::OpenCLCXX) && + !Args.hasArg(OPT_cl_opt_disable)) DefaultOpt = llvm::CodeGenOpt::Default; if (Arg *A = Args.getLastArg(options::OPT_O_Group)) { @@ -2510,6 +2512,9 @@ static void GenerateFrontendArgs(const FrontendOptions &Opts, case Language::OpenCL: Lang = "cl"; break; + case Language::OpenCLCXX: + Lang = "clcpp"; + break; case Language::CUDA: Lang = "cuda"; break; @@ -2698,6 +2703,7 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, DashX = llvm::StringSwitch<InputKind>(XValue) .Case("c", Language::C) .Case("cl", Language::OpenCL) + .Case("clcpp", Language::OpenCLCXX) .Case("cuda", Language::CUDA) .Case("hip", Language::HIP) .Case("c++", Language::CXX) @@ -3063,6 +3069,9 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK, case Language::OpenCL: LangStd = LangStandard::lang_opencl10; break; + case Language::OpenCLCXX: + LangStd = LangStandard::lang_openclcpp; + break; case Language::CUDA: LangStd = LangStandard::lang_cuda; break; @@ -3198,7 +3207,11 @@ static bool IsInputCompatibleWithStandard(InputKind IK, return S.getLanguage() == Language::C; case Language::OpenCL: - return S.getLanguage() == Language::OpenCL; + return S.getLanguage() == Language::OpenCL || + S.getLanguage() == Language::OpenCLCXX; + + case Language::OpenCLCXX: + return S.getLanguage() == Language::OpenCLCXX; case Language::CXX: case Language::ObjCXX: @@ -3235,6 +3248,8 @@ static const StringRef GetInputKindName(InputKind IK) { return "Objective-C++"; case Language::OpenCL: return "OpenCL"; + case Language::OpenCLCXX: + return "C++ for OpenCL"; case Language::CUDA: return "CUDA"; case Language::RenderScript: |