diff options
author | Piotr Padlewski <piotr.padlewski@gmail.com> | 2018-05-18 23:52:57 +0000 |
---|---|---|
committer | Piotr Padlewski <piotr.padlewski@gmail.com> | 2018-05-18 23:52:57 +0000 |
commit | a26a08cb52d4dd7fe69312930da01e1c55b91036 (patch) | |
tree | f3d16fcd266f7bb0ecd527883aece83ed47dc735 /llvm/lib/Transforms | |
parent | dbb6f8a8179b0604e25707b5c1b72be6164f62d9 (diff) | |
download | bcm5719-llvm-a26a08cb52d4dd7fe69312930da01e1c55b91036.tar.gz bcm5719-llvm-a26a08cb52d4dd7fe69312930da01e1c55b91036.zip |
Constant fold launder of null and undef
Summary:
This might be useful because clang will add
some barriers for pointer comparisons.
Reviewers: majnemer, dberlin, hfinkel, nlewycky, davide, rsmith, amharc,
kuhar
Subscribers: davide, amharc, llvm-commits
Differential Revision: https://reviews.llvm.org/D32423
llvm-svn: 332786
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Utils/Local.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp index 5eaeccb5a29..0be05d81fbd 100644 --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -384,8 +384,9 @@ bool llvm::wouldInstructionBeTriviallyDead(Instruction *I, // Special case intrinsics that "may have side effects" but can be deleted // when dead. if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(I)) { - // Safe to delete llvm.stacksave if dead. - if (II->getIntrinsicID() == Intrinsic::stacksave) + // Safe to delete llvm.stacksave and launder.invariant.group if dead. + if (II->getIntrinsicID() == Intrinsic::stacksave || + II->getIntrinsicID() == Intrinsic::launder_invariant_group) return true; // Lifetime intrinsics are dead when their right-hand is undef. |