summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/DependencyFile.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2015-05-13 20:28:32 +0000
committerTim Northover <tnorthover@apple.com>2015-05-13 20:28:32 +0000
commit688f7bb21a686fc296c8e1c313f9a1054a4baaf9 (patch)
tree1e42717a22156ab1a551b9da841600834c4f0ef3 /clang/lib/Frontend/DependencyFile.cpp
parentfb69dd8b6495290d5c39ce8017a537d8fa8f284c (diff)
downloadbcm5719-llvm-688f7bb21a686fc296c8e1c313f9a1054a4baaf9.tar.gz
bcm5719-llvm-688f7bb21a686fc296c8e1c313f9a1054a4baaf9.zip
ARM: refactor optimizeThumb2JumpTables.
The previous logic mixed 2 separate questions: + Can we form a TBB/TBH instruction? + Can we remove the jump-table calculation before it? It then performed a bunch of random tests on the instructions earlier in the basic block, which were probably sufficient to answer 2 but only because of the very limited ways in which a t2BR_JT can actually be created. For example there's no reason to expect the LeaInst to define the same base register as the following indexing calulation. In practice this means we might have missed opportunities to form TBB/TBH, in theory you could end up misidentifying a sequence and removing the wrong LEA: %R1 = t2LEApcrelJT ... %R2 = t2LEApcrelJT ... <... using and killing %R2 ...> %R2 = t2ADDr %R1, $Ridx Before we would have looked for an LEA defining %R2 and found the wrong one. We just got lucky that jump table setup was (almost?) always confined to a single basic block and there was only one jump table per block. llvm-svn: 237293
Diffstat (limited to 'clang/lib/Frontend/DependencyFile.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud