From a9562568e5c2a897e3a51b18700eeb70f0dda48c Mon Sep 17 00:00:00 2001 From: Jim Grosbach Date: Fri, 20 Nov 2009 19:37:38 +0000 Subject: [PATCH] The verify() call of CPEIsInRange() isn't right for the assertion check of constant pool ranges, as CPEIsInRange() makes conservative assumptions about the potential alignment changes from branch adjustments. The verification, on the other hand, runs after those branch adjustments are made, so the effects on alignment are known and already taken into account. The sanity check in verify should check the range directly instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89473 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMConstantIslandPass.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/Target/ARM/ARMConstantIslandPass.cpp b/lib/Target/ARM/ARMConstantIslandPass.cpp index 1832909a29b..e59a315a483 100644 --- a/lib/Target/ARM/ARMConstantIslandPass.cpp +++ b/lib/Target/ARM/ARMConstantIslandPass.cpp @@ -244,12 +244,15 @@ void ARMConstantIslands::verify(MachineFunction &MF) { (BBOffsets[MBBId]%4 != 0 && BBSizes[MBBId]%4 != 0)); } } -#endif for (unsigned i = 0, e = CPUsers.size(); i != e; ++i) { CPUser &U = CPUsers[i]; unsigned UserOffset = GetOffsetOf(U.MI) + (isThumb ? 4 : 8); - assert (CPEIsInRange(U.MI, UserOffset, U.CPEMI, U.MaxDisp, U.NegOk, true)); + unsigned CPEOffset = GetOffsetOf(U.CPEMI); + unsigned Disp = UserOffset < CPEOffset ? CPEOffset - UserOffset : + UserOffset - CPEOffset; + assert(Disp <= U.MaxDisp || "Constant pool entry out of range!"); } +#endif } /// print block size and offset information - debugging -- 2.34.1