llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-tools-extra Author: Erick Velez (evelez7) <details> <summary>Changes</summary> IsBuiltIn and IsTemplate were being emitted as their default values. --- Full diff: https://github.com/llvm/llvm-project/pull/146149.diff 8 Files Affected: - (modified) clang-tools-extra/clang-doc/BitcodeReader.cpp (+17-1) - (modified) clang-tools-extra/clang-doc/BitcodeWriter.cpp (+19-3) - (modified) clang-tools-extra/clang-doc/BitcodeWriter.h (+6) - (modified) clang-tools-extra/test/clang-doc/json/class-template.cpp (+1-1) - (modified) clang-tools-extra/test/clang-doc/json/class.cpp (+3-3) - (modified) clang-tools-extra/test/clang-doc/json/function-requires.cpp (+1-1) - (modified) clang-tools-extra/test/clang-doc/json/method-template.cpp (+1-1) - (modified) clang-tools-extra/test/clang-doc/json/namespace.cpp (+3-4) ``````````diff diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp b/clang-tools-extra/clang-doc/BitcodeReader.cpp index 74da80c382120..fd6f40cff1a4e 100644 --- a/clang-tools-extra/clang-doc/BitcodeReader.cpp +++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp @@ -283,7 +283,15 @@ static llvm::Error parseRecord(const Record &R, unsigned ID, static llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob, TypeInfo *I) { - return llvm::Error::success(); + switch (ID) { + case TYPE_IS_BUILTIN: + return decodeRecord(R, I->IsBuiltIn, Blob); + case TYPE_IS_TEMPLATE: + return decodeRecord(R, I->IsTemplate, Blob); + default: + return llvm::createStringError(llvm::inconvertibleErrorCode(), + "invalid field for TypeInfo"); + } } static llvm::Error parseRecord(const Record &R, unsigned ID, @@ -293,6 +301,10 @@ static llvm::Error parseRecord(const Record &R, unsigned ID, return decodeRecord(R, I->Name, Blob); case FIELD_DEFAULT_VALUE: return decodeRecord(R, I->DefaultValue, Blob); + case FIELD_TYPE_IS_BUILTIN: + return decodeRecord(R, I->IsBuiltIn, Blob); + case FIELD_TYPE_IS_TEMPLATE: + return decodeRecord(R, I->IsTemplate, Blob); default: return llvm::createStringError(llvm::inconvertibleErrorCode(), "invalid field for TypeInfo"); @@ -308,6 +320,10 @@ static llvm::Error parseRecord(const Record &R, unsigned ID, return decodeRecord(R, I->Access, Blob); case MEMBER_TYPE_IS_STATIC: return decodeRecord(R, I->IsStatic, Blob); + case MEMBER_TYPE_IS_BUILTIN: + return decodeRecord(R, I->IsBuiltIn, Blob); + case MEMBER_TYPE_IS_TEMPLATE: + return decodeRecord(R, I->IsTemplate, Blob); default: return llvm::createStringError(llvm::inconvertibleErrorCode(), "invalid field for MemberTypeInfo"); diff --git a/clang-tools-extra/clang-doc/BitcodeWriter.cpp b/clang-tools-extra/clang-doc/BitcodeWriter.cpp index c3351d1decbf5..006ddda1b75e7 100644 --- a/clang-tools-extra/clang-doc/BitcodeWriter.cpp +++ b/clang-tools-extra/clang-doc/BitcodeWriter.cpp @@ -161,9 +161,15 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor> {COMMENT_ARG, {"Arg", &genStringAbbrev}}, {FIELD_TYPE_NAME, {"Name", &genStringAbbrev}}, {FIELD_DEFAULT_VALUE, {"DefaultValue", &genStringAbbrev}}, + {FIELD_TYPE_IS_BUILTIN, {"IsBuiltin", &genBoolAbbrev}}, + {FIELD_TYPE_IS_TEMPLATE, {"IsTemplate", &genBoolAbbrev}}, {MEMBER_TYPE_NAME, {"Name", &genStringAbbrev}}, {MEMBER_TYPE_ACCESS, {"Access", &genIntAbbrev}}, {MEMBER_TYPE_IS_STATIC, {"IsStatic", &genBoolAbbrev}}, + {MEMBER_TYPE_IS_BUILTIN, {"IsBuiltin", &genBoolAbbrev}}, + {MEMBER_TYPE_IS_TEMPLATE, {"IsTemplate", &genBoolAbbrev}}, + {TYPE_IS_BUILTIN, {"IsBuiltin", &genBoolAbbrev}}, + {TYPE_IS_TEMPLATE, {"IsTemplate", &genBoolAbbrev}}, {NAMESPACE_USR, {"USR", &genSymbolIdAbbrev}}, {NAMESPACE_NAME, {"Name", &genStringAbbrev}}, {NAMESPACE_PATH, {"Path", &genStringAbbrev}}, @@ -239,12 +245,15 @@ static const std::vector<std::pair<BlockId, std::vector<RecordId>>> COMMENT_PARAMNAME, COMMENT_CLOSENAME, COMMENT_SELFCLOSING, COMMENT_EXPLICIT, COMMENT_ATTRKEY, COMMENT_ATTRVAL, COMMENT_ARG}}, // Type Block - {BI_TYPE_BLOCK_ID, {}}, + {BI_TYPE_BLOCK_ID, {TYPE_IS_BUILTIN, TYPE_IS_TEMPLATE}}, // FieldType Block - {BI_FIELD_TYPE_BLOCK_ID, {FIELD_TYPE_NAME, FIELD_DEFAULT_VALUE}}, + {BI_FIELD_TYPE_BLOCK_ID, + {FIELD_TYPE_NAME, FIELD_DEFAULT_VALUE, FIELD_TYPE_IS_BUILTIN, + FIELD_TYPE_IS_TEMPLATE}}, // MemberType Block {BI_MEMBER_TYPE_BLOCK_ID, - {MEMBER_TYPE_NAME, MEMBER_TYPE_ACCESS, MEMBER_TYPE_IS_STATIC}}, + {MEMBER_TYPE_NAME, MEMBER_TYPE_ACCESS, MEMBER_TYPE_IS_STATIC, + MEMBER_TYPE_IS_BUILTIN, MEMBER_TYPE_IS_TEMPLATE}}, // Enum Block {BI_ENUM_BLOCK_ID, {ENUM_USR, ENUM_NAME, ENUM_DEFLOCATION, ENUM_LOCATION, ENUM_SCOPED}}, @@ -470,6 +479,8 @@ void ClangDocBitcodeWriter::emitBlock(const Reference &R, FieldId Field) { void ClangDocBitcodeWriter::emitBlock(const TypeInfo &T) { StreamSubBlockGuard Block(Stream, BI_TYPE_BLOCK_ID); emitBlock(T.Type, FieldId::F_type); + emitRecord(T.IsBuiltIn, TYPE_IS_BUILTIN); + emitRecord(T.IsTemplate, TYPE_IS_TEMPLATE); } void ClangDocBitcodeWriter::emitBlock(const TypedefInfo &T) { @@ -491,6 +502,8 @@ void ClangDocBitcodeWriter::emitBlock(const FieldTypeInfo &T) { emitBlock(T.Type, FieldId::F_type); emitRecord(T.Name, FIELD_TYPE_NAME); emitRecord(T.DefaultValue, FIELD_DEFAULT_VALUE); + emitRecord(T.IsBuiltIn, FIELD_TYPE_IS_BUILTIN); + emitRecord(T.IsTemplate, FIELD_TYPE_IS_TEMPLATE); } void ClangDocBitcodeWriter::emitBlock(const MemberTypeInfo &T) { @@ -499,6 +512,9 @@ void ClangDocBitcodeWriter::emitBlock(const MemberTypeInfo &T) { emitRecord(T.Name, MEMBER_TYPE_NAME); emitRecord(T.Access, MEMBER_TYPE_ACCESS); emitRecord(T.IsStatic, MEMBER_TYPE_IS_STATIC); + emitRecord(T.IsBuiltIn, MEMBER_TYPE_IS_BUILTIN); + emitRecord(T.IsTemplate, MEMBER_TYPE_IS_TEMPLATE); + emitRecord(T.IsTemplate, MEMBER_TYPE_IS_TEMPLATE); for (const auto &CI : T.Description) emitBlock(CI); } diff --git a/clang-tools-extra/clang-doc/BitcodeWriter.h b/clang-tools-extra/clang-doc/BitcodeWriter.h index a70e50b53a61a..f1325094f957a 100644 --- a/clang-tools-extra/clang-doc/BitcodeWriter.h +++ b/clang-tools-extra/clang-doc/BitcodeWriter.h @@ -96,11 +96,17 @@ enum RecordId { COMMENT_ATTRKEY, COMMENT_ATTRVAL, COMMENT_ARG, + TYPE_IS_BUILTIN, + TYPE_IS_TEMPLATE, FIELD_TYPE_NAME, FIELD_DEFAULT_VALUE, + FIELD_TYPE_IS_BUILTIN, + FIELD_TYPE_IS_TEMPLATE, MEMBER_TYPE_NAME, MEMBER_TYPE_ACCESS, MEMBER_TYPE_IS_STATIC, + MEMBER_TYPE_IS_BUILTIN, + MEMBER_TYPE_IS_TEMPLATE, NAMESPACE_USR, NAMESPACE_NAME, NAMESPACE_PATH, diff --git a/clang-tools-extra/test/clang-doc/json/class-template.cpp b/clang-tools-extra/test/clang-doc/json/class-template.cpp index e3ca086d1d9a4..fb9c4c2f21c2e 100644 --- a/clang-tools-extra/test/clang-doc/json/class-template.cpp +++ b/clang-tools-extra/test/clang-doc/json/class-template.cpp @@ -17,7 +17,7 @@ template<typename T> struct MyClass { // CHECK-NEXT: ], // CHECK-NEXT: "ReturnType": { // CHECK-NEXT: "IsBuiltIn": false, -// CHECK-NEXT: "IsTemplate": false, +// CHECK-NEXT: "IsTemplate": true, // CHECK-NEXT: "Name": "T", // CHECK-NEXT: "QualName": "T" // CHECK-NEXT: "USR": "0000000000000000000000000000000000000000" diff --git a/clang-tools-extra/test/clang-doc/json/class.cpp b/clang-tools-extra/test/clang-doc/json/class.cpp index 9ae1f14e2d2a6..bd82b8159e2f9 100644 --- a/clang-tools-extra/test/clang-doc/json/class.cpp +++ b/clang-tools-extra/test/clang-doc/json/class.cpp @@ -107,7 +107,7 @@ struct MyClass { // CHECK-NEXT: "GlobalNamespace" // CHECK-NEXT: ], // CHECK-NEXT: "ReturnType": { -// CHECK-NEXT: "IsBuiltIn": false, +// CHECK-NEXT: "IsBuiltIn": true, // CHECK-NEXT: "IsTemplate": false, // CHECK-NEXT: "Name": "int", // CHECK-NEXT: "QualName": "int", @@ -137,7 +137,7 @@ struct MyClass { // CHECK-NEXT: } // CHECK-NEXT: ], // CHECK-NEXT: "ReturnType": { -// CHECK-NEXT: "IsBuiltIn": false, +// CHECK-NEXT: "IsBuiltIn": true, // CHECK-NEXT: "IsTemplate": false, // CHECK-NEXT: "Name": "int", // CHECK-NEXT: "QualName": "int", @@ -184,7 +184,7 @@ struct MyClass { // CHECK-NEXT: "TypeDeclaration": "", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}", // CHECK-NEXT: "Underlying": { -// CHECK-NEXT: "IsBuiltIn": false, +// CHECK-NEXT: "IsBuiltIn": true, // CHECK-NEXT: "IsTemplate": false, // CHECK-NEXT: "Name": "int", // CHECK-NEXT: "QualName": "int", diff --git a/clang-tools-extra/test/clang-doc/json/function-requires.cpp b/clang-tools-extra/test/clang-doc/json/function-requires.cpp index 99eb2bdb898f3..4e8432e088c4f 100644 --- a/clang-tools-extra/test/clang-doc/json/function-requires.cpp +++ b/clang-tools-extra/test/clang-doc/json/function-requires.cpp @@ -23,7 +23,7 @@ template<Incrementable T> Incrementable auto incrementTwo(T t); // CHECK-NEXT: } // CHECK-NEXT: ], // CHECK-NEXT: "ReturnType": { -// CHECK-NEXT: "IsBuiltIn": false, +// CHECK-NEXT: "IsBuiltIn": true, // CHECK-NEXT: "IsTemplate": false, // CHECK-NEXT: "Name": "void", // CHECK-NEXT: "QualName": "void", diff --git a/clang-tools-extra/test/clang-doc/json/method-template.cpp b/clang-tools-extra/test/clang-doc/json/method-template.cpp index c51a2706d1c22..ea9110d6c2d1c 100644 --- a/clang-tools-extra/test/clang-doc/json/method-template.cpp +++ b/clang-tools-extra/test/clang-doc/json/method-template.cpp @@ -27,7 +27,7 @@ struct MyClass { // CHECK-NEXT: ], // CHECK-NEXT: "ReturnType": { // CHECK-NEXT: "IsBuiltIn": false, -// CHECK-NEXT: "IsTemplate": false, +// CHECK-NEXT: "IsTemplate": true, // CHECK-NEXT: "Name": "T", // CHECK-NEXT: "QualName": "T", // CHECK-NEXT: "USR": "0000000000000000000000000000000000000000" diff --git a/clang-tools-extra/test/clang-doc/json/namespace.cpp b/clang-tools-extra/test/clang-doc/json/namespace.cpp index f1e094f6cab17..6e4fc6938d856 100644 --- a/clang-tools-extra/test/clang-doc/json/namespace.cpp +++ b/clang-tools-extra/test/clang-doc/json/namespace.cpp @@ -56,7 +56,7 @@ typedef int MyTypedef; // CHECK-NEXT: } // CHECK-NEXT: ], // CHECK-NEXT: "ReturnType": { -// CHECK-NEXT: "IsBuiltIn": false, +// CHECK-NEXT: "IsBuiltIn": true, // CHECK-NEXT: "IsTemplate": false, // CHECK-NEXT: "Name": "void", // CHECK-NEXT: "QualName": "void", @@ -93,7 +93,7 @@ typedef int MyTypedef; // CHECK-NEXT: "TypeDeclaration": "", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}", // CHECK-NEXT: "Underlying": { -// CHECK-NEXT: "IsBuiltIn": false, +// CHECK-NEXT: "IsBuiltIn": true, // CHECK-NEXT: "IsTemplate": false, // CHECK-NEXT: "Name": "int", // CHECK-NEXT: "QualName": "int", @@ -111,8 +111,7 @@ typedef int MyTypedef; // CHECK-NEXT: }, // CHECK-NEXT: "Name": "Global", // CHECK-NEXT: "Type": { -// COM: FIXME: IsBuiltIn emits as its default value -// CHECK-NEXT: "IsBuiltIn": false, +// CHECK-NEXT: "IsBuiltIn": true, // CHECK-NEXT: "IsTemplate": false, // CHECK-NEXT: "Name": "int", // CHECK-NEXT: "QualName": "int", `````````` </details> https://github.com/llvm/llvm-project/pull/146149 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits