aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2015-05-12 23:32:56 +0000
committerChandler Carruth <chandlerc@gmail.com>2015-05-12 23:32:56 +0000
commita6ae877aecfe5f5dce482374fad5d397dc6ca7e1 (patch)
tree8d268bd658dafd04152d90d6a7193af2c6a2546f /llvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp
parent80ec5a11b52e51b14f093b55b7d6a297e570695d (diff)
downloadllvm-a6ae877aecfe5f5dce482374fad5d397dc6ca7e1.zip
llvm-a6ae877aecfe5f5dce482374fad5d397dc6ca7e1.tar.gz
llvm-a6ae877aecfe5f5dce482374fad5d397dc6ca7e1.tar.bz2
[Unrolling] Refactor the start and step offsets to simplify overflow
checking and make the cache faster and smaller. I had thought that using an APInt here would be useful, but I think I was just wrong. Notably, we don't have to do any fancy overflow checking, we can just bound the values as quite small and do the math in a higher precision integer. I've switched to a signed integer so that UBSan will even point out if we ever have integer overflow. I've added various asserts to try to catch things as well and hoisted the overflow checks so that we just leave the too-large offsets out of the SCEV-GEP cache. This makes the value in the cache quite a bit smaller which is probably worthwhile. No functionality changed here (for trip counts under 1 billion). llvm-svn: 237209
Diffstat (limited to 'llvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp')
0 files changed, 0 insertions, 0 deletions