[llvm-commits] [llvm-gcc-4.2] r94876 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Duncan Sands baldrick at free.fr
Sat Jan 30 00:27:20 PST 2010


Author: baldrick
Date: Sat Jan 30 02:27:19 2010
New Revision: 94876

URL: http://llvm.org/viewvc/llvm-project?rev=94876&view=rev
Log:
GCC has a macro, TYPE_OVERFLOW_WRAPS, which checks flag_wrapv and whether
the type is signed or unsigned, like we do explicitly now.  Use the macro.

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=94876&r1=94875&r2=94876&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Sat Jan 30 02:27:19 2010
@@ -3315,7 +3315,7 @@
     if (V->getType()->isFPOrFPVector())
       return Builder.CreateFNeg(V);
     if (!isa<PointerType>(V->getType())) {
-      bool HasNSW = !TYPE_UNSIGNED(TREE_TYPE(exp)) && !flag_wrapv;
+      bool HasNSW = !TYPE_OVERFLOW_WRAPS(TREE_TYPE(exp));
       return HasNSW ? Builder.CreateNSWNeg(V) : Builder.CreateNeg(V);
     }
 
@@ -3529,11 +3529,11 @@
   Value *V;
   if (Opc == Instruction::SDiv && IsExactDiv)
     V = Builder.CreateExactSDiv(LHS, RHS);
-  else if (Opc == Instruction::Add && TyIsSigned && !flag_wrapv)
+  else if (Opc == Instruction::Add && !TYPE_OVERFLOW_WRAPS(TREE_TYPE(exp)))
     V = Builder.CreateNSWAdd(LHS, RHS);
-  else if (Opc == Instruction::Sub && TyIsSigned && !flag_wrapv)
+  else if (Opc == Instruction::Sub && !TYPE_OVERFLOW_WRAPS(TREE_TYPE(exp)))
     V = Builder.CreateNSWSub(LHS, RHS);
-  else if (Opc == Instruction::Mul && TyIsSigned && !flag_wrapv)
+  else if (Opc == Instruction::Mul && !TYPE_OVERFLOW_WRAPS(TREE_TYPE(exp)))
     V = Builder.CreateNSWMul(LHS, RHS);
   else
     V = Builder.CreateBinOp((Instruction::BinaryOps)Opc, LHS, RHS);





More information about the llvm-commits mailing list