[llvm-commits] [llvm] r51176 - in /llvm/trunk: lib/Transforms/Scalar/InstructionCombining.cpp test/Transforms/InstCombine/div.ll
Chris Lattner
sabre at nondot.org
Thu May 15 19:59:42 PDT 2008
Author: lattner
Date: Thu May 15 21:59:42 2008
New Revision: 51176
URL: http://llvm.org/viewvc/llvm-project?rev=51176&view=rev
Log:
implement PR2328.
Modified:
llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
llvm/trunk/test/Transforms/InstCombine/div.ll
Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp?rev=51176&r1=51175&r2=51176&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Thu May 15 21:59:42 2008
@@ -3012,6 +3012,10 @@
Instruction *InstCombiner::commonIDivTransforms(BinaryOperator &I) {
Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
+ // (sdiv X, X) --> 1 (udiv X, X) --> 1
+ if (Op0 == Op1)
+ return ReplaceInstUsesWith(I, ConstantInt::get(I.getType(), 1));
+
if (Instruction *Common = commonDivTransforms(I))
return Common;
Modified: llvm/trunk/test/Transforms/InstCombine/div.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/div.ll?rev=51176&r1=51175&r2=51176&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/div.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/div.ll Thu May 15 21:59:42 2008
@@ -1,8 +1,6 @@
; This test makes sure that div instructions are properly eliminated.
-;
; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep div
-; END.
define i32 @test1(i32 %A) {
%B = sdiv i32 %A, 1 ; <i32> [#uses=1]
@@ -72,3 +70,15 @@
%B = udiv i32 %X, %A ; <i32> [#uses=1]
ret i32 %B
}
+
+; PR2328
+define i32 @test12(i32 %x) nounwind {
+ %tmp3 = udiv i32 %x, %x ; 1
+ ret i32 %tmp3
+}
+
+define i32 @test13(i32 %x) nounwind {
+ %tmp3 = sdiv i32 %x, %x ; 1
+ ret i32 %tmp3
+}
+
More information about the llvm-commits
mailing list