summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-03-27 17:17:23 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-03-27 17:17:23 +0000
commit0f06b983878c31d30045b193f565135061a6b38c (patch)
tree7dd8c81fd52e2ee0fa096d06c6027d39ef6b53bb /clang/lib
parentfd433365e08da024ddc99dd0d7bce8e89d8c5469 (diff)
downloadbcm5719-llvm-0f06b983878c31d30045b193f565135061a6b38c.tar.gz
bcm5719-llvm-0f06b983878c31d30045b193f565135061a6b38c.zip
[modules] Make sure enabled diagnostic pragmas inside the module don't affect the translation unit that
imports the module. Getting diagnostic sections from modules properly working is a fixme. rdar://13516663 llvm-svn: 178151
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Serialization/ASTWriter.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index 95e32a37fe6..033d48c1471 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -2444,8 +2444,14 @@ ASTWriter::inferSubmoduleIDFromLocation(SourceLocation Loc) {
return getSubmoduleID(OwningMod);
}
-void ASTWriter::WritePragmaDiagnosticMappings(const DiagnosticsEngine &Diag) {
- // FIXME: Make it work properly with modules.
+void ASTWriter::WritePragmaDiagnosticMappings(const DiagnosticsEngine &Diag,
+ bool isModule) {
+ // Make sure set diagnostic pragmas don't affect the translation unit that
+ // imports the module.
+ // FIXME: Make diagnostic pragma sections work properly with modules.
+ if (isModule)
+ return;
+
llvm::SmallDenseMap<const DiagnosticsEngine::DiagState *, unsigned, 64>
DiagStateIDMap;
unsigned CurrID = 0;
@@ -4048,7 +4054,7 @@ void ASTWriter::WriteASTCore(Sema &SemaRef,
WriteOpenCLExtensions(SemaRef);
WriteTypeDeclOffsets();
- WritePragmaDiagnosticMappings(Context.getDiagnostics());
+ WritePragmaDiagnosticMappings(Context.getDiagnostics(), isModule);
WriteCXXBaseSpecifiersOffsets();
OpenPOWER on IntegriCloud