History log of /llvm-project/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp (Results 101 – 117 of 117)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# d11beffe 20-Jul-2014 Manuel Jacob <me@manueljacob.de>

[C++11] Add predecessors(BasicBlock *) / successors(BasicBlock *) iterator ranges.

Summary: This patch introduces two new iterator ranges and updates existing code to use it. No functional change i

[C++11] Add predecessors(BasicBlock *) / successors(BasicBlock *) iterator ranges.

Summary: This patch introduces two new iterator ranges and updates existing code to use it. No functional change intended.

Test Plan: All tests (make check-all) still pass.

Reviewers: dblaikie

Reviewed By: dblaikie

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D4481

llvm-svn: 213474

show more ...


# 1b8d8379 19-Jul-2014 Matt Arsenault <Matthew.Arsenault@amd.com>

Templatify RegionInfo so it works on MachineBasicBlocks

llvm-svn: 213456


# 04b67cee 19-May-2014 Matt Arsenault <Matthew.Arsenault@amd.com>

Use range for

llvm-svn: 209147


Revision tags: llvmorg-3.4.2, llvmorg-3.4.2-rc1, llvmorg-3.4.1, llvmorg-3.4.1-rc2
# d2b2facb 25-Apr-2014 Duncan P. N. Exon Smith <dexonsmith@apple.com>

SCC: Change clients to use const, NFC

It's fishy to be changing the `std::vector<>` owned by the iterator, and
no one actual does it, so I'm going to remove the ability in a
subsequent commit. Firs

SCC: Change clients to use const, NFC

It's fishy to be changing the `std::vector<>` owned by the iterator, and
no one actual does it, so I'm going to remove the ability in a
subsequent commit. First, update the users.

<rdar://problem/14292693>

llvm-svn: 207252

show more ...


# f40110f4 25-Apr-2014 Craig Topper <craig.topper@gmail.com>

[C++] Use 'nullptr'. Transforms edition.

llvm-svn: 207196


# 964daaaf 22-Apr-2014 Chandler Carruth <chandlerc@gmail.com>

[Modules] Fix potential ODR violations by sinking the DEBUG_TYPE
definition below all of the header #include lines, lib/Transforms/...
edition.

This one is tricky for two reasons. We again have a co

[Modules] Fix potential ODR violations by sinking the DEBUG_TYPE
definition below all of the header #include lines, lib/Transforms/...
edition.

This one is tricky for two reasons. We again have a couple of passes
that define something else before the includes as well. I've sunk their
name macros with the DEBUG_TYPE.

Also, InstCombine contains headers that need DEBUG_TYPE, so now those
headers #define and #undef DEBUG_TYPE around their code, leaving them
well formed modular headers. Fixing these headers was a large motivation
for all of these changes, as "leaky" macros of this form are hard on the
modules implementation.

llvm-svn: 206844

show more ...


Revision tags: llvmorg-3.4.1-rc1
# cdf47884 09-Mar-2014 Chandler Carruth <chandlerc@gmail.com>

[C++11] Add range based accessors for the Use-Def chain of a Value.

This requires a number of steps.
1) Move value_use_iterator into the Value class as an implementation
detail
2) Change it to ac

[C++11] Add range based accessors for the Use-Def chain of a Value.

This requires a number of steps.
1) Move value_use_iterator into the Value class as an implementation
detail
2) Change it to actually be a *Use* iterator rather than a *User*
iterator.
3) Add an adaptor which is a User iterator that always looks through the
Use to the User.
4) Wrap these in Value::use_iterator and Value::user_iterator typedefs.
5) Add the range adaptors as Value::uses() and Value::users().
6) Update *all* of the callers to correctly distinguish between whether
they wanted a use_iterator (and to explicitly dig out the User when
needed), or a user_iterator which makes the Use itself totally
opaque.

Because #6 requires churning essentially everything that walked the
Use-Def chains, I went ahead and added all of the range adaptors and
switched them to range-based loops where appropriate. Also because the
renaming requires at least churning every line of code, it didn't make
any sense to split these up into multiple commits -- all of which would
touch all of the same lies of code.

The result is still not quite optimal. The Value::use_iterator is a nice
regular iterator, but Value::user_iterator is an iterator over User*s
rather than over the User objects themselves. As a consequence, it fits
a bit awkwardly into the range-based world and it has the weird
extra-dereferencing 'operator->' that so many of our iterators have.
I think this could be fixed by providing something which transforms
a range of T&s into a range of T*s, but that *can* be separated into
another patch, and it isn't yet 100% clear whether this is the right
move.

