| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | Revert "InstCombine: Turn mul.with.overflow(X, 2) into the cheaper ↵ | Benjamin Kramer | 2011-05-21 | 1 | -14/+0 |
| | | | | | | | | | add.with.overflow(X, X)" It's better to do this in codegen, mul.with.overflow(X, 2) is more canonical because it has only one use on "X". llvm-svn: 131798 | ||||
| * | InstCombine: Turn mul.with.overflow(X, 2) into the cheaper ↵ | Benjamin Kramer | 2011-05-21 | 1 | -0/+14 |
| | | | | | | | add.with.overflow(X, X) llvm-svn: 131789 | ||||
| * | Add comment. | Evan Cheng | 2011-05-19 | 1 | -0/+1 |
| | | | | | llvm-svn: 131659 | ||||
| * | More instcombine cleanup, towards improving debug line info. | Eli Friedman | 2011-05-18 | 1 | -1/+1 |
| | | | | | llvm-svn: 131604 | ||||
| * | More instcombine cleanup aimed towards improving debug line info. | Eli Friedman | 2011-05-18 | 1 | -21/+18 |
| | | | | | llvm-svn: 131559 | ||||
| * | Fix inelegant initialization. | Stuart Hastings | 2011-05-18 | 1 | -2/+1 |
| | | | | | llvm-svn: 131538 | ||||
| * | Start trying to make InstCombine preserve more debug info. The idea here is ↵ | Eli Friedman | 2011-05-18 | 1 | -5/+5 |
| | | | | | | | | | | | to set the debug location on the IRBuilder, which will be then right location in most cases. This should magically give many transformations debug locations, and fixing places which are missing a debug location will usually just means changing the code creating it to use the IRBuilder. As an example, the change to InstCombineCalls catches a common case where a call to a bitcast of a function is rewritten. Chris, does this approach look reasonable? llvm-svn: 131516 | ||||
| * | Use ReplaceInstUsesWith instead of replaceAllUsesWith where appropriate in ↵ | Eli Friedman | 2011-05-18 | 1 | -6/+6 |
| | | | | | | | instcombine. llvm-svn: 131512 | ||||
| * | X86 pmovsx/pmovzx ignore the upper half of their inputs. | Stuart Hastings | 2011-05-17 | 1 | -0/+22 |
| | | | | | | | rdar://problem/6945110 llvm-svn: 131493 | ||||
| * | Reapply r129401 with patch for clang. | Bill Wendling | 2011-04-13 | 1 | -5/+1 |
| | | | | | llvm-svn: 129419 | ||||
| * | Revert r129401 for now. Clang is using the old way of doing things. | Bill Wendling | 2011-04-12 | 1 | -1/+5 |
| | | | | | llvm-svn: 129403 | ||||
| * | Remove the unaligned load intrinsics in favor of using native unaligned loads. | Bill Wendling | 2011-04-12 | 1 | -5/+1 |
| | | | | | | | | | | Now that we have a first-class way to represent unaligned loads, the unaligned load intrinsics are superfluous. First part of <rdar://problem/8460511>. llvm-svn: 129401 | ||||
| * | Use APInt's umul_ov instead of rolling our own overflow detection. | Benjamin Kramer | 2011-03-27 | 1 | -5/+6 |
| | | | | | llvm-svn: 128380 | ||||
| * | If we don't know how long a string is we can't fold an _chk version to the | Eric Christopher | 2011-03-15 | 1 | -3/+7 |
| | | | | | | | | | normal version. Fixes rdar://9123638 llvm-svn: 127636 | ||||
| * | InstCombine: Turn umul_with_overflow into mul nuw if we can prove that it ↵ | Benjamin Kramer | 2011-03-10 | 1 | -1/+29 |
| | | | | | | | | | | | cannot overflow. This happens a lot in clang-compiled C++ code because it adds overflow checks to operator new[]: unsigned *foo(unsigned n) { return new unsigned[n]; } We can optimize away the overflow check on 64 bit targets because (uint64_t)n*4 cannot overflow. llvm-svn: 127418 | ||||
| * | change instcombine to not turn a call to non-varargs bitcast of | Chris Lattner | 2011-02-24 | 1 | -5/+15 |
| | | | | | | | | | | function prototype into a call to a varargs prototype. We do allow the xform if we have a definition, but otherwise we don't want to risk that we're changing the abi in a subtle way. On X86-64, for example, varargs require passing stuff in %al. llvm-svn: 126363 | ||||
| * | Teach instcombine about the rest of the SSE and SSE2 conversion | Chandler Carruth | 2011-01-10 | 1 | -4/+11 |
| | | | | | | | intrinsics element dependencies. Reviewed by Nick. llvm-svn: 123161 | ||||
| * | Revert 122959, it needs more thought. Add it back to README.txt with ↵ | Benjamin Kramer | 2011-01-07 | 1 | -4/+0 |
| | | | | | | | additional notes. llvm-svn: 123030 | ||||
| * | InstCombine: Turn _chk functions into the "unsafe" variant if length and max ↵ | Benjamin Kramer | 2011-01-06 | 1 | -0/+2 |
| | | | | | | | | | langth are equal. This happens when we take the (non-constant) length from a malloc. llvm-svn: 122961 | ||||
| * | InstCombine: If we call llvm.objectsize on a malloc call we can replace it ↵ | Benjamin Kramer | 2011-01-06 | 1 | -1/+5 |
| | | | | | | | with the size passed to malloc. llvm-svn: 122959 | ||||
| * | InstCombine: Teach llvm.objectsize folding to look through GEPs. | Benjamin Kramer | 2011-01-06 | 1 | -50/+41 |
| | | | | | llvm-svn: 122958 | ||||
| * | don't lose TD info | Chris Lattner | 2010-12-25 | 1 | -2/+2 |
| | | | | | llvm-svn: 122556 | ||||
| * | Move getOrEnforceKnownAlignment out of instcombine into Transforms/Utils. | Chris Lattner | 2010-12-25 | 1 | -97/+8 |
| | | | | | llvm-svn: 122554 | ||||
| * | fix PR8807 by making transformConstExprCastCall aware of byval arguments. | Chris Lattner | 2010-12-20 | 1 | -2/+15 |
| | | | | | llvm-svn: 122238 | ||||
| * | various cleanups for transformConstExprCastCall | Chris Lattner | 2010-12-20 | 1 | -13/+10 |
| | | | | | llvm-svn: 122237 | ||||
| * | Avoid dropping the address space when InstCombine optimizes memset | Mon P Wang | 2010-12-20 | 1 | -1/+3 |
| | | | | | llvm-svn: 122215 | ||||
| * | move a transformation to a more logical place, simplifying it. | Chris Lattner | 2010-12-19 | 1 | -16/+0 |
| | | | | | llvm-svn: 122183 | ||||
| * | optimize uadd(x, cst) into a comparison when the normal | Chris Lattner | 2010-12-19 | 1 | -0/+16 |
| | | | | | | | | result is dead. This is required for my next patch to not regress the testsuite. llvm-svn: 122181 | ||||
| * | Teach instcombine to set the alignment arguments for NEON load/store intrinsics. | Bob Wilson | 2010-10-22 | 1 | -0/+26 |
| | | | | | llvm-svn: 117154 | ||||
| * | fix PR8267 - Instcombine shouldn't optimizer away volatile memcpy's. | Chris Lattner | 2010-10-01 | 1 | -1/+6 |
| | | | | | llvm-svn: 115296 | ||||
| * | PR7853: fix a silly mistake introduced in r101899, and add a test to make sure | Eli Friedman | 2010-08-09 | 1 | -1/+1 |
| | | | | | | | it doesn't regress again. llvm-svn: 110597 | ||||
| * | Use unary + instead of a separate local variable for working | Dan Gohman | 2010-08-03 | 1 | -2/+1 |
| | | | | | | | around std::min vs static const friction. llvm-svn: 110112 | ||||
| * | Move MaximumAlignment to be a member of the Value class. | Dan Gohman | 2010-07-30 | 1 | -1/+2 |
| | | | | | llvm-svn: 109891 | ||||
| * | Define a maximum supported alignment value for load, store, and | Dan Gohman | 2010-07-28 | 1 | -1/+5 |
| | | | | | | | | | | alloca instructions (constrained by their internal encoding), and add error checking for it. Fix an instcombine bug which generated huge alignment values (null is infinitely aligned). This fixes undefined behavior noticed by John Regehr. llvm-svn: 109643 | ||||
| * | When user code intentionally dereferences null, the alignment of the | Dan Gohman | 2010-07-28 | 1 | -2/+7 |
| | | | | | | | | dereference is theoretically infinite. Put a cap on the computed alignment to avoid overflow, noticed by John Regehr. llvm-svn: 109596 | ||||
| * | undo 80 column trespassing I caused | Gabor Greif | 2010-07-22 | 1 | -7/+11 |
| | | | | | llvm-svn: 109092 | ||||
| * | eliminate CallInst::ArgOffset | Gabor Greif | 2010-07-16 | 1 | -3/+3 |
| | | | | | llvm-svn: 108522 | ||||
| * | use getArgOperand (corrected by CallInst::ArgOffset) instead of getOperand | Gabor Greif | 2010-06-30 | 1 | -3/+3 |
| | | | | | llvm-svn: 107275 | ||||
| * | use ArgOperand API | Gabor Greif | 2010-06-28 | 1 | -12/+12 |
| | | | | | llvm-svn: 107017 | ||||
| * | use ArgOperand API (some hunks I could split) | Gabor Greif | 2010-06-25 | 1 | -13/+13 |
| | | | | | llvm-svn: 106824 | ||||
| * | use (even more, still) ArgOperand API | Gabor Greif | 2010-06-24 | 1 | -8/+8 |
| | | | | | llvm-svn: 106750 | ||||
| * | use (even more) ArgOperand API | Gabor Greif | 2010-06-24 | 1 | -5/+5 |
| | | | | | llvm-svn: 106744 | ||||
| * | use ArgOperand API | Gabor Greif | 2010-06-24 | 1 | -6/+5 |
| | | | | | llvm-svn: 106743 | ||||
| * | use ArgOperand API | Gabor Greif | 2010-06-24 | 1 | -31/+30 |
| | | | | | llvm-svn: 106740 | ||||
| * | Teach instCombine to remove malloc+free if malloc's only uses are comparisons | Duncan Sands | 2010-05-27 | 1 | -0/+2 |
| | | | | | | | to null. Patch by Matti Niemenmaa. llvm-svn: 104871 | ||||
| * | further clarify alignment of globals, fix instcombine | Chris Lattner | 2010-04-28 | 1 | -17/+20 |
| | | | | | | | | to not increase the alignment of globals with an assigned alignment and section. llvm-svn: 102476 | ||||
| * | use abstract accessors to CallInst | Gabor Greif | 2010-04-20 | 1 | -2/+2 |
| | | | | | llvm-svn: 101899 | ||||
| * | Revert 101465, it broke internal OpenGL testing. | Eric Christopher | 2010-04-16 | 1 | -78/+81 |
| | | | | | | | | Probably the best way to know that all getOperand() calls have been handled is to replace that API instead of updating. llvm-svn: 101579 | ||||
| * | reapply r101434 | Gabor Greif | 2010-04-16 | 1 | -81/+78 |
| | | | | | | | | | | | | | | with a fix for self-hosting rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101465 | ||||
| * | back out r101423 and r101397, they break llvm-gcc self-host on darwin10 | Gabor Greif | 2010-04-16 | 1 | -78/+81 |
| | | | | | llvm-svn: 101434 | ||||

