/// actually important to check.
LANGUAGE_OPTIONS = 3,
+ /// \brief Record code for the target options table.
+ TARGET_OPTIONS = 4,
+
/// \brief Record code for the original file that was used to
/// generate the AST file.
- ORIGINAL_FILE_NAME = 4,
+ ORIGINAL_FILE_NAME = 5,
/// \brief Record code for the file ID of the original file used to
/// generate the AST file.
- ORIGINAL_FILE_ID = 5,
+ ORIGINAL_FILE_ID = 6,
/// \brief The directory that the PCH was originally created in.
- ORIGINAL_PCH_DIR = 6,
+ ORIGINAL_PCH_DIR = 7,
/// \brief Record code for the version control branch and revision
/// information of the compiler used to build this AST file.
- VERSION_CONTROL_BRANCH_REVISION = 7
+ VERSION_CONTROL_BRANCH_REVISION = 8
};
/// \brief Record types that occur within the AST block itself.
}
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;
}
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()) {
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
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())) {