History log of /llvm-project/llvm/lib/CodeGen/MachineBasicBlock.cpp (Results 301 – 325 of 457)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 320c7030 07-Mar-2012 Andrew Trick <atrick@apple.com>

Added MachineBasicBlock::getFullName() to standardize/factor codegen diagnostics.

llvm-svn: 152176


# baa41d41 10-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com>

Cache iterators. Some of these are expensive to create.

llvm-svn: 150214


# edeea175 09-Feb-2012 Lang Hames <lhames@gmail.com>

Preserve physreg kills in MachineBasicBlock::SplitCriticalEdge.

Failure to preserve kills was causing LiveIntervals to miss some EFLAGS live
ranges. Unfortunately I've been unable to reduce a good t

Preserve physreg kills in MachineBasicBlock::SplitCriticalEdge.

Failure to preserve kills was causing LiveIntervals to miss some EFLAGS live
ranges. Unfortunately I've been unable to reduce a good test case yet.

llvm-svn: 150152

show more ...


# 9b61cf31 26-Jan-2012 Chad Rosier <mcrosier@apple.com>

Update comment for r149070.

llvm-svn: 149075


# 1a1531d6 26-Jan-2012 Chad Rosier <mcrosier@apple.com>

Replace the use of isPredicable() with isPredicated() in
MachineBasicBlock::canFallThrough(). We're interested in the state of the
instruction (i.e., is this a barrier or not?), not if the instructi

Replace the use of isPredicable() with isPredicated() in
MachineBasicBlock::canFallThrough(). We're interested in the state of the
instruction (i.e., is this a barrier or not?), not if the instruction is
predicable or not.
rdar://10501092

llvm-svn: 149070

show more ...


# 96f8c551 20-Dec-2011 Jakub Staszak <kubastaszak@gmail.com>

Add some constantness to BranchProbabilityInfo and BlockFrequnencyInfo.

llvm-svn: 146986


# 7fae11b2 14-Dec-2011 Evan Cheng <evan.cheng@apple.com>

