summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Implement a proper getModRefInfo for va_arg.Dan Gohman2010-08-061-0/+17
| | | | llvm-svn: 110458
* Be more conservative in the face of volatile.Dan Gohman2010-08-061-8/+8
| | | | llvm-svn: 110456
* Fix a comment.Dan Gohman2010-08-061-2/+2
| | | | llvm-svn: 110455
* Add more verification of LiveIntervals.Jakob Stoklund Olesen2010-08-061-4/+58
| | | | llvm-svn: 110454
* Fix swapped COPY operands.Jakob Stoklund Olesen2010-08-061-2/+2
| | | | llvm-svn: 110453
* Don't try to verify LiveIntervals for physical registers.Jakob Stoklund Olesen2010-08-061-8/+4
| | | | | | | | | When a physical register is in use, some alias of that register has a live interval with a relevant live range. That is the sad state of intervals after physreg coalescing of subregs, and it is good enough for correct register allocation. llvm-svn: 110452
* Fix eabi calling convention when a 64 bit value shadows r3.Rafael Espindola2010-08-061-1/+1
| | | | | | | | | | | Without this what was happening was: * R3 is not marked as "used" * ARM backend thinks it has to save it to the stack because of vaarg * Offset computation correctly ignores it * Offsets are wrong llvm-svn: 110446
* Fix uninitialized variable warning.Nick Lewycky2010-08-061-2/+2
| | | | | | | | Also move 'default' case next to a real case to help compiler optimize in non-Debug builds. No functionality change. llvm-svn: 110435
* Work in progress, cleaning up MergeFuncs.Nick Lewycky2010-08-061-180/+40
| | | | | | | | Further clean up the comparison function by removing overly generalized "domains". Remove all understanding of ELF aliases and simplify folding code and comments. llvm-svn: 110434
* Update CMake build.Ted Kremenek2010-08-061-0/+1
| | | | llvm-svn: 110429
* Patterns to match AVX 256-bit horizontal arithmetic intrinsicsBruno Cardoso Lopes2010-08-061-14/+12
| | | | llvm-svn: 110427
* Patterns to match AVX 256-bit arithmetic intrinsicsBruno Cardoso Lopes2010-08-061-30/+75
| | | | llvm-svn: 110425
* Add the Optimize Compares pass (disabled by default).Bill Wendling2010-08-064-0/+180
| | | | | | | | | | | | | | | | This pass tries to remove comparison instructions when possible. For instance, if you have this code: sub r1, 1 cmp r1, 0 bz L1 and "sub" either sets the same flag as the "cmp" instruction or could be converted to set the same flag, then we can eliminate the "cmp" instruction all together. This is a important for ARM where the ALU instructions could set the CPSR flag, but need a special suffix ('s') to do so. llvm-svn: 110423
* Move all the logic for function attributes and call attributes out of theDan Gohman2010-08-062-179/+238
| | | | | | | | | | | | | AliasAnalysis base class and into BasicAliasAnalyais. This avoids confusion about where such logic is happening when there are other AliasAnalysis implementations present. Move the logic for translating two-callsite getModRefInfo queries into other AliasAnalysis queries out of BasicAliasAnalysis and into the AliasAnalysis base class, as it is useful for other AliasAnalysis implementations. llvm-svn: 110421
* Fix botched revert.Owen Anderson2010-08-061-4/+4
| | | | llvm-svn: 110416
* While emitting DBG_VALUE for registers spilled at the end of a block do not ↵Devang Patel2010-08-061-1/+8
| | | | | | use location of MBB->end(). If a block does not have terminator then incoming iterator points to end(). llvm-svn: 110411
* Revert r110396 to fix buildbots.Owen Anderson2010-08-06172-339/+324
| | | | llvm-svn: 110410
* Add an option to always emit realignment code for a particular module.Eric Christopher2010-08-051-1/+34
| | | | llvm-svn: 110404
* Be more aggressive about removing joined physreg copies.Jakob Stoklund Olesen2010-08-051-3/+10
| | | | | | | When a joined COPY changes subreg liveness, we keep it around as a KILL, otherwise it is safe to delete. llvm-svn: 110403
* Don't verify LiveVariables if LiveIntervals is available.Jakob Stoklund Olesen2010-08-051-12/+13
| | | | | | | | LiveVariables becomes horribly wrong while the coalescer is running, but the analysis is not zapped until after the coalescer pass has run. This causes tons of false reports when calling verify form the coalescer. llvm-svn: 110402
* Fix 80-column violations.Dan Gohman2010-08-051-6/+6
| | | | llvm-svn: 110401
* Don't use PassInfo* as a type identifier for passes. Instead, use the ↵Owen Anderson2010-08-05172-328/+343
| | | | | | | | address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
* Remove IntrWriteMem, as it's the default. Rename IntrWriteArgMemDan Gohman2010-08-051-9/+3
| | | | | | to IntrReadWriteArgMem, as it's for reading as well as writing. llvm-svn: 110395
* Support very basic (doesn't include ABI support in the front-end, varags, ↵Bruno Cardoso Lopes2010-08-052-4/+30
| | | | | | ...) 256-bit argument passing and return for AVX llvm-svn: 110394
* Implement AccessesArguments checking in the two-callsite formDan Gohman2010-08-051-2/+32
| | | | | | | of BasicAA::getModRefInfo. This allows BasicAA to say that two memset calls to non-aliasing memory locations don't interfere. llvm-svn: 110393
* Yes, we can do better, but this is not the place for it.Dan Gohman2010-08-051-1/+0
| | | | llvm-svn: 110391
* Add the beginnings of infrastructure for range tracking.Owen Anderson2010-08-051-6/+60
| | | | llvm-svn: 110388
* Add basic verification of LiveIntervals.Jakob Stoklund Olesen2010-08-051-0/+59
| | | | | | | | | | | | | | We verify that the LiveInterval is live at uses and defs, and that all instructions have a SlotIndex. Stuff we don't check yet: - Is the LiveInterval minimal? - Do all defs correspond to instructions or phis? - Do all defs dominate all their live ranges? - Are all live ranges continually reachable from their def? llvm-svn: 110386
* Give JumpThreading+LVI a long-form cl::opt so that it's easier to toggle the ↵Owen Anderson2010-08-051-1/+4
| | | | | | default. llvm-svn: 110384
* Split the tag and value members of LVILatticeVal in preparation for ↵Owen Anderson2010-08-051-14/+14
| | | | | | expanding the lattice to something that won't fit in two bits. llvm-svn: 110383
* Fix memdep's code for reasoning about dependences between two calls. A RefDan Gohman2010-08-052-20/+14
| | | | | | | | | | response from getModRefInfo is not useful here. Instead, check for identical calls only in the NoModRef case. Reapply r110270, and strengthen it to compensate for the memdep changes. When both calls are readonly, there is no dependence between them. llvm-svn: 110382
* remove the private hack from CallInst, it was not supposed to hit the branch ↵Gabor Greif2010-08-051-1/+1
| | | | | | | | | anyway as a positive consequence the CallSite::getCallee() methods now can be rewritten to be a bit more efficient llvm-svn: 110380
* Handle the memory barrier pseudo that goes to nothing for the JIT.Eric Christopher2010-08-051-1/+7
| | | | llvm-svn: 110371
* Set hasSideEffects on the 64-bit no-sse memory barrier.Eric Christopher2010-08-051-1/+1
| | | | llvm-svn: 110369
* For local variables in functions with a frame pointer, use FP as a baseJim Grosbach2010-08-052-18/+39
| | | | | | | | | | register for local access when it's closer to the stack slot being refererenced than the stack pointer. Make sure to take into account any argument frame SP adjustments that are in affect at the time. rdar://8256090 llvm-svn: 110366
* Fix indentation.Bob Wilson2010-08-051-6/+6
| | | | llvm-svn: 110363
* Remove double-def checking from MachineVerifier, so a register does not have toJakob Stoklund Olesen2010-08-052-89/+18
| | | | | | | | | | be killed before being redefined. These checks are usually disabled, and usually fail when enabled. We de facto allow live registers to be redefined without a kill, the corresponding assertions in RegScavenger were removed long ago. llvm-svn: 110362
* Add an ARM RSCrr instruction for disassembly only.Bob Wilson2010-08-051-0/+8
| | | | | | Partial fix for PR7792. llvm-svn: 110361
* Be a little bit more specific about target for the memory barrierEric Christopher2010-08-052-2/+4
| | | | | | instructions. llvm-svn: 110360
* Handle the pseudo in MCInstLower.Eric Christopher2010-08-051-0/+6
| | | | llvm-svn: 110359
* Add an ARM RSBrr instruction for disassembly only.Bob Wilson2010-08-051-1/+9
| | | | | | Partial fix for PR7792. llvm-svn: 110358
* Avoid using a live std::multimap iterator while editing the map. It looks likeJakob Stoklund Olesen2010-08-051-7/+13
| | | | | | | we sometimes compare singular iterators, reported by ENABLE_EXPENSIVE_CHECKS. This fixes PR7825. llvm-svn: 110355
* Silence a GCC warning about && and || without explicit parentheses. ThisChandler Carruth2010-08-051-3/+3
| | | | | | | preserves the existing behavior, as it seems a concious choice to allow RS to be null and BigStack marked true. llvm-svn: 110307
* Revert r110270 for now. It appears to uncover a memdep bug.Dan Gohman2010-08-051-2/+2
| | | | llvm-svn: 110293
* ARM "rrx" shift operands do not have an immediate. PR7790.Bob Wilson2010-08-052-24/+18
| | | | llvm-svn: 110292
* The trouble with testing for "ModRef" and "NoModRef" is thatDan Gohman2010-08-041-6/+6
| | | | | | | one is a suffix of the other, and FileCheck accepts superstrings. Adjust the output to avoid this problem. llvm-svn: 110280
* The lower invoke pass needs to have unreachable code elimination run after itBill Wendling2010-08-041-2/+4
| | | | | | because it could create such things. This fixes a MingW buildbot test failure. llvm-svn: 110279
* Make x86-64 membarriers work without sse and clean up some of theEric Christopher2010-08-043-4/+14
| | | | | | uses. llvm-svn: 110274
* The two-callsite form of AliasAnalysis::getModRefInfo is documentedDan Gohman2010-08-042-2/+34
| | | | | | | | | | to return Ref if the left callsite only reads memory read or written by the right callsite; fix BasicAliasAnalysis to implement this. Add AliasAnalysisEvaluator support for testing the two-callsite form of getModRefInfo. llvm-svn: 110270
* and back in. false alarm on the tests from another unrelated local change.Jim Grosbach2010-08-041-2/+7
| | | | llvm-svn: 110269
OpenPOWER on IntegriCloud