#
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
|