- Aug 07, 2010
-
-
Jakob Stoklund Olesen authored
necessary. Sometimes, live range splitting doesn't shrink the current interval, but simply changes some instructions to use a new interval. That makes the original more suitable for spilling. In this case, we don't need to duplicate the original. llvm-svn: 110481
-
Bruno Cardoso Lopes authored
llvm-svn: 110480
-
- Aug 06, 2010
-
-
Dan Gohman authored
instead, as an example of what this looks like. llvm-svn: 110478
-
Bruno Cardoso Lopes authored
llvm-svn: 110468
-
Jim Grosbach authored
llvm-svn: 110466
-
Jim Grosbach authored
implementation of the function is equivalent, so no need to provide the target-specific version until/unless it needs to do something. llvm-svn: 110465
-
Jakob Stoklund Olesen authored
llvm-svn: 110464
-
Jakob Stoklund Olesen authored
After heavy editing of a live interval, it is much easier to simply renumber the live values instead of trying to keep track of the unused ones. llvm-svn: 110463
-
Owen Anderson authored
llvm-svn: 110460
-
Dan Gohman authored
llvm-svn: 110458
-
Dan Gohman authored
llvm-svn: 110456
-
Dan Gohman authored
llvm-svn: 110455
-
Jakob Stoklund Olesen authored
llvm-svn: 110454
-
Jakob Stoklund Olesen authored
llvm-svn: 110453
-
Jakob Stoklund Olesen authored
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
-
Rafael Espindola authored
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
-
Nick Lewycky authored
Also move 'default' case next to a real case to help compiler optimize in non-Debug builds. No functionality change. llvm-svn: 110435
-
Nick Lewycky authored
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
-
Ted Kremenek authored
llvm-svn: 110429
-
Bruno Cardoso Lopes authored
llvm-svn: 110427
-
Bruno Cardoso Lopes authored
llvm-svn: 110425
-
Bill Wendling authored
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
-
Dan Gohman authored
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
-
Owen Anderson authored
llvm-svn: 110416
-
Devang Patel authored
While emitting DBG_VALUE for registers spilled at the end of a block do not use location of MBB->end(). If a block does not have terminator then incoming iterator points to end(). llvm-svn: 110411
-
Owen Anderson authored
llvm-svn: 110410
-
Eric Christopher authored
llvm-svn: 110404
-
Jakob Stoklund Olesen authored
When a joined COPY changes subreg liveness, we keep it around as a KILL, otherwise it is safe to delete. llvm-svn: 110403
-
Jakob Stoklund Olesen authored
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
-
Dan Gohman authored
llvm-svn: 110401
-
Owen Anderson authored
ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
-
Dan Gohman authored
to IntrReadWriteArgMem, as it's for reading as well as writing. llvm-svn: 110395
-
Bruno Cardoso Lopes authored
Support very basic (doesn't include ABI support in the front-end, varags, ...) 256-bit argument passing and return for AVX llvm-svn: 110394
-
Dan Gohman authored
of BasicAA::getModRefInfo. This allows BasicAA to say that two memset calls to non-aliasing memory locations don't interfere. llvm-svn: 110393
-
Dan Gohman authored
llvm-svn: 110391
-
Owen Anderson authored
llvm-svn: 110388
-
Jakob Stoklund Olesen authored
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
-
Owen Anderson authored
llvm-svn: 110384
-
Owen Anderson authored
Split the tag and value members of LVILatticeVal in preparation for expanding the lattice to something that won't fit in two bits. llvm-svn: 110383
-
Dan Gohman authored
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
-