However, this change gets us most of the benefit and cleans up
a substantial amount of code around Use and User. =]

llvm-svn: 203364

show more ...


# 3e4c697c 05-Mar-2014 Craig Topper <craig.topper@gmail.com>

[C++11] Add 'override' keyword to virtual methods that override their base class.

llvm-svn: 202953


# 820a908d 04-Mar-2014 Chandler Carruth <chandlerc@gmail.com>

[Modules] Move the LLVM IR pattern match header into the IR library, it
obviously is coupled to the IR.

llvm-svn: 202818


# 4abf9d3a 03-Mar-2014 Tobias Grosser <tobias@grosser.es>

[C++11] Add a basic block range view for RegionInfo

This also switches the users in LLVM to ensure this functionality is tested.

llvm-svn: 202705


# 8e661efc 04-Feb-2014 Duncan P. N. Exon Smith <dexonsmith@apple.com>

cleanup: scc_iterator consumers should use isAtEnd

No functional change. Updated loops from:

for (I = scc_begin(), E = scc_end(); I != E; ++I)

to:

for (I = scc_begin(); !I.isAtEnd(); ++I

cleanup: scc_iterator consumers should use isAtEnd

No functional change. Updated loops from:

for (I = scc_begin(), E = scc_end(); I != E; ++I)

to:

for (I = scc_begin(); !I.isAtEnd(); ++I)

for teh win.

llvm-svn: 200789

show more ...


# 73523021 13-Jan-2014 Chandler Carruth <chandlerc@gmail.com>

[PM] Split DominatorTree into a concrete analysis result object which
can be used by both the new pass manager and the old.

This removes it from any of the virtual mess of the pass interfaces and
le

[PM] Split DominatorTree into a concrete analysis result object which
can be used by both the new pass manager and the old.

This removes it from any of the virtual mess of the pass interfaces and
lets it derive cleanly from the DominatorTreeBase<> template. In turn,
tons of boilerplate interface can be nuked and it turns into a very
straightforward extension of the base DominatorTree interface.

The old analysis pass is now a simple wrapper. The names and style of
this split should match the split between CallGraph and
CallGraphWrapperPass. All of the users of DominatorTree have been
updated to match using many of the same tricks as with CallGraph. The
goal is that the common type remains the resulting DominatorTree rather
than the pass. This will make subsequent work toward the new pass
manager significantly easier.

Also in numerous places things became cleaner because I switched from
re-running the pass (!!! mid way through some other passes run!!!) to
directly recomputing the domtree.

llvm-svn: 199104

show more ...


Revision tags: llvmorg-3.4.0, llvmorg-3.4.0-rc3, llvmorg-3.4.0-rc2
# 6ea0aade 22-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com>

StructurizeCFG: Fix verification failure with some loops.

If the beginning of the loop was also the entry block
of the function, branches were inserted to the entry block
which isn't allowed. If thi

StructurizeCFG: Fix verification failure with some loops.

If the beginning of the loop was also the entry block
of the function, branches were inserted to the entry block
which isn't allowed. If this occurs, create a new dummy
function entry block that branches to the start of the loop.

llvm-svn: 195493

show more ...


# 9fb6e0ba 22-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com>

StructurizeCFG: Fix inverting a branch on an argument

llvm-svn: 195492


Revision tags: llvmorg-3.4.0-rc1
# d3e916eb 02-Oct-2013 Tom Stellard <thomas.stellard@amd.com>

StructurizeCFG: Add dependency on LowerSwitch pass

Switch instructions were crashing the StructurizeCFG pass, and it's
probably easier anyway if we don't need to handle them in this pass.

Reviewed-

StructurizeCFG: Add dependency on LowerSwitch pass

Switch instructions were crashing the StructurizeCFG pass, and it's
probably easier anyway if we don't need to handle them in this pass.

Reviewed-by: Christian König <christian.koenig@amd.com>
llvm-svn: 191841

show more ...


# d3a34f81 16-Jul-2013 Craig Topper <craig.topper@gmail.com>

Add 'const' qualifiers to static const char* variables.

llvm-svn: 186371


Revision tags: llvmorg-3.3.1-rc1
# d46fce11 19-Jun-2013 Matt Arsenault <Matthew.Arsenault@amd.com>

Move StructurizeCFG out of R600 to generic Transforms.

Register it with PassManager

llvm-svn: 184343


12345