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
diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp
index f38b7ff..a3ffb48 100644
--- a/tools/clang-cc/clang-cc.cpp
+++ b/tools/clang-cc/clang-cc.cpp
@@ -315,13 +315,15 @@
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 @@
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 @@
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 @@
// 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 @@
PrintSourceRangeInfo,
PrintDiagnosticOption,
!NoDiagnosticsFixIt,
- MessageLength));
+ MessageLength));
}
virtual void setLangOptions(const LangOptions *LO) {