[llvm-commits] [llvm-gcc-4.2] r78764 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
Dan Gohman
gohman at apple.com
Tue Aug 11 18:16:25 PDT 2009
Author: djg
Date: Tue Aug 11 20:16:25 2009
New Revision: 78764
URL: http://llvm.org/viewvc/llvm-project?rev=78764&view=rev
Log:
Use the new nsw form of add for signed integer addition.
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=78764&r1=78763&r2=78764&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Tue Aug 11 20:16:25 2009
@@ -3605,6 +3605,7 @@
bool RHSIsSigned = !TYPE_UNSIGNED(TREE_TYPE(TREE_OPERAND(exp, 1)));
bool TyIsSigned = !TYPE_UNSIGNED(TREE_TYPE(exp));
bool IsExactDiv = TREE_CODE(exp) == EXACT_DIV_EXPR;
+ bool IsPlus = TREE_CODE(exp) == PLUS_EXPR;
LHS = CastToAnyType(LHS, LHSIsSigned, Ty, TyIsSigned);
RHS = CastToAnyType(RHS, RHSIsSigned, Ty, TyIsSigned);
@@ -3626,6 +3627,8 @@
Value *V;
if (Opc == Instruction::SDiv && IsExactDiv)
V = Builder.CreateExactSDiv(LHS, RHS);
+ else if (Opc == Instruction::Add && IsPlus && TyIsSigned && !flag_wrapv)
+ V = Builder.CreateNSWAdd(LHS, RHS);
else
V = Builder.CreateBinOp((Instruction::BinaryOps)Opc, LHS, RHS);
if (ResTy != Ty)
More information about the llvm-commits
mailing list