mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 13:00:15 +02:00
Library Forwarding: Consider struct metadata equal if it only differs in integer member type names
This commit is contained in:
1 parent
28ae84cf60
commit
0ebf260ed0
2 files changed
+6
-2
No files matched your search
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user