[cfe-commits] r99817 - /cfe/trunk/lib/CodeGen/CGExprScalar.cpp

Chris Lattner sabre at nondot.org
Mon Mar 29 10:28:16 PDT 2010


Author: lattner
Date: Mon Mar 29 12:28:16 2010
New Revision: 99817

URL: http://llvm.org/viewvc/llvm-project?rev=99817&view=rev
Log:
emit signed integer subtractions as 'sub nsw', patch by
Anton Yartsev!

Modified:
    cfe/trunk/lib/CodeGen/CGExprScalar.cpp

Modified: cfe/trunk/lib/CodeGen/CGExprScalar.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprScalar.cpp?rev=99817&r1=99816&r2=99817&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGExprScalar.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExprScalar.cpp Mon Mar 29 12:28:16 2010
@@ -1337,6 +1337,11 @@
 
     if (Ops.LHS->getType()->isFPOrFPVectorTy())
       return Builder.CreateFSub(Ops.LHS, Ops.RHS, "sub");
+
+    // Signed integer overflow is undefined behavior.
+    if (Ops.Ty->isSignedIntegerType())
+      return Builder.CreateNSWSub(Ops.LHS, Ops.RHS, "sub");
+
     return Builder.CreateSub(Ops.LHS, Ops.RHS, "sub");
   }
 





More information about the cfe-commits mailing list