[cfe-commits] r167423 - in /cfe/trunk: lib/CodeGen/CodeGenAction.cpp lib/Parse/ParseAST.cpp lib/Parse/Parser.cpp test/Modules/Inputs/Module.framework/Headers/Module.h test/Modules/direct-module-import.m
Douglas Gregor
dgregor at apple.com
Mon Nov 5 15:58:27 PST 2012
Author: dgregor
Date: Mon Nov 5 17:58:27 2012
New Revision: 167423
URL: http://llvm.org/viewvc/llvm-project?rev=167423&view=rev
Log:
Have the parser initialize Sema before it consumes the first
token. This is important because the first token could actually be
after an #include that triggers a module import, which might use
either Sema or the AST consumer before it would have been initialized.
Added:
cfe/trunk/test/Modules/direct-module-import.m
Modified:
cfe/trunk/lib/CodeGen/CodeGenAction.cpp
cfe/trunk/lib/Parse/ParseAST.cpp
cfe/trunk/lib/Parse/Parser.cpp
cfe/trunk/test/Modules/Inputs/Module.framework/Headers/Module.h
Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=167423&r1=167422&r2=167423&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Mon Nov 5 17:58:27 2012
@@ -65,9 +65,11 @@
TargetOpts(targetopts),
LangOpts(langopts),
AsmOutStream(OS),
+ Context(),
LLVMIRGeneration("LLVM IR Generation Time"),
Gen(CreateLLVMCodeGen(Diags, infile, compopts, C)),
- LinkModule(LinkModule) {
+ LinkModule(LinkModule)
+ {
llvm::TimePassesIsEnabled = TimePasses;
}
Modified: cfe/trunk/lib/Parse/ParseAST.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseAST.cpp?rev=167423&r1=167422&r2=167423&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseAST.cpp (original)
+++ cfe/trunk/lib/Parse/ParseAST.cpp Mon Nov 5 17:58:27 2012
@@ -78,7 +78,6 @@
S.getPreprocessor().EnterMainSourceFile();
P.Initialize();
- S.Initialize();
// C11 6.9p1 says translation units must have at least one top-level
// declaration. C++ doesn't have this restriction. We also don't want to
Modified: cfe/trunk/lib/Parse/Parser.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/Parser.cpp?rev=167423&r1=167422&r2=167423&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/Parser.cpp (original)
+++ cfe/trunk/lib/Parse/Parser.cpp Mon Nov 5 17:58:27 2012
@@ -470,9 +470,6 @@
EnterScope(Scope::DeclScope);
Actions.ActOnTranslationUnitScope(getCurScope());
- // Prime the lexer look-ahead.
- ConsumeToken();
-
// Initialization for Objective-C context sensitive keywords recognition.
// Referenced in Parser::ParseObjCTypeQualifierList.
if (getLangOpts().ObjC1) {
@@ -527,6 +524,11 @@
PP.SetPoisonReason(Ident___abnormal_termination,diag::err_seh___finally_block);
PP.SetPoisonReason(Ident_AbnormalTermination,diag::err_seh___finally_block);
}
+
+ Actions.Initialize();
+
+ // Prime the lexer look-ahead.
+ ConsumeToken();
}
namespace {
Modified: cfe/trunk/test/Modules/Inputs/Module.framework/Headers/Module.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/Module.framework/Headers/Module.h?rev=167423&r1=167422&r2=167423&view=diff
==============================================================================
--- cfe/trunk/test/Modules/Inputs/Module.framework/Headers/Module.h (original)
+++ cfe/trunk/test/Modules/Inputs/Module.framework/Headers/Module.h Mon Nov 5 17:58:27 2012
@@ -23,4 +23,6 @@
#include <Module/Sub.h>
#include <Module/Buried/Treasure.h>
+__asm("foo");
+
#endif // MODULE_H
Added: cfe/trunk/test/Modules/direct-module-import.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/direct-module-import.m?rev=167423&view=auto
==============================================================================
--- cfe/trunk/test/Modules/direct-module-import.m (added)
+++ cfe/trunk/test/Modules/direct-module-import.m Mon Nov 5 17:58:27 2012
@@ -0,0 +1,7 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodule-cache-path %t -fmodules -F %S/Inputs -include Module/Module.h %s -emit-llvm -o - | FileCheck %s
+
+// CHECK: call i8* @getModuleVersion
+const char* getVer(void) {
+ return getModuleVersion();
+}
More information about the cfe-commits
mailing list