Add support for assembler-with-cpp (preprocessed .S files), patch by

Roman Divacky!

llvm-svn: 57988
This commit is contained in:
Chris Lattner 2008-10-22 17:29:21 +00:00
parent f6655a9e79
commit 720d515ee9
2 changed files with 10 additions and 2 deletions

View File

@ -207,6 +207,7 @@ enum LangKind {
langkind_unspecified, langkind_unspecified,
langkind_c, langkind_c,
langkind_c_cpp, langkind_c_cpp,
langkind_asm_cpp,
langkind_c_pch, langkind_c_pch,
langkind_cxx, langkind_cxx,
langkind_cxx_cpp, langkind_cxx_cpp,
@ -219,7 +220,7 @@ enum LangKind {
/* TODO: GCC also accepts: /* TODO: GCC also accepts:
c-header c++-header objective-c-header objective-c++-header c-header c++-header objective-c-header objective-c++-header
assembler assembler-with-cpp assembler
ada, f77*, ratfor (!), f95, java, treelang ada, f77*, ratfor (!), f95, java, treelang
*/ */
static llvm::cl::opt<LangKind> static llvm::cl::opt<LangKind>
@ -231,6 +232,8 @@ BaseLang("x", llvm::cl::desc("Base language to compile"),
clEnumValN(langkind_objcxx,"objective-c++","Objective C++"), clEnumValN(langkind_objcxx,"objective-c++","Objective C++"),
clEnumValN(langkind_c_cpp, "c-cpp-output", clEnumValN(langkind_c_cpp, "c-cpp-output",
"Preprocessed C"), "Preprocessed C"),
clEnumValN(langkind_asm_cpp, "assembler-with-cpp",
"Preprocessed asm"),
clEnumValN(langkind_cxx_cpp, "c++-cpp-output", clEnumValN(langkind_cxx_cpp, "c++-cpp-output",
"Preprocessed C++"), "Preprocessed C++"),
clEnumValN(langkind_objc_cpp, "objective-c-cpp-output", clEnumValN(langkind_objc_cpp, "objective-c-cpp-output",
@ -276,6 +279,8 @@ static LangKind GetLanguage(const std::string &Filename) {
// assembler: .S // assembler: .S
if (Ext == "c") if (Ext == "c")
return langkind_c; return langkind_c;
else if (Ext == "S" || Ext == "s")
return langkind_asm_cpp;
else if (Ext == "i") else if (Ext == "i")
return langkind_c_cpp; return langkind_c_cpp;
else if (Ext == "ii") else if (Ext == "ii")
@ -316,6 +321,8 @@ static bool InitializeLangOptions(LangOptions &Options, LangKind LK){
InitializeCOptions(Options); InitializeCOptions(Options);
PCH = true; PCH = true;
break; break;
case langkind_asm_cpp:
// FALLTHROUGH
case langkind_c_cpp: case langkind_c_cpp:
NoPreprocess = true; NoPreprocess = true;
// FALLTHROUGH // FALLTHROUGH
@ -458,6 +465,7 @@ static void InitializeLanguageStandard(LangOptions &Options, LangKind LK,
switch (LK) { switch (LK) {
default: assert(0 && "Unknown base language"); default: assert(0 && "Unknown base language");
case langkind_c: case langkind_c:
case langkind_asm_cpp:
case langkind_c_cpp: case langkind_c_cpp:
case langkind_c_pch: case langkind_c_pch:
case langkind_objc: case langkind_objc:

View File

@ -36,7 +36,7 @@ CCC_LOG = checkenv('CCC_LOG')
CCC_ECHO = checkbool('CCC_ECHO') CCC_ECHO = checkbool('CCC_ECHO')
CCC_NATIVE = checkbool('CCC_NATIVE','1') CCC_NATIVE = checkbool('CCC_NATIVE','1')
CCC_FALLBACK = checkbool('CCC_FALLBACK') CCC_FALLBACK = checkbool('CCC_FALLBACK')
CCC_LANGUAGES = checkenv('CCC_LANGUAGES','c,c++,c-cpp-output,objective-c,objective-c++,objective-c-cpp-output') CCC_LANGUAGES = checkenv('CCC_LANGUAGES','c,c++,c-cpp-output,objective-c,objective-c++,objective-c-cpp-output,assembler-with-cpp')
if CCC_LANGUAGES: if CCC_LANGUAGES:
CCC_LANGUAGES = set([s.strip() for s in CCC_LANGUAGES.split(',')]) CCC_LANGUAGES = set([s.strip() for s in CCC_LANGUAGES.split(',')])