[llvm-commits] [llvm-gcc-4.2] r91663 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
Dan Gohman
gohman at apple.com
Thu Dec 17 18:59:06 PST 2009
Author: djg
Date: Thu Dec 17 20:59:05 2009
New Revision: 91663
URL: http://llvm.org/viewvc/llvm-project?rev=91663&view=rev
Log:
Add the NSW bit to integer negation operators.
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=91663&r1=91662&r2=91663&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Thu Dec 17 20:59:05 2009
@@ -3173,8 +3173,10 @@
Value *V = Emit(TREE_OPERAND(exp, 0), 0);
if (V->getType()->isFPOrFPVector())
return Builder.CreateFNeg(V);
- if (!isa<PointerType>(V->getType()))
- return Builder.CreateNeg(V);
+ if (!isa<PointerType>(V->getType())) {
+ bool HasNSW = !TYPE_UNSIGNED(TREE_TYPE(exp)) && !flag_wrapv;
+ return HasNSW ? Builder.CreateNSWNeg(V) : Builder.CreateNeg(V);
+ }
// GCC allows NEGATE_EXPR on pointers as well. Cast to int, negate, cast
// back.
More information about the llvm-commits
mailing list