Cleanup NUW/NSW handling.

llvm-svn: 125278
diff --git a/dragonegg/llvm-convert.cpp b/dragonegg/llvm-convert.cpp
index 9d5d989..7e519a8 100644
--- a/dragonegg/llvm-convert.cpp
+++ b/dragonegg/llvm-convert.cpp
@@ -1349,11 +1349,7 @@
 Value *TreeToLLVM::CreateAnyAdd(Value *LHS, Value *RHS, tree_node *type) {
   if (FLOAT_TYPE_P(type))
     return Builder.CreateFAdd(LHS, RHS);
-  if (TYPE_OVERFLOW_WRAPS(type))
-    return Builder.CreateAdd(LHS, RHS);
-  if (TYPE_UNSIGNED(type))
-    return Builder.CreateNUWAdd(LHS, RHS);
-  return Builder.CreateNSWAdd(LHS, RHS);
+  return Builder.CreateAdd(LHS, RHS, "", hasNUW(type), hasNSW(type));
 }
 
 /// CreateAnyMul - Multiply two LLVM scalar values with the given GCC type.
@@ -1361,11 +1357,7 @@
 Value *TreeToLLVM::CreateAnyMul(Value *LHS, Value *RHS, tree_node *type) {
   if (FLOAT_TYPE_P(type))
     return Builder.CreateFMul(LHS, RHS);
-  if (TYPE_OVERFLOW_WRAPS(type))
-    return Builder.CreateMul(LHS, RHS);
-  if (TYPE_UNSIGNED(type))
-    return Builder.CreateNUWMul(LHS, RHS);
-  return Builder.CreateNSWMul(LHS, RHS);
+  return Builder.CreateMul(LHS, RHS, "", hasNUW(type), hasNSW(type));
 }
 
 /// CreateAnyNeg - Negate an LLVM scalar value with the given GCC type.  Does
@@ -1373,11 +1365,7 @@
 Value *TreeToLLVM::CreateAnyNeg(Value *V, tree_node *type) {
   if (FLOAT_TYPE_P(type))
     return Builder.CreateFNeg(V);
-  if (TYPE_OVERFLOW_WRAPS(type))
-    return Builder.CreateNeg(V);
-  if (TYPE_UNSIGNED(type))
-    return Builder.CreateNUWNeg(V);
-  return Builder.CreateNSWNeg(V);
+  return Builder.CreateNeg(V, "", hasNUW(type), hasNSW(type));
 }
 
 /// CreateAnySub - Subtract two LLVM scalar values with the given GCC type.
@@ -1385,11 +1373,7 @@
 Value *TreeToLLVM::CreateAnySub(Value *LHS, Value *RHS, tree_node *type) {
   if (FLOAT_TYPE_P(type))
     return Builder.CreateFSub(LHS, RHS);
-  if (TYPE_OVERFLOW_WRAPS(type))
-    return Builder.CreateSub(LHS, RHS);
-  if (TYPE_UNSIGNED(type))
-    return Builder.CreateNUWSub(LHS, RHS);
-  return Builder.CreateNSWSub(LHS, RHS);
+  return Builder.CreateSub(LHS, RHS, "", hasNUW(type), hasNSW(type));
 }
 
 /// CreateTemporary - Create a new alloca instruction of the specified type,
@@ -5356,9 +5340,9 @@
   Value *IndexVal = EmitRegister(Index);
   tree LowerBound = array_ref_low_bound(exp);
   if (!integer_zerop(LowerBound))
-    IndexVal = TYPE_UNSIGNED(TREE_TYPE(Index)) ?
-      Builder.CreateSub(IndexVal, EmitRegister(LowerBound)) :
-      Builder.CreateNSWSub(IndexVal, EmitRegister(LowerBound));
+    IndexVal = Builder.CreateSub(IndexVal, EmitRegister(LowerBound), "",
+                                 hasNUW(TREE_TYPE(Index)),
+                                 hasNSW(TREE_TYPE(Index)));
 
   LValue ArrayAddrLV = EmitLV(Array);
   assert(!ArrayAddrLV.isBitfield() && "Arrays cannot be bitfields!");
@@ -8862,8 +8846,8 @@
   tree LowerBound = array_ref_low_bound(exp);
   if (!integer_zerop(LowerBound))
     IndexVal = TheFolder->CreateSub(IndexVal, Convert(LowerBound),
-                                    /*HasNUW*/hasNUW(TREE_TYPE(Index)),
-                                    /*HasNSW*/hasNSW(TREE_TYPE(Index)));
+                                    hasNUW(TREE_TYPE(Index)),
+                                    hasNSW(TREE_TYPE(Index)));
 
   const Type *IntPtrTy = getTargetData().getIntPtrType(Context);
   IndexVal = TheFolder->CreateIntCast(IndexVal, IntPtrTy,