- Nov 14, 2011
-
-
Akira Hatanaka authored
N32/64 places all variable arguments in integer registers (or on stack), regardless of their types, but follows calling convention of non-vaarg function when it handles fixed arguments. llvm-svn: 144553
-
Akira Hatanaka authored
llvm-svn: 144552
-
Justin Holewinski authored
PTX: Let LLVM use loads/stores for all mem* intrinsics, instead of relying on custom implementations. llvm-svn: 144551
-
Wesley Peck authored
llvm-svn: 144550
-
Akira Hatanaka authored
argument registers on the callee's stack frame, along with functions that set and get it. It is not necessary to add the size of this area when computing stack size in emitPrologue, since it has already been accounted for in PEI::calculateFrameObjectOffsets. llvm-svn: 144549
-
Eric Christopher authored
llvm-svn: 144548
-
Jakob Stoklund Olesen authored
I broke this in r144515, it affected most ARM testers. <rdar://problem/10441389> llvm-svn: 144547
-
Johnny Chen authored
llvm-svn: 144546
-
Johnny Chen authored
llvm-svn: 144545
-
Sean Callanan authored
a single argument. We assumed that the : was omitted from the selector name, but actually Clang adds the : in the one-argument case. llvm-svn: 144544
-
rdar://problem/10441578Bob Wilson authored
This still seems to be causing some failures. It needs more testing before it gets enabled again. llvm-svn: 144543
-
Jakob Stoklund Olesen authored
llvm-svn: 144542
-
Greg Clayton authored
llvm-svn: 144539
-
Jim Grosbach authored
llvm-svn: 144538
-
Benjamin Kramer authored
llvm-svn: 144537
-
Benjamin Kramer authored
llvm-svn: 144536
-
Daniel Dunbar authored
build/Make: Switch over to using llvm-config-2 for dependencies one more (hopefully last) time, now that it also builds as a build tool. llvm-svn: 144535
-
Chandler Carruth authored
cleans up all the chains allocated during the processing of each function so that for very large inputs we don't just grow memory usage without bound. llvm-svn: 144533
-
Chandler Carruth authored
tests when I forcibly enabled block placement. It is apparantly possible for an unanalyzable block to fallthrough to a non-loop block. I don't actually beleive this is correct, I believe that 'canFallThrough' is returning true needlessly for the code construct, and I've left a bit of a FIXME on the verification code to try to track down why this is coming up. Anyways, removing the assert doesn't degrade the correctness of the algorithm. llvm-svn: 144532
-
Chandler Carruth authored
this pass. We're leaving already merged blocks on the worklist, and scanning them again and again only to determine each time through that indeed they aren't viable. We can instead remove them once we're going to have to scan the worklist. This is the easy way to implement removing them. If this remains on the profile (as I somewhat suspect it will), we can get a lot more clever here, as the worklist's order is essentially irrelevant. We can use swapping and fold the two loops to reduce overhead even when there are many blocks on the worklist but only a few of them are removed. llvm-svn: 144531
-
Chandler Carruth authored
time it is queried to compute the probability of a single successor. This makes computing the probability of every successor of a block in sequence... really really slow. ;] This switches to a linear walk of the successors rather than a quadratic one. One of several quadratic behaviors slowing this pass down. I'm not really thrilled with moving the sum code into the public interface of MBPI, but I don't (at the moment) have ideas for a better interface. My direction I'm thinking in for a better interface is to have MBPI actually retain much more state and make *all* of these queries cheap. That's a lot of work, and would require invasive changes. Until then, this seems like the least bad (ie, least quadratic) solution. Suggestions welcome. llvm-svn: 144530
-
Tobias Grosser authored
llvm-svn: 144529
-
Tobias Grosser authored
llvm-svn: 144528
-
Chandler Carruth authored
correctly handle blocks whose successor weights sum to more than UINT32_MAX. This is slightly less efficient, but the entire thing is already linear on the number of successors. Calling it within any hot routine is a mistake, and indeed no one is calling it. It also simplifies the code. llvm-svn: 144527
-
Chandler Carruth authored
the sum of the edge weights not overflowing uint32, and crashed when they did. This is generally safe as BranchProbabilityInfo tries to provide this guarantee. However, the CFG can get modified during codegen in a way that grows the *sum* of the edge weights. This doesn't seem unreasonable (imagine just adding more blocks all with the default weight of 16), but it is hard to come up with a case that actually triggers 32-bit overflow. Fortuately, the single-source GCC build is good at this. The solution isn't very pretty, but its no worse than the previous code. We're already summing all of the edge weights on each query, we can sum them, check for an overflow, compute a scale, and sum them again. I've included a *greatly* reduced test case out of the GCC source that triggers it. It's a pretty lame test, as it clearly is just barely triggering the overflow. I'd like to have something that is much more definitive, but I don't understand the fundamental pattern that triggers an explosion in the edge weight sums. The buggy code is duplicated within this file. I'll colapse them into a single implementation in a subsequent commit. llvm-svn: 144526
-
Craig Topper authored
Add AVX2 version of instructions to load folding tables. Also add a bunch of missing SSE/AVX instructions. llvm-svn: 144525
-
Argyrios Kyrtzidis authored
otherwise we may crash. llvm-svn: 144524
-
Chandler Carruth authored
expensive the most useful interface to this analysis is. Fun story -- it's also not correct. That's getting fixed in another patch. llvm-svn: 144523
-
Craig Topper authored
Add neverHasSideEffects, mayLoad, and mayStore to many patternless SSE/AVX instructions. Remove MMX check from LowerVECTOR_SHUFFLE since MMX vector types won't go through it anyway. llvm-svn: 144522
-
Nico Weber authored
llvm-svn: 144521
-
Argyrios Kyrtzidis authored
llvm-svn: 144520
-
Argyrios Kyrtzidis authored
should have been already emitted. llvm-svn: 144519
-
Chad Rosier authored
offsets. rdar://10412592 llvm-svn: 144518
-
Jakob Stoklund Olesen authored
llvm-svn: 144517
-
Chandler Carruth authored
get loop info structures associated with them, and so we need some way to make forward progress selecting and placing basic blocks. The technique used here is pretty brutal -- it just scans the list of blocks looking for the first unplaced candidate. It keeps placing blocks like this until the CFG becomes tractable. The cost is somewhat unfortunate, it requires allocating a vector of all basic block pointers eagerly. I have some ideas about how to simplify and optimize this, but I'm trying to get the logic correct first. Thanks to Benjamin Kramer for the reduced test case out of GCC. Sadly there are other bugs that GCC is tickling that I'm reducing and working on now. llvm-svn: 144516
-
Jakob Stoklund Olesen authored
It's more natural to use the actual end points. llvm-svn: 144515
-
Argyrios Kyrtzidis authored
llvm-svn: 144514
-
- Nov 13, 2011
-
-
Chandler Carruth authored
when I was reading through the code for style. llvm-svn: 144513
-
Jakob Stoklund Olesen authored
This makes no difference for normal defs, but early clobber dead defs now look like: [Slot_EarlyClobber; Slot_Dead) instead of: [Slot_EarlyClobber; Slot_Register). Live ranges for normal dead defs look like: [Slot_Register; Slot_Dead) as before. llvm-svn: 144512
-
Craig Topper authored
llvm-svn: 144511
-