From 360d0ef49804401c4bd97087a242d51124b7a911 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 13 Apr 2019 19:43:35 +0000 Subject: [PATCH] [InstCombine] Remove redundant/bogus mul_with_overflow combines As pointed out in D60518 folding mulo(%x, undef) to {undef, undef} isn't correct. As a correct version of this already exists in InstructionSimplify (https://github.com/llvm-mirror/llvm/blob/bd8056ef326e075cc500f3f0cfcd1193bc200594/lib/Analysis/InstructionSimplify.cpp#L4750-L4757) this is just dead code though. Drop it together with the mul(%x, 0) -> {0, false} fold that is also already handled by InstSimplify. Differential Revision: https://reviews.llvm.org/D60649 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358339 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/InstCombine/InstCombineCompares.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lib/Transforms/InstCombine/InstCombineCompares.cpp b/lib/Transforms/InstCombine/InstCombineCompares.cpp index 2c7d70e4db4..c73a095804b 100644 --- a/lib/Transforms/InstCombine/InstCombineCompares.cpp +++ b/lib/Transforms/InstCombine/InstCombineCompares.cpp @@ -4011,14 +4011,6 @@ bool InstCombiner::OptimizeOverflowCheck(OverflowCheckFlavor OCF, Value *LHS, case OCF_UNSIGNED_MUL: case OCF_SIGNED_MUL: { - // X * undef -> undef - if (isa(RHS)) - return SetResult(RHS, UndefValue::get(Builder.getInt1Ty()), false); - - // X * 0 -> {0, false} - if (match(RHS, m_Zero())) - return SetResult(RHS, Builder.getFalse(), false); - // X * 1 -> {X, false} if (match(RHS, m_One())) return SetResult(LHS, Builder.getFalse(), false); -- 2.40.0