summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.h
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2010-06-09 01:46:50 +0000
committerEvan Cheng <evan.cheng@apple.com>2010-06-09 01:46:50 +0000
commit47cd593023697f544cf8cf88c002e1fe4c764417 (patch)
treea969f3b7e37da9d95c99afd86a37cc5f846514e1 /clang/lib/CodeGen/CodeGenModule.h
parent13f7c7dd7708a703d62c18e777fc128353d25a63 (diff)
downloadbcm5719-llvm-47cd593023697f544cf8cf88c002e1fe4c764417.tar.gz
bcm5719-llvm-47cd593023697f544cf8cf88c002e1fe4c764417.zip
Thumb2 IT blocks are fairly expensive. When there are multiple selects using
the same condition, it's important to make sure they are scheduled together to avoid forming multiple IT blocks. I'm adding a pre-regalloc pass that forms IT blocks early (by re-scheduling instructions and split basic blocks) to attempt to fix this. This is not turned on by default since I am not sure this is the right fix. Another issue is llvm selects are modeled as two-address conditional moves. This can be very bad when the copies before the conditional moves are not coalesced away. Teach IT formation pass to move the copies above the IT block (when legal) to avoid breaking the IT block. llvm-svn: 105669
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud