- Aug 14, 2010
-
-
Jim Grosbach authored
experimental pass that allocates locals relative to one another before register allocation and then assigns them to actual stack slots as a block later in PEI. This will eventually allow targets with limited index offset range to allocate additional base registers (not just FP and SP) to more efficiently reference locals, as well as handle situations where locals cannot be referenced via SP or FP at all (dynamic stack realignment together with variable sized objects, for example). It's currently incomplete and almost certainly buggy. Work in progress. Disabled by default and gated via the -enable-local-stack-alloc command line option. rdar://8277890 llvm-svn: 111059
-
Dan Gohman authored
had its address taken. llvm-svn: 111058
-
Bob Wilson authored
This fixes another part of PR7792. llvm-svn: 111057
-
Jakob Stoklund Olesen authored
The earliestStart argument is entirely specific to linear scan allocation, and can be easily calculated by RegAllocLinearScan. Replace std::vector with SmallVector. llvm-svn: 111055
-
Bob Wilson authored
llvm-svn: 111050
-
- Aug 13, 2010
-
-
Bob Wilson authored
instruction opcode. This fixes part of PR7792. llvm-svn: 111047
-
Dan Gohman authored
when they are the same loop. Don't compare two instructions' loop depths when they are in the same block. llvm-svn: 111045
-
Jakob Stoklund Olesen authored
When a live range is contained a single block, we can split it around instruction clusters. The current approach is very primitive, splitting before and after the largest gap between uses. llvm-svn: 111043
-
Dan Gohman authored
ScalarEvolution::getAddExpr, which can be pretty expensive, when nothing has changed, which is pretty common. llvm-svn: 111042
-
Bruno Cardoso Lopes authored
llvm-svn: 111041
-
Jim Grosbach authored
llvm-svn: 111040
-
Dan Gohman authored
rather than testing whether the loop contains the other's header. llvm-svn: 111039
-
Dan Gohman authored
llvm-svn: 111038
-
Dan Gohman authored
the constant operand on the left, as that's where ScalarEvolution will end up canonicalizing to. llvm-svn: 111037
-
Dan Gohman authored
associated loop. This avoids potentially expensive traversals of the add recurrence's operands. llvm-svn: 111034
-
Jim Grosbach authored
llvm-svn: 111033
-
Mikhail Glushenkov authored
Apparently, this is now fixed in Clang. llvm-svn: 111032
-
Dan Gohman authored
since they can support trivial implementations. This avoids potentially expensive traversals of the operands. llvm-svn: 111031
-
Bob Wilson authored
same lines as the change I made for ARM saturate instructions. llvm-svn: 111029
-
Dale Johannesen authored
misanalysis and is undesirable. llvm-svn: 111028
-
Bruno Cardoso Lopes authored
llvm-svn: 111022
-
Bruno Cardoso Lopes authored
llvm-svn: 111021
-
Jim Grosbach authored
llvm-svn: 111019
-
Mikhail Glushenkov authored
llvm-svn: 111010
-
Mikhail Glushenkov authored
llvm-svn: 111008
-
Mikhail Glushenkov authored
llvm-svn: 111007
-
Mikhail Glushenkov authored
llvm-svn: 111004
-
Eric Christopher authored
llvm-svn: 111001
-
Eric Christopher authored
llvm-svn: 111000
-
Mikhail Glushenkov authored
llvm-svn: 110999
-
Mikhail Glushenkov authored
Tested on Linux and Darwin; please add platform-specific XFAILs/mail me a bug report if this still fails. llvm-svn: 110998
-
Jakob Stoklund Olesen authored
numbers match. The old check could accidentally leave holes in openli. Also let useIntv add all ranges for the phi-def value inserted by enterIntvAtEnd. This works as long at the value mapping is established in enterIntvAtEnd. llvm-svn: 110995
-
Jakob Stoklund Olesen authored
function to do it. llvm-svn: 110994
-
Benjamin Kramer authored
llvm-svn: 110991
-
Nate Begeman authored
llvm-svn: 110987
-
Nate Begeman authored
Move some code from Verifier into SVI::isValidOperands. This allows us to catch bad shufflevector operations when they are created, rather than waiting for someone to notice later on. llvm-svn: 110986
-
Dan Gohman authored
llvm-svn: 110983
-
Dan Gohman authored
llvm-svn: 110982
-
Dan Gohman authored
llvm-svn: 110981
-
Jakob Stoklund Olesen authored
This can happen if the original interval has been broken into two disconnected parts. Ideally, we should be able to detect when the graph is disconnected and create separate intervals, but that code is not implemented yet. Example: Two basic blocks are both branching to a loop header. Our interval is defined in both basic blocks, and live into the loop along both edges. We decide to split the interval around the loop. The interval is split into an inside part and an outside part. The outside part now has two disconnected segments, one in each basic block. If we later decide to split the outside interval into single blocks, we get one interval per basic block and an empty dupli for the remainder. llvm-svn: 110976
-