- Add MachineInstrBundle.h and MachineInstrBundle.cpp. This includes a function
to finalize MI bundles (i.e. add BUNDLE instruction and computing register def
and use lists of the BUNDLE instruct

- Add MachineInstrBundle.h and MachineInstrBundle.cpp. This includes a function
to finalize MI bundles (i.e. add BUNDLE instruction and computing register def
and use lists of the BUNDLE instruction) and a pass to unpack bundles.
- Teach more of MachineBasic and MachineInstr methods to be bundle aware.
- Switch Thumb2 IT block to MI bundles and delete the hazard recognizer hack to
prevent IT blocks from being broken apart.

llvm-svn: 146542

show more ...


# 7f8e563a 07-Dec-2011 Evan Cheng <evan.cheng@apple.com>

Add bundle aware API for querying instruction properties and switch the code
generator to it. For non-bundle instructions, these behave exactly the same
as the MC layer API.

For properties like mayL

Add bundle aware API for querying instruction properties and switch the code
generator to it. For non-bundle instructions, these behave exactly the same
as the MC layer API.

For properties like mayLoad / mayStore, look into the bundle and if any of the
bundled instructions has the property it would return true.
For properties like isPredicable, only return true if *all* of the bundled
instructions have the property.
For properties like canFoldAsLoad, isCompare, conservatively return false for
bundles.

llvm-svn: 146026

show more ...


# 2a81dd4a 06-Dec-2011 Evan Cheng <evan.cheng@apple.com>

First chunk of MachineInstr bundle support.
1. Added opcode BUNDLE
2. Taught MachineInstr class to deal with bundled MIs
3. Changed MachineBasicBlock iterator to skip over bundled MIs; added an itera

First chunk of MachineInstr bundle support.
1. Added opcode BUNDLE
2. Taught MachineInstr class to deal with bundled MIs
3. Changed MachineBasicBlock iterator to skip over bundled MIs; added an iterator to walk all the MIs
4. Taught MachineBasicBlock methods about bundled MIs

llvm-svn: 145975

show more ...


# 2a2b37ea 06-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Pretty-print basic block alignment.

llvm-svn: 145965


# 8c68f1f3 23-Nov-2011 Chandler Carruth <chandlerc@gmail.com>

Handle the case of a no-return invoke correctly. It actually still has
successors, they just are all landing pad successors. We handle this the
same way as no successors. Comments attached for the ne

Handle the case of a no-return invoke correctly. It actually still has
successors, they just are all landing pad successors. We handle this the
same way as no successors. Comments attached for the next person to wade
through here and another lovely test case courtesy of Benjamin Kramer's
bugpoint reduction.

llvm-svn: 145098

show more ...


# ee54feb6 22-Nov-2011 Chandler Carruth <chandlerc@gmail.com>

Fix a devilish miscompile exposed by block placement. The
updateTerminator code didn't correctly handle EH terminators in one very
specific case. AnalyzeBranch would find no terminator instruction, a

Fix a devilish miscompile exposed by block placement. The
updateTerminator code didn't correctly handle EH terminators in one very
specific case. AnalyzeBranch would find no terminator instruction, and
so the fallback in updateTerminator is to assume fallthrough. This is
correct, but the destination of the fallthrough was assumed to be the
first successor.

This is *almost always* true, but in certain cases the loop
transformations will cause the landing pad to be the first successor!
Instead of this brittle logic, actually look through the successors for
a non-landing-pad accessor, and to assert if more than one is found.

This will hopefully fix some (if not all) of the self host miscompiles
with block placement. Thanks to Benjamin Kramer for reporting, Nick
Lewycky for an initial stab at a reduction, and Duncan for endless
advice on EH (which I know nothing about) as well as reviewing the
actual fix.

llvm-svn: 145062

show more ...


Revision tags: llvmorg-3.0.0, llvmorg-3.0.0-rc4, llvmorg-3.0.0-rc3, llvmorg-3.0.0-rc2, llvmorg-3.0.0-rc1
# 06b6ccfe 14-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Update live-in lists when splitting critical edges.

Fixes PR10814. Patch by Jan Sjödin!

llvm-svn: 141960


# 6cc775f9 28-Jun-2011 Evan Cheng <evan.cheng@apple.com>

- Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and
sink them into MC layer.
- Added MCInstrInfo, which captures the tablegen generated static data. Chang
TargetInstrInfo

- Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and
sink them into MC layer.
- Added MCInstrInfo, which captures the tablegen generated static data. Chang
TargetInstrInfo so it's based off MCInstrInfo.

llvm-svn: 134021

show more ...


# 5f45dc76 17-Jun-2011 Jakub Staszak <jstaszak@apple.com>

getSuccWeight returns now default 0 if Weights vector is empty.

llvm-svn: 133271


# 2ce8399a 17-Jun-2011 Jakub Staszak <jstaszak@apple.com>

Allow empty Weights vector.

llvm-svn: 133265


# 12a43bdd 16-Jun-2011 Jakub Staszak <jstaszak@apple.com>

Introduce MachineBranchProbabilityInfo class, which has similar API to
BranchProbabilityInfo (expect setEdgeWeight which is not available here).
Branch Weights are kept in MachineBasicBlocks. To turn

Introduce MachineBranchProbabilityInfo class, which has similar API to
BranchProbabilityInfo (expect setEdgeWeight which is not available here).
Branch Weights are kept in MachineBasicBlocks. To turn off this analysis
set -use-mbpi=false.

llvm-svn: 133184

show more ...


# feadd435 16-Jun-2011 Jakub Staszak <jstaszak@apple.com>

Test commit.

llvm-svn: 133174


# dd6fcc4e 29-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Fix PR10046 by updating LiveVariables kill info when splitting live ranges.

This only affects targets like Mips where branch instructions may kill virtual
registers. Most other targets branch on fla

Fix PR10046 by updating LiveVariables kill info when splitting live ranges.

This only affects targets like Mips where branch instructions may kill virtual
registers. Most other targets branch on flag values, so virtual registers are
not involved.

The problem is that MachineBasicBlock::updateTerminator deletes branches and
inserts new ones while LiveVariables keeps a list of pointers to instructions
that kill virtual registers. That list wasn't properly updated in
MBB::SplitCriticalEdge.

llvm-svn: 132298

show more ...


# ec138b4b 18-Apr-2011 Eli Friedman <eli.friedman@gmail.com>

Simplify declarations slightly by using typedefs.

llvm-svn: 129720


Revision tags: llvmorg-2.9.0, llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2, llvmorg-2.9.0-rc1
# 096bd883 04-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Add LiveIntervals::getLastSplitPoint().

A live range cannot be split everywhere in a basic block. A split must go before
the first terminator, and if the variable is live into a landing pad, the spl

Add LiveIntervals::getLastSplitPoint().

A live range cannot be split everywhere in a basic block. A split must go before
the first terminator, and if the variable is live into a landing pad, the split
must happen before the call that can throw.

llvm-svn: 124894

show more ...


# ab3d6ecb 14-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Try for the third time to teach getFirstTerminator() about debug values.

This time let's rephrase to trick gcc-4.3 into not miscompiling.

llvm-svn: 123432


# c3810288 14-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Revert r123419. It still breaks llvm-gcc-i386-linux-selfhost.

llvm-svn: 123423


# c0767e02 14-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Try again to teach getFirstTerminator() about debug values.

Fix some callers to better deal with debug values.

llvm-svn: 123419


# 4bc5e389 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Teach frame lowering to ignore debug values after the terminators.

llvm-svn: 123399


1...<<111213141516171819