Fix array type mismatching problem #3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Similar to the PR in MLTA, fix the array type mismatching problem in Typm.
Following is the original description of PR in MLTA.
In LLVM, the type of arrays is represented as strings formatted as "[SIZE x element type]", which should be consistent if the same array is referred. However, LLVM will sometimes drop the SIZE information during access it. For example, in Linux v6.5, the sys_call_table is initialized as [452 x i64 (%struct.pt_regs*)] and is accessed as [0 x i64 (%struct.pt_regs)*]. This is because, LLVM doesn't need to know the size of an array to access it. But it will introduce false negatives in MLTA, which is mentioned in the comment at Common.cc:477 and 478.
In this patch, I uncomment Common.cc:480 to use the "element type" instead of type string in IR to represent an array, so that the initialization and accesses of an array have a consistent type.