diff options
author | Jim Grosbach <grosbach@apple.com> | 2009-11-20 19:37:38 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2009-11-20 19:37:38 +0000 |
commit | a9562568e5c2a897e3a51b18700eeb70f0dda48c (patch) | |
tree | 6af68db99628e6106741fef4112ad0aac4f2a722 | |
parent | 5bd698e65c6858c7d2a715e29b57f63a60295923 (diff) |
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
-rw-r--r-- | lib/Target/ARM/ARMConstantIslandPass.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/Target/ARM/ARMConstantIslandPass.cpp b/lib/Target/ARM/ARMConstantIslandPass.cpp index 1832909a29..e59a315a48 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 |