diff options
Diffstat (limited to 'lib/Serialization/ASTReader.cpp')
-rw-r--r-- | lib/Serialization/ASTReader.cpp | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index 5d2e8d6cfc..3d6d31d20e 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -1800,24 +1800,6 @@ ASTReader::ASTReadResult ASTReader::ReadControlBlock(ModuleFile &F, } RelocatablePCH = Record[4]; - if (Listener && &F == *ModuleMgr.begin()) { - unsigned Idx = 6; - TargetOptions TargetOpts; - TargetOpts.Triple = ReadString(Record, Idx); - TargetOpts.CPU = ReadString(Record, Idx); - TargetOpts.ABI = ReadString(Record, Idx); - TargetOpts.CXXABI = ReadString(Record, Idx); - TargetOpts.LinkerVersion = ReadString(Record, Idx); - for (unsigned N = Record[Idx++]; N; --N) { - TargetOpts.FeaturesAsWritten.push_back(ReadString(Record, Idx)); - } - for (unsigned N = Record[Idx++]; N; --N) { - TargetOpts.Features.push_back(ReadString(Record, Idx)); - } - - if (Listener->ReadTargetOptions(F, TargetOpts)) - return IgnorePCH; - } break; } @@ -1849,6 +1831,28 @@ ASTReader::ASTReadResult ASTReader::ReadControlBlock(ModuleFile &F, return IgnorePCH; break; + case TARGET_OPTIONS: { + if (Listener && &F == *ModuleMgr.begin()) { + unsigned Idx = 0; + TargetOptions TargetOpts; + TargetOpts.Triple = ReadString(Record, Idx); + TargetOpts.CPU = ReadString(Record, Idx); + TargetOpts.ABI = ReadString(Record, Idx); + TargetOpts.CXXABI = ReadString(Record, Idx); + TargetOpts.LinkerVersion = ReadString(Record, Idx); + for (unsigned N = Record[Idx++]; N; --N) { + TargetOpts.FeaturesAsWritten.push_back(ReadString(Record, Idx)); + } + for (unsigned N = Record[Idx++]; N; --N) { + TargetOpts.Features.push_back(ReadString(Record, Idx)); + } + + if (Listener->ReadTargetOptions(F, TargetOpts)) + return IgnorePCH; + } + break; + } + case ORIGINAL_FILE_NAME: // Only record from the primary AST file. if (&F == *ModuleMgr.begin()) { |