| #
ed17079b |
| 17-Sep-2015 |
Reid Kleckner <[email protected]> |
[WinEH] Add and use hasEHPadSuccessor instead of getLandingPadSuccessor
getLandingPadSuccessor assumes that each invoke can have at most one EH pad successor, but WinEH invokes can have more than on
[WinEH] Add and use hasEHPadSuccessor instead of getLandingPadSuccessor
getLandingPadSuccessor assumes that each invoke can have at most one EH pad successor, but WinEH invokes can have more than one. Two out of three callers of getLandingPadSuccessor don't use the returned landingpad, so we can make them use this simple predicate instead.
Eventually we'll have to circle back and fix SplitKit.cpp so that register allocation works. Baby steps.
llvm-svn: 247904
show more ...
|
| #
c7b155f6 |
| 16-Sep-2015 |
Eric Christopher <[email protected]> |
Use the cached TargetInstrInfo instead of looking it up again.
llvm-svn: 247865
|
| #
d9da1627 |
| 09-Sep-2015 |
Matthias Braun <[email protected]> |
Save LaneMask with livein registers
With subregister liveness enabled we can detect the case where only parts of a register are live in, this is expressed as a 32bit lanemask. The current code only
Save LaneMask with livein registers
With subregister liveness enabled we can detect the case where only parts of a register are live in, this is expressed as a 32bit lanemask. The current code only keeps registers in the live-in list and therefore enumerated all subregisters affected by the lanemask. This turned out to be too conservative as the subregister may also cover additional parts of the lanemask which are not live. Expressing a given lanemask by enumerating a minimum set of subregisters is computationally expensive so the best solution is to simply change the live-in list to store the lanemasks as well. This will reduce memory usage for targets using subregister liveness and slightly increase it for other targets
Differential Revision: http://reviews.llvm.org/D12442
llvm-svn: 247171
show more ...
|
| #
0e288234 |
| 27-Aug-2015 |
Reid Kleckner <[email protected]> |
[WinEH] Add some support for code generating catchpad
We can now run 32-bit programs with empty catch bodies. The next step is to change PEI so that we get funclet prologues and epilogues.
llvm-sv
[WinEH] Add some support for code generating catchpad
We can now run 32-bit programs with empty catch bodies. The next step is to change PEI so that we get funclet prologues and epilogues.
llvm-svn: 246235
show more ...
|
|
Revision tags: llvmorg-3.7.0, llvmorg-3.7.0-rc4 |
|
| #
130bd90e |
| 25-Aug-2015 |
Matthias Braun <[email protected]> |
MachineBasicBlock: Use MCPhysReg instead of unsigned in livein API
This is friendlier to the readers as it makes it clear that the API is not meant for vregs but just for physregs.
llvm-svn: 245977
|
| #
1b50bb58 |
| 24-Aug-2015 |
Matthias Braun <[email protected]> |
Try to fix buildbots
Apparently std::vector::erase(const_iterator) (as opposed to the non-const iterator) is a part of C++11 but it seems this is not available on all the buildbots.
llvm-svn: 245900
|
| #
7a8b1150 |
| 24-Aug-2015 |
Matthias Braun <[email protected]> |
Let's try to fix GNU libstdc++ buildbots
llvm-svn: 245898
|
| #
b2b7ef1d |
| 24-Aug-2015 |
Matthias Braun <[email protected]> |
MachineBasicBlock: Add liveins() method returning an iterator_range
llvm-svn: 245895
|
|
Revision tags: llvmorg-3.7.0-rc3 |
|
| #
2a02c1cb |
| 12-Aug-2015 |
Cong Hou <[email protected]> |
NFC. Convert comments in MachineBasicBlock.cpp into new style.
llvm-svn: 244815
|
| #
2793e721 |
| 10-Aug-2015 |
Cong Hou <[email protected]> |
NFC. Fix some format issues in lib/CodeGen/MachineBasicBlock.cpp.
llvm-svn: 244518
|
| #
ec105872 |
| 06-Aug-2015 |
Cong Hou <[email protected]> |
Revert r244154 which causes some build failure. See https://llvm.org/bugs/show_bug.cgi?id=24377.
llvm-svn: 244239
|
| #
36e7e52a |
| 05-Aug-2015 |
Cong Hou <[email protected]> |
Record whether the weights on out-edges from a MBB are normalized.
1. Create a utility function normalizeEdgeWeights() in MachineBranchProbabilityInfo that normalizes a list of edge weights so that
Record whether the weights on out-edges from a MBB are normalized.
1. Create a utility function normalizeEdgeWeights() in MachineBranchProbabilityInfo that normalizes a list of edge weights so that the sum of then can fit in uint32_t. 2. Provide an interface in MachineBasicBlock to normalize its successors' weights. 3. Add a flag in MachineBasicBlock that tracks whether its successors' weights are normalized. 4. Provide an overload of getSumForBlock that accepts a non-const pointer to a MBB so that it can force normalizing this MBB's successors' weights. 5. Update several uses of getSumForBlock() by eliminating the once needed weight scale.
Differential Revision: http://reviews.llvm.org/D11442
llvm-svn: 244154
show more ...
|
|
Revision tags: llvmorg-3.7.0-rc2 |
|
| #
9f154f60 |
| 29-Jul-2015 |
Aaron Ballman <[email protected]> |
Reverting r243386 because it has serious post-commit concerns that have not been addressed. Also reverts r243389, which relied on this commit.
llvm-svn: 243527
|
| #
567001c2 |
| 28-Jul-2015 |
Puyan Lotfi <[email protected]> |
Changes for MachineBasicBlock to use SortedVector for LiveIns.
llvm-svn: 243389
|
|
Revision tags: llvmorg-3.7.0-rc1 |
|
| #
f48e9827 |
| 26-Jun-2015 |
Duncan P. N. Exon Smith <[email protected]> |
CodeGen: Push the ModuleSlotTracker through MachineOperands
Push `ModuleSlotTracker` through `MachineOperand`s, dropping the time for `llc -print-machineinstrs` on the testcase in PR23865 from ~13 s
CodeGen: Push the ModuleSlotTracker through MachineOperands
Push `ModuleSlotTracker` through `MachineOperand`s, dropping the time for `llc -print-machineinstrs` on the testcase in PR23865 from ~13 seconds to ~9 seconds. Now `SlotTracker::processFunctionMetadata()` accounts for only 8% of the runtime, which seems reasonable.
llvm-svn: 240845
show more ...
|
| #
32692154 |
| 26-Jun-2015 |
Duncan P. N. Exon Smith <[email protected]> |
CodeGen: Use a single SlotTracker in MachineFunction::print()
Expose enough of the IR-level `SlotTracker` so that `MachineFunction::print()` can use a single one for printing `BasicBlock`s. Next st
CodeGen: Use a single SlotTracker in MachineFunction::print()
Expose enough of the IR-level `SlotTracker` so that `MachineFunction::print()` can use a single one for printing `BasicBlock`s. Next step would be to lift this through a few more APIs so that we can make other print methods faster.
Fixes PR23865, changing the runtime of `llc -print-machineinstrs` from many minutes (killed after 3 minutes, but it wasn't very close) to 13 seconds for a 502185 line dump.
llvm-svn: 240842
show more ...
|
|
Revision tags: llvmorg-3.6.2, llvmorg-3.6.2-rc1 |
|
| #
6b568964 |
| 23-Jun-2015 |
Benjamin Kramer <[email protected]> |
[MachineBasicBlock] Add getFirstNonDebugInstr to complement getLastNonDebugInstr
Use it in CodeGen where applicable. No functionality change intended.
llvm-svn: 240414
|
| #
9c956b33 |
| 23-Jun-2015 |
Benjamin Kramer <[email protected]> |
[MachineBasicBlock] Use the const_cast(this) trick to reduce duplication
NFC.
llvm-svn: 240413
|
| #
07a07ba4 |
| 27-May-2015 |
Matthias Braun <[email protected]> |
MachineBasicBlock: Cleanup computeRegisterLiveness()
- Clean documentation comment - Change the API to accept an iterator so you can actually pass MachineBasicBlock::end() now. - Add more "const".
MachineBasicBlock: Cleanup computeRegisterLiveness()
- Clean documentation comment - Change the API to accept an iterator so you can actually pass MachineBasicBlock::end() now. - Add more "const".
llvm-svn: 238288
show more ...
|
| #
6f482000 |
| 18-May-2015 |
Jim Grosbach <[email protected]> |
MC: Clean up method names in MCContext.
The naming was a mish-mash of old and new style. Update to be consistent with the new. NFC.
llvm-svn: 237594
|
|
Revision tags: llvmorg-3.6.1, llvmorg-3.6.1-rc1 |
|
| #
75e0c4b0 |
| 27-Mar-2015 |
Yaron Keren <[email protected]> |
Remove superfluous .str() and replace std::string concatenation with Twine.
llvm-svn: 233392
|
|
Revision tags: llvmorg-3.5.2, llvmorg-3.5.2-rc1 |
|
| #
1cdefae9 |
| 27-Feb-2015 |
Eric Christopher <[email protected]> |
Rewrite MachineOperand::print and MachineInstr::print to avoid uses of TM->getSubtargetImpl and propagate to all calls.
This could be a debugging regression in places where we had a TargetMachine an
Rewrite MachineOperand::print and MachineInstr::print to avoid uses of TM->getSubtargetImpl and propagate to all calls.
This could be a debugging regression in places where we had a TargetMachine and/or MachineFunction but don't have it as part of the MachineInstr. Fixing this would require passing a MachineFunction/Function down through the print operator, but none of the existing uses in tree seem to do this.
llvm-svn: 230710
show more ...
|
|
Revision tags: llvmorg-3.6.0, llvmorg-3.6.0-rc4, llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2, llvmorg-3.6.0-rc1 |
|
| #
366e5c1b |
| 22-Dec-2014 |
Rafael Espindola <[email protected]> |
The leak detector is dead, long live asan and valgrind.
In resent times asan and valgrind have found way more memory management bugs in llvm than the special purpose leak detector.
llvm-svn: 224703
|
|
Revision tags: llvmorg-3.5.1, llvmorg-3.5.1-rc2 |
|
| #
d6f8e4b0 |
| 11-Dec-2014 |
Duncan P. N. Exon Smith <[email protected]> |
CodeGen: Stop using LeakDetector for MachineInstr
Since `MachineInstr` is required to have a trivial destructor, it cannot remove itself from `LeakDetection`. Remove the calls.
As it happens, this
CodeGen: Stop using LeakDetector for MachineInstr
Since `MachineInstr` is required to have a trivial destructor, it cannot remove itself from `LeakDetection`. Remove the calls.
As it happens, this requirement is because `MachineFunction` allocates all `MachineInstr`s in a custom allocator; when the `MachineFunction` is destroyed they're dropped of the edge. There's no benefit to detecting leaks.
llvm-svn: 224061
show more ...
|
|
Revision tags: llvmorg-3.5.1-rc1 |
|
| #
4e27343e |
| 04-Dec-2014 |
Matt Arsenault <[email protected]> |
Allow target to specify prefix for labels
Use the MCAsmInfo instead of the DataLayout, and allow specifying a custom prefix for labels specifically. HSAIL requires that labels begin with @, but glob
Allow target to specify prefix for labels
Use the MCAsmInfo instead of the DataLayout, and allow specifying a custom prefix for labels specifically. HSAIL requires that labels begin with @, but global symbols with &.
llvm-svn: 223323
show more ...
|