History log of /llvm-project/llvm/lib/CodeGen/MachineBasicBlock.cpp (Results 226 – 250 of 457)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 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 ...


12345678910>>...19