mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
Fix the ARMGlobalMerge pass to look at variable sizes instead of pointer sizes.
It was mistakenly looking at the pointer type when checking for the size of global variables. This is a partial fix for Radar 8673120. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119563 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
17ead4ff4b
commit
edf046716c
@ -179,7 +179,7 @@ bool ARMGlobalMerge::doInitialization(Module &M) {
|
||||
I->getName().startswith(".llvm."))
|
||||
continue;
|
||||
|
||||
if (TD->getTypeAllocSize(I->getType()) < MaxOffset) {
|
||||
if (TD->getTypeAllocSize(I->getType()->getElementType()) < MaxOffset) {
|
||||
if (I->isConstant())
|
||||
ConstGlobals.push_back(I);
|
||||
else
|
||||
|
11
test/CodeGen/ARM/global-merge.ll
Normal file
11
test/CodeGen/ARM/global-merge.ll
Normal file
@ -0,0 +1,11 @@
|
||||
; RUN: llc < %s -march=thumb | FileCheck %s
|
||||
; Test the ARMGlobalMerge pass. Use -march=thumb because it has a small
|
||||
; value for the maximum offset (127).
|
||||
|
||||
; A local array that exceeds the maximum offset should not be merged.
|
||||
; CHECK: g0:
|
||||
@g0 = internal global [32 x i32] [ i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 1, i32 2 ]
|
||||
|
||||
; CHECK: merged:
|
||||
@g1 = internal global i32 1
|
||||
@g2 = internal global i32 2
|
Loading…
Reference in New Issue
Block a user