mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 14:10:41 +00:00
Preserving 'nonnull' metadata in SimplifyCFG
When we hoist two loads above an if, we can preserve the nonnull metadata. We could also do the same for sinking them, but we appear to not handle metadata at all in that case. Thanks to Hal for the review. Differential Revision: http://reviews.llvm.org/D5910 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220392 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
dc18ebc4b1
commit
1b8af6a8f0
@ -1061,7 +1061,8 @@ static bool HoistThenElseCodeToIf(BranchInst *BI, const DataLayout *DL) {
|
||||
LLVMContext::MD_tbaa,
|
||||
LLVMContext::MD_range,
|
||||
LLVMContext::MD_fpmath,
|
||||
LLVMContext::MD_invariant_load
|
||||
LLVMContext::MD_invariant_load,
|
||||
LLVMContext::MD_nonnull
|
||||
};
|
||||
combineMetadata(I1, I2, KnownIDs);
|
||||
I2->eraseFromParent();
|
||||
@ -1311,6 +1312,8 @@ static bool SinkThenElseCodeToEnd(BranchInst *BI1) {
|
||||
if (!I2->use_empty())
|
||||
I2->replaceAllUsesWith(I1);
|
||||
I1->intersectOptionalDataWith(I2);
|
||||
// TODO: Use combineMetadata here to preserve what metadata we can
|
||||
// (analogous to the hoisting case above).
|
||||
I2->eraseFromParent();
|
||||
|
||||
if (UpdateRE1)
|
||||
|
Loading…
Reference in New Issue
Block a user