OSDN Git Service

[MergedLoadStoreMotion] Don't transform across may-throw calls
authorDavid Majnemer <david.majnemer@gmail.com>
Thu, 26 May 2016 07:11:09 +0000 (07:11 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Thu, 26 May 2016 07:11:09 +0000 (07:11 +0000)
commit8ac7be5005ee6567bcdeb4ea83c8e477cf2f6d68
tree09ac41c1adf4b91fd38280c27e3695be01008211
parentb09e1d33f63e862e27cd3dd9795262c905ac7445
[MergedLoadStoreMotion] Don't transform across may-throw calls

It is unsafe to hoist a load before a function call which may throw, the
throw might prevent a pointer dereference.

Likewise, it is unsafe to sink a store after a call which may throw.
The caller might be able to observe the difference.

This fixes PR27858.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270828 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/MergedLoadStoreMotion.cpp
test/Transforms/InstMerge/exceptions.ll [new file with mode: 0644]
test/Transforms/InstMerge/st_sink_no_barrier_call.ll