summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-09-14 20:24:53 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-09-14 20:24:53 +0000
commit9e1fb5632a07300c59a2d92021a19f446dc2dd9f (patch)
tree03d0b6b829532c20a210e7b2aba460b2f0c658d9
parent06fb5f0cc24c4abb9266a04d8efd343a5cb43d47 (diff)
downloadbcm5719-llvm-9e1fb5632a07300c59a2d92021a19f446dc2dd9f.tar.gz
bcm5719-llvm-9e1fb5632a07300c59a2d92021a19f446dc2dd9f.zip
[libclang] When loading an AST file, make sure to apply the language options
to the target info. Related to rdar://12069503. llvm-svn: 163931
-rw-r--r--clang/lib/Frontend/ASTUnit.cpp15
-rw-r--r--clang/test/Index/index-pch.cpp6
2 files changed, 21 insertions, 0 deletions
diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp
index 42a67720c35..d0aadfd29ea 100644
--- a/clang/lib/Frontend/ASTUnit.cpp
+++ b/clang/lib/Frontend/ASTUnit.cpp
@@ -525,6 +525,8 @@ public:
Context.InitBuiltinTypes(*Target);
InitializedLanguage = true;
+
+ applyLangOptsToTarget();
return false;
}
@@ -541,6 +543,8 @@ public:
TargetOpts.Features.clear();
TargetOpts.Triple = Triple;
Target = TargetInfo::CreateTargetInfo(PP.getDiagnostics(), TargetOpts);
+
+ applyLangOptsToTarget();
return false;
}
@@ -562,6 +566,17 @@ public:
virtual void ReadCounter(unsigned Value) {
Counter = Value;
}
+
+private:
+ void applyLangOptsToTarget() {
+ if (Target && InitializedLanguage) {
+ // Inform the target of the language options.
+ //
+ // FIXME: We shouldn't need to do this, the target should be immutable once
+ // created. This complexity should be lifted elsewhere.
+ Target->setForcedLangOptions(LangOpt);
+ }
+ }
};
class StoredDiagnosticConsumer : public DiagnosticConsumer {
diff --git a/clang/test/Index/index-pch.cpp b/clang/test/Index/index-pch.cpp
new file mode 100644
index 00000000000..c8da7b2fbf2
--- /dev/null
+++ b/clang/test/Index/index-pch.cpp
@@ -0,0 +1,6 @@
+// RUN: c-index-test -write-pch %t.pch -fshort-wchar %s
+// RUN: c-index-test -index-tu %t.pch | FileCheck %s
+
+const wchar_t *wideStr = L"123";
+
+// CHECK: [indexDeclaration]: kind: variable | name: wideStr
OpenPOWER on IntegriCloud