diff options
author | Nate Begeman <natebegeman@mac.com> | 2009-06-25 22:43:10 +0000 |
---|---|---|
committer | Nate Begeman <natebegeman@mac.com> | 2009-06-25 22:43:10 +0000 |
commit | 4e3629e676c7d86d988df29dfeeaa3a8c9f0cf29 (patch) | |
tree | 32adf768375ddba162ac6381472961816f0e52d0 | |
parent | a1fbe8611694835a647811b97e56ec62d504110a (diff) |
OpenCL 1.0 patch 2/N: Language options & file extension
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74217 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Basic/LangOptions.h | 6 | ||||
-rw-r--r-- | tools/clang-cc/clang-cc.cpp | 17 |
2 files changed, 21 insertions, 2 deletions
diff --git a/include/clang/Basic/LangOptions.h b/include/clang/Basic/LangOptions.h index 7c578e32f8..543a0fff8e 100644 --- a/include/clang/Basic/LangOptions.h +++ b/include/clang/Basic/LangOptions.h @@ -43,6 +43,7 @@ public: unsigned PascalStrings : 1; // Allow Pascal strings unsigned WritableStrings : 1; // Allow writable strings unsigned LaxVectorConversions : 1; + unsigned AltiVec : 1; // Support AltiVec-style vector initializers. unsigned Exceptions : 1; // Support exception handling. unsigned NeXTRuntime : 1; // Use NeXT runtime. @@ -80,6 +81,10 @@ public: unsigned AccessControl : 1; // Whether C++ access control should // be enabled. unsigned CharIsSigned : 1; // Whether char is a signed or unsigned type + + unsigned OpenCL : 1; // OpenCL C99 language extensions. + + private: unsigned GC : 2; // Objective-C Garbage Collection modes. We declare // this enum as unsigned because MSVC insists on making enums @@ -111,6 +116,7 @@ public: Exceptions = NeXTRuntime = Freestanding = NoBuiltin = 0; LaxVectorConversions = 1; HeinousExtensions = 0; + AltiVec = OpenCL = 0; SymbolVisibility = (unsigned) Default; diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp index f38b7ff00f..a3ffb48281 100644 --- a/tools/clang-cc/clang-cc.cpp +++ b/tools/clang-cc/clang-cc.cpp @@ -315,13 +315,15 @@ enum LangKind { langkind_objc, langkind_objc_cpp, langkind_objcxx, - langkind_objcxx_cpp + langkind_objcxx_cpp, + langkind_ocl }; static llvm::cl::opt<LangKind> BaseLang("x", llvm::cl::desc("Base language to compile"), llvm::cl::init(langkind_unspecified), llvm::cl::values(clEnumValN(langkind_c, "c", "C"), + clEnumValN(langkind_ocl, "cl", "OpenCL C"), clEnumValN(langkind_cxx, "c++", "C++"), clEnumValN(langkind_objc, "objective-c", "Objective C"), clEnumValN(langkind_objcxx,"objective-c++","Objective C++"), @@ -432,6 +434,8 @@ static LangKind GetLanguage(const std::string &Filename) { else if (Ext == "C" || Ext == "cc" || Ext == "cpp" || Ext == "CPP" || Ext == "c++" || Ext == "cp" || Ext == "cxx") return langkind_cxx; + else if (Ext == "cl") + return langkind_ocl; else return langkind_c; } @@ -480,6 +484,12 @@ static void InitializeLangOptions(LangOptions &Options, LangKind LK){ Options.ObjC1 = Options.ObjC2 = 1; Options.CPlusPlus = 1; break; + case langkind_ocl: + Options.OpenCL = 1; + Options.AltiVec = 1; + Options.CXXOperatorNames = 1; + Options.LaxVectorConversions = 1; + break; } if (ObjCExclusiveGC) @@ -664,6 +674,9 @@ static void InitializeLanguageStandard(LangOptions &Options, LangKind LK, // Based on the base language, pick one. switch (LK) { case lang_unspecified: assert(0 && "Unknown base language"); + case langkind_ocl: + LangStd = lang_c99; + break; case langkind_c: case langkind_asm_cpp: case langkind_c_cpp: @@ -1622,7 +1635,7 @@ public: PrintSourceRangeInfo, PrintDiagnosticOption, !NoDiagnosticsFixIt, - MessageLength)); + MessageLength)); } virtual void setLangOptions(const LangOptions *LO) { |