summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization/ASTWriter.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-10-18 17:58:09 +0000
committerDouglas Gregor <dgregor@apple.com>2012-10-18 17:58:09 +0000
commit4d3611ca8294d11c6c87b46154947bff5f42d849 (patch)
tree97f26ac60569ad2c78399b076c99c1f32c22d33b /clang/lib/Serialization/ASTWriter.cpp
parentb6626748c2e502637baefd58b85c9b654e67d439 (diff)
downloadbcm5719-llvm-4d3611ca8294d11c6c87b46154947bff5f42d849.tar.gz
bcm5719-llvm-4d3611ca8294d11c6c87b46154947bff5f42d849.zip
Split the target options out into their own record within the AST
file's control block. llvm-svn: 166195
Diffstat (limited to 'clang/lib/Serialization/ASTWriter.cpp')
-rw-r--r--clang/lib/Serialization/ASTWriter.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index b6f302605b1..13c88b85d3f 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -994,19 +994,6 @@ void ASTWriter::WriteControlBlock(ASTContext &Context, StringRef isysroot,
Record.push_back(CLANG_VERSION_MINOR);
Record.push_back(!isysroot.empty());
Record.push_back(ASTHasCompilerErrors);
- AddString(TargetOpts.Triple, Record);
- AddString(TargetOpts.CPU, Record);
- AddString(TargetOpts.ABI, Record);
- AddString(TargetOpts.CXXABI, Record);
- AddString(TargetOpts.LinkerVersion, Record);
- Record.push_back(TargetOpts.FeaturesAsWritten.size());
- for (unsigned I = 0, N = TargetOpts.FeaturesAsWritten.size(); I != N; ++I) {
- AddString(TargetOpts.FeaturesAsWritten[I], Record);
- }
- Record.push_back(TargetOpts.Features.size());
- for (unsigned I = 0, N = TargetOpts.Features.size(); I != N; ++I) {
- AddString(TargetOpts.Features[I], Record);
- }
Stream.EmitRecord(METADATA, Record);
// Imports
@@ -1047,6 +1034,23 @@ void ASTWriter::WriteControlBlock(ASTContext &Context, StringRef isysroot,
Record.append(LangOpts.CurrentModule.begin(), LangOpts.CurrentModule.end());
Stream.EmitRecord(LANGUAGE_OPTIONS, Record);
+ // Target options.
+ Record.clear();
+ AddString(TargetOpts.Triple, Record);
+ AddString(TargetOpts.CPU, Record);
+ AddString(TargetOpts.ABI, Record);
+ AddString(TargetOpts.CXXABI, Record);
+ AddString(TargetOpts.LinkerVersion, Record);
+ Record.push_back(TargetOpts.FeaturesAsWritten.size());
+ for (unsigned I = 0, N = TargetOpts.FeaturesAsWritten.size(); I != N; ++I) {
+ AddString(TargetOpts.FeaturesAsWritten[I], Record);
+ }
+ Record.push_back(TargetOpts.Features.size());
+ for (unsigned I = 0, N = TargetOpts.Features.size(); I != N; ++I) {
+ AddString(TargetOpts.Features[I], Record);
+ }
+ Stream.EmitRecord(TARGET_OPTIONS, Record);
+
// Original file name and file ID
SourceManager &SM = Context.getSourceManager();
if (const FileEntry *MainFile = SM.getFileEntryForID(SM.getMainFileID())) {
OpenPOWER on IntegriCloud