- Nov 07, 2011
-
-
Eric Christopher authored
llvm-svn: 143920
-
Eric Christopher authored
llvm-svn: 143919
-
Eric Christopher authored
llvm-svn: 143918
-
- Nov 05, 2011
-
-
Benjamin Kramer authored
Add an option to pad an uleb128 to MCObjectWriter and remove the uleb128 encoding from the DWARF asm printer. As a side effect we now print dwarf ulebs with .ascii directives. llvm-svn: 143809
-
Benjamin Kramer authored
llvm-svn: 143799
-
-
- Nov 04, 2011
-
-
Rafael Espindola authored
point back in the file in the included testcase. Fixes PR11300. llvm-svn: 143726
-
- Nov 03, 2011
-
-
Dan Gohman authored
across calls, and only check for nested dependences on the special call-sequence-resource register. llvm-svn: 143660
-
Pete Cooper authored
llvm-svn: 143646
-
Daniel Dunbar authored
llvm-svn: 143634
-
Pete Cooper authored
Treat objc selector reference globals as invariant so that MachineLICM can hoist them out of loops. Fixes <rdar://problem/6027699> llvm-svn: 143600
-
Bill Wendling authored
into the function. Reflect that here so that the array will be placed next to the SP. <rdar://problem/10128329> llvm-svn: 143590
-
- Nov 02, 2011
-
-
Nick Lewycky authored
implied by directory index zero. llvm-svn: 143570
-
Chandler Carruth authored
the mailing list. Suggestions for other statistics to collect would be awesome. =] Currently these are implemented as a separate pass guarded by a separate flag. I'm not thrilled by that, but I wanted to be able to collect the statistics for the old code placement as well as the new in order to have a point of comparison. I'm planning on folding them into the single pass if / when there is only one pass of interest. llvm-svn: 143537
-
- Nov 01, 2011
-
-
Jakob Stoklund Olesen authored
No test case, spotted by inspection. llvm-svn: 143407
-
- Oct 31, 2011
-
-
Nadav Rotem authored
Cleanup. Document. Make sure that this build_vector optimization only runs before the op legalizer and that the used type is legal. llvm-svn: 143358
-
- Oct 30, 2011
-
-
Benjamin Kramer authored
llvm-svn: 143308
-
- Oct 29, 2011
-
-
Nadav Rotem authored
If all of the inputs are zero/any_extended, create a new simple BV which can be further optimized by other BV optimizations. llvm-svn: 143297
-
Dan Gohman authored
llvm-svn: 143262
-
- Oct 28, 2011
-
-
Dan Gohman authored
fixes: Use a separate register, instead of SP, as the calling-convention resource, to avoid spurious conflicts with actual uses of SP. Also, fix unscheduling of calling sequences, which can be triggered by pseudo-two-address dependencies. llvm-svn: 143206
-
NAKAMURA Takumi authored
Don't assume APInt::getRawData() would hold target-aware endianness nor host-compliant endianness. rawdata[0] holds most lower i64, even on big endian host. FIXME: Add a testcase for big endian target. FIXME: Ditto on CompileUnit::addConstantFPValue() ? llvm-svn: 143194
-
Benjamin Kramer authored
llvm-svn: 143190
-
Duncan Sands authored
it fixes the dragonegg self-host (it looks like gcc is miscompiled). Original commit messages: Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW on every node as it legalizes them. This makes it easier to use hasOneUse() heuristics, since unneeded nodes can be removed from the DAG earlier. Make LegalizeOps visit the DAG in an operands-last order. It previously used operands-first, because LegalizeTypes has to go operands-first, and LegalizeTypes used to be part of LegalizeOps, but they're now split. The operands-last order is more natural for several legalization tasks. For example, it allows lowering code for nodes with floating-point or vector constants to see those constants directly instead of seeing the lowered form (often constant-pool loads). This makes some things somewhat more complicated today, though it ought to allow things to be simpler in the future. It also fixes some bugs exposed by Legalizing using RAUW aggressively. Remove the part of LegalizeOps that attempted to patch up invalid chain operands on libcalls generated by LegalizeTypes, since it doesn't work with the new LegalizeOps traversal order. Instead, define what LegalizeTypes is doing to be correct, and transfer the responsibility of keeping calls from having overlapping calling sequences into the scheduler. Teach the scheduler to model callseq_begin/end pairs as having a physical register definition/use to prevent calls from having overlapping calling sequences. This is also somewhat complicated, though there are ways it might be simplified in the future. This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others. Please direct high-level questions about this patch to management. Delete #if 0 code accidentally left in. llvm-svn: 143188
-
Nick Lewycky authored
tools that read the debug info in the .o files by making the DIE sizes more consistent. llvm-svn: 143186
-
Dan Gohman authored
llvm-svn: 143179
-
Dan Gohman authored
on every node as it legalizes them. This makes it easier to use hasOneUse() heuristics, since unneeded nodes can be removed from the DAG earlier. Make LegalizeOps visit the DAG in an operands-last order. It previously used operands-first, because LegalizeTypes has to go operands-first, and LegalizeTypes used to be part of LegalizeOps, but they're now split. The operands-last order is more natural for several legalization tasks. For example, it allows lowering code for nodes with floating-point or vector constants to see those constants directly instead of seeing the lowered form (often constant-pool loads). This makes some things somewhat more complicated today, though it ought to allow things to be simpler in the future. It also fixes some bugs exposed by Legalizing using RAUW aggressively. Remove the part of LegalizeOps that attempted to patch up invalid chain operands on libcalls generated by LegalizeTypes, since it doesn't work with the new LegalizeOps traversal order. Instead, define what LegalizeTypes is doing to be correct, and transfer the responsibility of keeping calls from having overlapping calling sequences into the scheduler. Teach the scheduler to model callseq_begin/end pairs as having a physical register definition/use to prevent calls from having overlapping calling sequences. This is also somewhat complicated, though there are ways it might be simplified in the future. This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others. Please direct high-level questions about this patch to management. llvm-svn: 143177
-
- Oct 27, 2011
-
-
Nick Lewycky authored
llvm-svn: 143097
-
Eli Friedman authored
llvm-svn: 143095
-
Lang Hames authored
llvm-svn: 143080
-
Nick Lewycky authored
change. llvm-svn: 143074
-
- Oct 26, 2011
-
-
Duncan Sands authored
trying to legalize the operand types when only the result type is required to be legalized - the type legalization machinery will get round to the operands later if they need legalizing. There can be a point to legalizing operands in parallel with the result: when this saves compile time or results in better code. There was only one case in which this was true: when the operand is also split, so keep the logic for that bit. As a result of this change, additional operand legalization methods may need to be introduced to handle nodes where the result and operand types can differ, like SIGN_EXTEND, but the testsuite doesn't contain any tests where this is the case. In any case, it seems better to require such methods (and die with an assert if they doesn't exist) than to quietly produce wrong code if we forgot to special case the node in SplitVecRes_UnaryOp. llvm-svn: 143026
-
Jakob Stoklund Olesen authored
This code makes different decisions when compiled into x87 instructions because of different rounding behavior. That caused phase 2/3 miscompares on 32-bit Linux when the phase 1 compiler was built with gcc (using x87), and the phase 2 compiler was built with clang (using SSE). This fixes PR11200. llvm-svn: 143006
-
Evan Cheng authored
Disable LICM speculation in high register pressure situation again now that Devang has fixed other issues. llvm-svn: 143003
-
Bill Wendling authored
An MBB which branches to an EH landing pad shouldn't be considered for tail merging. In SjLj EH, the jump to the landing pad is not done explicitly through a branch statement. The EH landing pad is added as a successor to the throwing BB. Because of that however, the branch folding pass could mistakenly think that it could merge the throwing BB with another BB. This isn't safe to do. <rdar://problem/10334833> llvm-svn: 143001
-
- Oct 25, 2011
-
-
Eli Friedman authored
llvm-svn: 142959
-
Jim Grosbach authored
PR11217. llvm-svn: 142956
-
Duncan Sands authored
down to this commit. Original commit message: An MBB which branches to an EH landing pad shouldn't be considered for tail merging. In SjLj EH, the jump to the landing pad is not done explicitly through a branch statement. The EH landing pad is added as a successor to the throwing BB. Because of that however, the branch folding pass could mistakenly think that it could merge the throwing BB with another BB. This isn't safe to do. <rdar://problem/10334833> llvm-svn: 142920
-
Nick Lewycky authored
llvm-svn: 142912
-
Eric Christopher authored
llvm-svn: 142892
-
Bill Wendling authored
In SjLj EH, the jump to the landing pad is not done explicitly through a branch statement. The EH landing pad is added as a successor to the throwing BB. Because of that however, the branch folding pass could mistakenly think that it could merge the throwing BB with another BB. This isn't safe to do. <rdar://problem/10334833> llvm-svn: 142891
-