Library Forwarding: Consider struct metadata equal if it only differs in integer member type names

This commit is contained in:
Tony Wasserka committed 2024-01-30 17:22:23 +01:00
1 parent 28ae84cf60
commit 0ebf260ed0
2 files changed
+6 -2

No files matched your search

+1
View File
@@ -86,6 +86,7 @@ std::unordered_map<const clang::Type*, TypeInfo> ComputeDataLayout(const clang::
.member_name = field->getNameAsString(),
.array_size = array_size,
.is_function_pointer = field_type->isFunctionPointerType(),
.is_integral = field->getType()->isIntegerType(),
};
// TODO: Process types in dependency-order. Currently we skip this
+5 -2
View File
@@ -29,14 +29,17 @@ struct StructInfo : SimpleTypeInfo {
std::string member_name;
std::optional<uint64_t> array_size;
bool is_function_pointer;
bool is_integral;
bool operator==(const MemberInfo& other) const {
return size_bits == other.size_bits &&
offset_bits == other.offset_bits &&
type_name == other.type_name &&
// The type name may differ for integral types if all other parameters are equal
(type_name == other.type_name || (is_integral && other.is_integral)) &&
member_name == other.member_name &&
array_size == other.array_size &&
is_function_pointer == other.is_function_pointer;
is_function_pointer == other.is_function_pointer &&
is_integral == other.is_integral;
}
};