aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms/Scalar
AgeCommit message (Collapse)Author
2013-01-07[ObjCARC Debug Message] - Added debug message when fuse a retain/autorelease ↵Michael Gottesman
pair in ObjCARCContract::ContractAutorelease. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171679 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-07[ObjCARC Debug Message] - Added debug message when we zap a matching ↵Michael Gottesman
retain/autorelease pair in ObjCARCOpt::OptimizeReturns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171678 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-07[ObjCARC Debug Message] - Added debug message when we erase ARC calls with ↵Michael Gottesman
null since they are no-ops. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171677 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-06[ObjCARC Debug Message] - Added debug message when we add a nounwind keyword ↵Michael Gottesman
to a function which can not throw. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171676 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-06[ObjCARC Debug Message] - Added debug message when we add a tail keyword to ↵Michael Gottesman
a function which can never be passed stack args. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171675 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-06[ObjCARC Debug Messages] - Added missing newline.Michael Gottesman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171674 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-06Added debug statement to ObjCARC when we replace objc_autorelease(x) with ↵Michael Gottesman
objc_release(x) when x is otherwise unused. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171673 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-06Added 2x Debug statements to ObjCARC that log when we handle the two ↵Michael Gottesman
undefined pointer-to-weak-pointer is NULL cases by replacing the given call inst with an undefined value. The reason that there are two cases is that the first case handles the unary cases and the second the binary cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171672 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-06Added debug message in ObjCARC when we remove a no-op cast which has only ↵Michael Gottesman
special semantic meaning in the frontend and thus in the optimizer can be deleted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171670 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-06Added debug message to ObjCARC when we transform an ↵Michael Gottesman
objc_autoreleaseReturnValue => objc_autorelease due to its operand not being used as a return value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171669 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-06Fix a crash in LSR replaceCongruentIVs.Andrew Trick
Indirect branch in the preheader crashes replaceCongruentIVs. Fixes rdar://12910141. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171653 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-05Added debug message to ObjCARC when we transform ↵Michael Gottesman
objc_retainAutorelasedReturnValue => objc_retain since the operand to said function is not a return value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171629 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-05Added debug message for ObjCARC when we zap an ↵Michael Gottesman
objc_autoreleaseReturnValue/objc_retainAutoreleasedValue pair. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171628 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-05switch from pointer equality comparison to MDNode::getMostGenericTBAA Chris Lattner
when merging two TBAA tags, pointed out by Nuno. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171627 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-05Switch LoopIdiomRecognize to directly use the TargetTransformInfoChandler Carruth
interface rather than the ScalarTargetTransformInterface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171616 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-05Sink the AddressingModeMatcher helper class into an anonymous namespaceChandler Carruth
next to its only user. This helper relies on TargetLowering information that shouldn't be generally used throughout the Transfoms library, and so it made little sense as a generic utility. This also consolidates the file where we need to remove the remaining uses of TargetLowering in favor of the IR-layer abstract interface in TargetTransformInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171590 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-04Added DEBUG message to ObjCARC when we optimize objc_retain => ↵Michael Gottesman
objc_retainAutorelasedReturnValue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171535 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-04Fixed up some DEBUG messages where I was putting in the text of a message ↵Michael Gottesman
the method where it was being called when I should have just prefixed the actual message with Pass::Method. Additionally I fixed some whitespace issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171534 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-03Changed two debug statements that state that a queue had finished being ↵Michael Gottesman
processed when said queue was really a list to state a list had finished being processed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171465 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-03Added DEBUG message for ObjCARC when we zap a push/pop pair in ↵Michael Gottesman
ObjCARCAPElim::OptimizeBB. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171464 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-03Added DEBUG message to ObjCARC when we transform objc_initWeak(p, null) => ↵Michael Gottesman
*p = null. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171463 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-03Added DEBUG message for ObjCARC when an inline asm marker is inserted for ↵Michael Gottesman
architectures where this is required to perform a retainAutoreleasedReturnValue optimization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171462 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-02- Add comment to two functions which might be considered as dead code. Shuxin Yang
- Fix a typo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171399 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-02Move all of the header files which are involved in modelling the LLVM IRChandler Carruth
into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-02Resort the #include lines in include/... and lib/... with theChandler Carruth
utils/sort_includes.py script. Most of these are updating the new R600 target and fixing up a few regressions that have creeped in since the last time I sorted the includes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171362 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-01Add IRBuilder::CreateVectorSplat and use it to simplify code.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171349 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-01SROA: Clean up unused assignment warnings from clang's analyzer.Benjamin Kramer
No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171348 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-01Added DEBUG message when ObjCARC replaces a call which returns its argument ↵Michael Gottesman
verbatim with its argument to temporarily undo an optimization. Specifically these calls return their argument verbatim, as a low-level optimization. However, this makes high-level optimizations harder. We undo any uses of this optimization that the front-end emitted. We redo them later in the contract pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171346 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-01Added DEBUG messages to the top of several processing loops in ObjCARC.cpp ↵Michael Gottesman
that emit what instructions are being visited. This is a part of a larger effort of adding DEBUG messages to the ARC Optimizer Backend. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171345 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-31Fix LICM's memory promotion optimization to preserve TBAA tags whenChris Lattner
promoting a store in a loop. This was noticed when working on PR14753, but isn't directly related. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171281 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-30convert a bunch of callers from DataLayout::getIndexedOffset() to ↵Nuno Lopes
GEP::accumulateConstantOffset(). The later API is nicer than the former, and is correct regarding wrap-around offsets (if anyone cares). There are a few more places left with duplicated code, which I'll remove soon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171259 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-30Remove the Function::getFnAttributes method in favor of using the AttributeSetBill Wendling
directly. This is in preparation for removing the use of the 'Attribute' class as a collection of attributes. That will shift to the AttributeSet class instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171253 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-21Every pass deserves a name, even codegenprep.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170831 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-20Add a new attribute, 'noduplicate'. If a function contains a noduplicate ↵James Molloy
call, the call cannot be duplicated - Jump threading, loop unrolling, loop unswitching, and loop rotation are inhibited if they would duplicate the call. Similarly inlining of the function is inhibited, if that would duplicate the call (in particular inlining is still allowed when there is only one callsite and the function has internal linkage). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170704 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-19Rename the 'Attributes' class to 'Attribute'. It's going to represent a ↵Bill Wendling
single attribute in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170502 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-18SROA: Replace calls to getScalarSizeInBits to DataLayout's API becauseNadav Rotem
getScalarSizeInBits could not handle vectors of pointers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170412 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17Fix another SROA crasher, PR14601.Chandler Carruth
This was a silly oversight, we weren't pruning allocas which were used by variable-length memory intrinsics from the set that could be widened and promoted as integers. Fix that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170353 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17Teach the rewriting of memcpy calls to support subvector copies.Chandler Carruth
This also cleans up a bit of the memcpy call rewriting by sinking some irrelevant code further down and making the call-emitting code a bit more concrete. Previously, memcpy of a subvector would actually miscompile (!!!) the copy into a single vector element copy. I have no idea how this ever worked. =/ This is the memcpy half of PR14478 which we probably weren't noticing previously because it didn't actually assert. The rewrite relies on the newly refactored insert- and extractVector functions to do the heavy lifting, and those are the same as used for loads and stores which makes the test coverage a bit more meaningful here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170338 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17Optimize tree walking in markAliveBlocks.Evgeniy Stepanov
Check whether a BB is known as reachable before adding it to the worklist. This way BB's with multiple predecessors are added to the list no more than once. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170335 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17Fix a secondary bug I introduced while fixing the first part of PR14478.Chandler Carruth
The first half of fixing this bug was actually in r170328, but was entirely coincidental. It did however get me to realize the nature of the bug, and adapt the test case to test more interesting behavior. In turn, that uncovered the rest of the bug which I've fixed here. This should fix two new asserts that showed up in the vectorize nightly tester. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170333 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17Hoist a convertValue call to the two paths where it is needed.Chandler Carruth
I noticed this while looking at r170328. We only ever do a vector rewrite when the alloca *is* the vector type, so it's good to not paper over bugs here by doing a convertValue that isn't needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170331 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17Hoist the insertVector helper to be a static helper.Chandler Carruth
This will allow its use inside of memcpy rewriting as well. This routine is more complex than extractVector, and some of its uses are not 100% where I want them to be so there is still some work to do here. While this can technically change the output in some cases, it shouldn't be a change that matters -- IE, it can leave some dead code lying around that prior versions did not, etc. Yet another step in the refactorings leading up to the solution to the last component of PR14478. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170328 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17Lift the extractVector helper all the way out to a static helper function.Chandler Carruth
The method helpers all implicitly act upon the alloca, and what we really want is a fully generic helper. Doing memcpy rewrites is more special than all other rewrites because we are at times rewriting instructions which touch pointers *other* than the alloca. As a consequence all of the helpers needed by memcpy rewriting of sub-vector copies will need to be generalized fully. Note that all of these helpers ({insert,extract}{Integer,Vector}) are woefully uncommented. I'm going to go back through and document them once I get the factoring correct. No functionality changed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170325 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17Factor the vector load rewriting into a more generic form.Chandler Carruth
This makes it suitable for use in rewriting memcpy in the presence of subvector memcpy intrinsics. No functionality changed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170324 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17Fix the first part of PR14478: memset now works.Chandler Carruth
PR14478 highlights a serious problem in SROA that simply wasn't being exercised due to a lack of vector input code mixed with C-library function calls. Part of SROA was written carefully to handle subvector accesses via memset and memcpy, but the rewriter never grew support for this. Fixing it required refactoring the subvector access code in other parts of SROA so it could be shared, and then fixing the splat formation logic and using subvector insertion (this patch). The PR isn't quite fixed yet, as memcpy is still broken in the same way. I'm starting on that series of patches now. Hopefully this will be enough to bring the bullet benchmark back to life with the bb-vectorizer enabled, but that may require fixing memcpy as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170301 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17Extract the logic for inserting a subvector into a vector alloca.Chandler Carruth
No functionality changed. Another step of refactoring toward solving PR14487. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170300 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17Lift the integer splat computation into a helper function.Chandler Carruth
No functionality changed. Refactoring leading up to the fix for PR14478 which requires some significant changes to the memset and memcpy rewriting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170299 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-15Relax an overly aggressive assert to fix PR14572.Chandler Carruth
The alloca width is based on the alloc size, not the type size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170270 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-11Revert EVT->MVT changes, r169836-169851, due to buildbot failures.Patrik Hagglund
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169854 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-11Change TargetLowering::getLoadExtAction to take an MVT, instead of EVT.Patrik Hagglund
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169840 91177308-0d34-0410-b5e6-96231b3b80d8