summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/Generic/vector-redux.ll
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-02-17 18:37:11 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-02-17 18:37:11 +0000
commit7e5937b775410a81b5a57c45fb087ef99e971308 (patch)
tree2117ecf2317c374e0837094cf3fd7ccde45b2eb6 /llvm/test/CodeGen/Generic/vector-redux.ll
parentcef252ea4c6cd44ac5a1253ffc1836b400cef3ec (diff)
downloadbcm5719-llvm-7e5937b775410a81b5a57c45fb087ef99e971308.tar.gz
bcm5719-llvm-7e5937b775410a81b5a57c45fb087ef99e971308.zip
[WinEH] Optimize WinEH state stores
32-bit x86 Windows targets use a linked-list of nodes allocated on the stack, referenced to via thread-local storage. The personality routine interprets one of the fields in the node as a 'state number' which indicates where the personality routine should transfer control. State transitions are possible only before call-sites which may throw exceptions. Our previous scheme had us update the state number before all call-sites which may throw. Instead, we can try to minimize the number of times we need to store by reasoning about the nearest store which dominates the current call-site. If the last store agrees with the current call-site, then we know that the state-update is redundant and can be elided. This is largely straightforward: an RPO walk of the blocks allows us to correctly forward propagate the information when the function is a DAG. Currently, loops are not handled optimally and may trigger superfluous state stores. Differential Revision: http://reviews.llvm.org/D16763 llvm-svn: 261122
Diffstat (limited to 'llvm/test/CodeGen/Generic/vector-redux.ll')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud