#
0e288234 |
| 27-Aug-2015 |
Reid Kleckner <rnk@google.com> |
[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 <matze@braunis.de> |
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 <matze@braunis.de> |
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 <matze@braunis.de> |
Let's try to fix GNU libstdc++ buildbots
llvm-svn: 245898
|
#
b2b7ef1d |
| 24-Aug-2015 |
Matthias Braun <matze@braunis.de> |
MachineBasicBlock: Add liveins() method returning an iterator_range
llvm-svn: 245895
|
Revision tags: llvmorg-3.7.0-rc3, studio-1.4 |
|
#
2a02c1cb |
| 12-Aug-2015 |
Cong Hou <congh@google.com> |
NFC. Convert comments in MachineBasicBlock.cpp into new style.
llvm-svn: 244815
|
#
2793e721 |
| 10-Aug-2015 |
Cong Hou <congh@google.com> |
NFC. Fix some format issues in lib/CodeGen/MachineBasicBlock.cpp.
llvm-svn: 244518
|
#
ec105872 |
| 06-Aug-2015 |
Cong Hou <congh@google.com> |
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 <congh@google.com> |
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 <aaron@aaronballman.com> |
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 <puyan@puyan.org> |
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 <dexonsmith@apple.com> |
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 <dexonsmith@apple.com> |
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 <benny.kra@googlemail.com> |
[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 <benny.kra@googlemail.com> |
[MachineBasicBlock] Use the const_cast(this) trick to reduce duplication
NFC.
llvm-svn: 240413
|
#
07a07ba4 |
| 27-May-2015 |
Matthias Braun <matze@braunis.de> |
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 <grosbach@apple.com> |
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 <yaron.keren@gmail.com> |
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 <echristo@gmail.com> |
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 <rafael.espindola@gmail.com> |
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 <dexonsmith@apple.com> |
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 <Matthew.Arsenault@amd.com> |
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 ...
|
#
70573dcd |
| 19-Nov-2014 |
David Blaikie <dblaikie@gmail.com> |
Update SetVector to rely on the underlying set's insert to return a pair<iterator, bool>
This is to be consistent with StringSet and ultimately with the standard library's associative container inse
Update SetVector to rely on the underlying set's insert to return a pair<iterator, bool>
This is to be consistent with StringSet and ultimately with the standard library's associative container insert function.
This lead to updating SmallSet::insert to return pair<iterator, bool>, and then to update SmallPtrSet::insert to return pair<iterator, bool>, and then to update all the existing users of those functions...
llvm-svn: 222334
show more ...
|
Revision tags: llvmorg-3.5.0, llvmorg-3.5.0-rc4, llvmorg-3.5.0-rc3 |
|
#
abea99f6 |
| 13-Aug-2014 |
Quentin Colombet <qcolombet@apple.com> |
[MachineDominatorTree] Provide a method to inform a MachineDominatorTree that a critical edge has been split. The MachineDominatorTree will when lazy update the underlying dominance properties when r
[MachineDominatorTree] Provide a method to inform a MachineDominatorTree that a critical edge has been split. The MachineDominatorTree will when lazy update the underlying dominance properties when require.
** Context **
This is a follow-up of r215410. Each time a critical edge is split this invalidates the dominator tree information. Thus, subsequent queries of that interface will be slow until the underlying information is actually recomputed (costly).
** Problem **
Prior to this patch, splitting a critical edge needed to query the dominator tree to update the dominator information. Therefore, splitting a bunch of critical edges will likely produce poor performance as each query to the dominator tree will use the slow query path. This happens a lot in passes like MachineSink and PHIElimination.
** Proposed Solution **
Splitting a critical edge is a local modification of the CFG. Moreover, as soon as a critical edge is split, it is not critical anymore and thus cannot be a candidate for critical edge splitting anymore. In other words, the predecessor and successor of a basic block inserted on a critical edge cannot be inserted by critical edge splitting.
Using these observations, we can pile up the splitting of critical edge and apply then at once before updating the DT information.
The core of this patch moves the update of the MachineDominatorTree information from MachineBasicBlock::SplitCriticalEdge to a lazy MachineDominatorTree.
** Performance **
Thanks to this patch, the motivating example compiles in 4- minutes instead of 6+ minutes. No test case added as the motivating example as nothing special but being huge!
The binaries are strictly identical for all the llvm test-suite + SPECs with and without this patch for both Os and O3.
Regarding compile time, I observed only noise, although on average I saw a small improvement.
<rdar://problem/17894619>
llvm-svn: 215576
show more ...
|
Revision tags: llvmorg-3.5.0-rc2 |
|
#
fc6de428 |
| 05-Aug-2014 |
Eric Christopher <echristo@gmail.com> |
Have MachineFunction cache a pointer to the subtarget to make lookups shorter/easier and have the DAG use that to do the same lookup. This can be used in the future for TargetMachine based caching lo
Have MachineFunction cache a pointer to the subtarget to make lookups shorter/easier and have the DAG use that to do the same lookup. This can be used in the future for TargetMachine based caching lookups from the MachineFunction easily.
Update the MIPS subtarget switching machinery to update this pointer at the same time it runs.
llvm-svn: 214838
show more ...
|