[prev in list] [next in list] [prev in thread] [next in thread] 

List:       llvm-commits
Subject:    [llvm-commits] [dragonegg] r94913 -
From:       Duncan Sands <baldrick () free ! fr>
Date:       2010-01-30 18:21:56
Message-ID: 201001301821.o0UILuhh008428 () zion ! cs ! uiuc ! edu
[Download RAW message or body]

Author: baldrick
Date: Sat Jan 30 12:21:55 2010
New Revision: 94913

URL: http://llvm.org/viewvc/llvm-project?rev=94913&view=rev
Log:
Port commit 94876 (baldrick) from llvm-gcc:
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:
    dragonegg/trunk/llvm-convert.cpp

Modified: dragonegg/trunk/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/llvm-convert.cpp?rev=94913&r1=94912&r2=94913&view=diff


==============================================================================
--- dragonegg/trunk/llvm-convert.cpp (original)
+++ dragonegg/trunk/llvm-convert.cpp Sat Jan 30 12:21:55 2010
@@ -5978,7 +5978,7 @@
   if (TREE_CODE(TREE_TYPE(op)) != COMPLEX_TYPE) {
     if (V->getType()->isFPOrFPVector())
       return Builder.CreateFNeg(V);
-    bool HasNSW = !TYPE_UNSIGNED(TREE_TYPE(op)) && !flag_wrapv;
+    bool HasNSW = !TYPE_OVERFLOW_WRAPS(TREE_TYPE(op));
     return HasNSW ? Builder.CreateNSWNeg(V) : Builder.CreateNeg(V);
   }
 
@@ -6135,11 +6135,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(type))
     V = Builder.CreateNSWAdd(LHS, RHS);
-  else if (Opc == Instruction::Sub && TyIsSigned && !flag_wrapv)
+  else if (Opc == Instruction::Sub && !TYPE_OVERFLOW_WRAPS(type))
     V = Builder.CreateNSWSub(LHS, RHS);
-  else if (Opc == Instruction::Mul && TyIsSigned && !flag_wrapv)
+  else if (Opc == Instruction::Mul && !TYPE_OVERFLOW_WRAPS(type))
     V = Builder.CreateNSWMul(LHS, RHS);
   else
     V = Builder.CreateBinOp((Instruction::BinaryOps)Opc, LHS, RHS);


_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic