[llvm-commits] [llvm] r119563 - in /llvm/trunk: lib/Target/ARM/ARMGlobalMerge.cpp test/CodeGen/ARM/global-merge.ll

Bob Wilson bob.wilson at apple.com
Wed Nov 17 13:25:27 PST 2010


Author: bwilson
Date: Wed Nov 17 15:25:27 2010
New Revision: 119563

URL: http://llvm.org/viewvc/llvm-project?rev=119563&view=rev
Log:
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.

Added:
    llvm/trunk/test/CodeGen/ARM/global-merge.ll
Modified:
    llvm/trunk/lib/Target/ARM/ARMGlobalMerge.cpp

Modified: llvm/trunk/lib/Target/ARM/ARMGlobalMerge.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMGlobalMerge.cpp?rev=119563&r1=119562&r2=119563&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMGlobalMerge.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMGlobalMerge.cpp Wed Nov 17 15:25:27 2010
@@ -179,7 +179,7 @@
         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

Added: llvm/trunk/test/CodeGen/ARM/global-merge.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/global-merge.ll?rev=119563&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/ARM/global-merge.ll (added)
+++ llvm/trunk/test/CodeGen/ARM/global-merge.ll Wed Nov 17 15:25:27 2010
@@ -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:
+ at 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:
+ at g1 = internal global i32 1
+ at g2 = internal global i32 2





More information about the llvm-commits mailing list