diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-09-14 20:24:53 +0000 | 
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-09-14 20:24:53 +0000 | 
| commit | 9e1fb5632a07300c59a2d92021a19f446dc2dd9f (patch) | |
| tree | 03d0b6b829532c20a210e7b2aba460b2f0c658d9 | |
| parent | 06fb5f0cc24c4abb9266a04d8efd343a5cb43d47 (diff) | |
| download | bcm5719-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.cpp | 15 | ||||
| -rw-r--r-- | clang/test/Index/index-pch.cpp | 6 | 
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  | 

