Author: svenvh Date: Tue May 8 06:47:43 2018 New Revision: 331766 URL: http://llvm.org/viewvc/llvm-project?rev=331766&view=rev Log: [OpenCL] Factor out language version printing
Generate a printable OpenCL language version number in a single place and select between the OpenCL C or OpenCL C++ version accordingly. Differential Revision: https://reviews.llvm.org/D46382 Modified: cfe/trunk/include/clang/Basic/LangOptions.h cfe/trunk/lib/Basic/LangOptions.cpp cfe/trunk/lib/Frontend/CompilerInvocation.cpp cfe/trunk/lib/Parse/ParseDecl.cpp Modified: cfe/trunk/include/clang/Basic/LangOptions.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/LangOptions.h?rev=331766&r1=331765&r2=331766&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/LangOptions.h (original) +++ cfe/trunk/include/clang/Basic/LangOptions.h Tue May 8 06:47:43 2018 @@ -254,6 +254,9 @@ public: bool assumeFunctionsAreConvergent() const { return (CUDA && CUDAIsDevice) || OpenCL; } + + /// \brief Return the OpenCL C or C++ version as a VersionTuple. + VersionTuple getOpenCLVersionTuple() const; }; /// \brief Floating point control options Modified: cfe/trunk/lib/Basic/LangOptions.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/LangOptions.cpp?rev=331766&r1=331765&r2=331766&view=diff ============================================================================== --- cfe/trunk/lib/Basic/LangOptions.cpp (original) +++ cfe/trunk/lib/Basic/LangOptions.cpp Tue May 8 06:47:43 2018 @@ -43,3 +43,8 @@ bool LangOptions::isNoBuiltinFunc(String return true; return false; } + +VersionTuple LangOptions::getOpenCLVersionTuple() const { + const int Ver = OpenCLCPlusPlus ? OpenCLCPlusPlusVersion : OpenCLVersion; + return VersionTuple(Ver / 100, (Ver % 100) / 10); +} Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=331766&r1=331765&r2=331766&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Tue May 8 06:47:43 2018 @@ -76,7 +76,6 @@ #include "llvm/Support/Path.h" #include "llvm/Support/Process.h" #include "llvm/Support/Regex.h" -#include "llvm/Support/ScopedPrinter.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Target/TargetOptions.h" #include <algorithm> @@ -2157,11 +2156,9 @@ static void ParseLangArgs(LangOptions &O // this option was added for compatibility with OpenCL 1.0. if (Args.getLastArg(OPT_cl_strict_aliasing) && Opts.OpenCLVersion > 100) { - std::string VerSpec = llvm::to_string(Opts.OpenCLVersion / 100) + - std::string(".") + - llvm::to_string((Opts.OpenCLVersion % 100) / 10); Diags.Report(diag::warn_option_invalid_ocl_version) - << VerSpec << Args.getLastArg(OPT_cl_strict_aliasing)->getAsString(Args); + << Opts.getOpenCLVersionTuple().getAsString() + << Args.getLastArg(OPT_cl_strict_aliasing)->getAsString(Args); } // We abuse '-f[no-]gnu-keywords' to force overriding all GNU-extension Modified: cfe/trunk/lib/Parse/ParseDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDecl.cpp?rev=331766&r1=331765&r2=331766&view=diff ============================================================================== --- cfe/trunk/lib/Parse/ParseDecl.cpp (original) +++ cfe/trunk/lib/Parse/ParseDecl.cpp Tue May 8 06:47:43 2018 @@ -29,7 +29,6 @@ #include "llvm/ADT/SmallSet.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringSwitch.h" -#include "llvm/Support/ScopedPrinter.h" using namespace clang; @@ -3806,11 +3805,8 @@ void Parser::ParseDeclarationSpecifiers( Diag(Tok, DiagID) << PrevSpec << FixItHint::CreateRemoval(Tok.getLocation()); else if (DiagID == diag::err_opencl_unknown_type_specifier) { - const int OpenCLVer = getLangOpts().OpenCLVersion; - std::string VerSpec = llvm::to_string(OpenCLVer / 100) + - std::string (".") + - llvm::to_string((OpenCLVer % 100) / 10); - Diag(Tok, DiagID) << VerSpec << PrevSpec << isStorageClass; + Diag(Tok, DiagID) << getLangOpts().getOpenCLVersionTuple().getAsString() + << PrevSpec << isStorageClass; } else Diag(Tok, DiagID) << PrevSpec; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits