History log of /llvm-project/llvm/lib/CodeGen/CodeGen.cpp (Results 201 – 217 of 217)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1224312f 08-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk>

Reintroduce VirtRegRewriter.

OK, not really. We don't want to reintroduce the old rewriter hacks.

This patch extracts virtual register rewriting as a separate pass that
runs after the register allo

Reintroduce VirtRegRewriter.

OK, not really. We don't want to reintroduce the old rewriter hacks.

This patch extracts virtual register rewriting as a separate pass that
runs after the register allocator. This is possible now that
CodeGen/Passes.cpp can configure the full optimizing register allocator
pipeline.

The rewriter pass uses register assignments in VirtRegMap to rewrite
virtual registers to physical registers, and it inserts kill flags based
on live intervals.

These finalization steps are the same for the optimizing register
allocators: RABasic, RAGreedy, and PBQP.

llvm-svn: 158244

show more ...


# 33e5188c 30-May-2012 Bob Wilson <bob.wilson@apple.com>

Add an insertPass API to TargetPassConfig. <rdar://problem/11498613>

Besides adding the new insertPass function, this patch uses it to
enhance the existing -print-machineinstrs so that the MachineI

Add an insertPass API to TargetPassConfig. <rdar://problem/11498613>

Besides adding the new insertPass function, this patch uses it to
enhance the existing -print-machineinstrs so that the MachineInstrs
after a specific pass can be printed.

Patch by Bin Zeng!

llvm-svn: 157655

show more ...


Revision tags: llvmorg-3.1.0, llvmorg-3.1.0-rc3, llvmorg-3.1.0-rc2, llvmorg-3.1.0-rc1
# 1fa5bcbe 08-Feb-2012 Andrew Trick <atrick@apple.com>

Codegen pass definition cleanup. No functionality.

Moving toward a uniform style of pass definition to allow easier target configuration.
Globally declare Pass ID.
Globally declare pass initializer.

Codegen pass definition cleanup. No functionality.

Moving toward a uniform style of pass definition to allow easier target configuration.
Globally declare Pass ID.
Globally declare pass initializer.
Use INITIALIZE_PASS consistently.
Add a call to the initializer from CodeGen.cpp.
Remove redundant "createPass" functions and "getPassName" methods.

While cleaning up declarations, cleaned up comments (sorry for large diff).

llvm-svn: 150100

show more ...


# 58648e4e 08-Feb-2012 Andrew Trick <atrick@apple.com>

Move pass configuration out of pass constructors: BranchFolderPass

llvm-svn: 150095


# b7551336 04-Feb-2012 Andrew Trick <atrick@apple.com>

Make TargetPassConfig an ImmutablePass so CodeGenPasses can query options

llvm-svn: 149752


# e1c034fe 17-Jan-2012 Andrew Trick <atrick@apple.com>

Renamed MachineScheduler to ScheduleTopDownLive.

Responding to code review.

llvm-svn: 148290


# e77e84e4 13-Jan-2012 Andrew Trick <atrick@apple.com>

Added the MachineSchedulerPass skeleton.

llvm-svn: 148105


# 52f24d7a 06-Dec-2011 Lang Hames <lhames@gmail.com>

Kill off the LoopSplitter. It's not being used or maintained.

llvm-svn: 145897


Revision tags: llvmorg-3.0.0, llvmorg-3.0.0-rc4
# 4784df71 13-Nov-2011 NAKAMURA Takumi <geek4civic@gmail.com>

Prune more RALinScan. RALinScan was also here!

llvm-svn: 144487


Revision tags: llvmorg-3.0.0-rc3
# ae4e800c 02-Nov-2011 Chandler Carruth <chandlerc@gmail.com>

Begin collecting some of the statistics for block placement discussed on
the mailing list. Suggestions for other statistics to collect would be
awesome. =]

Currently these are implemented as a separ

Begin collecting some of the statistics for block placement discussed on
the mailing list. Suggestions for other statistics to collect would be
awesome. =]

Currently these are implemented as a separate pass guarded by a separate
flag. I'm not thrilled by that, but I wanted to be able to collect the
statistics for the old code placement as well as the new in order to
have a point of comparison. I'm planning on folding them into the single
pass if / when there is only one pass of interest.

llvm-svn: 143537

show more ...


Revision tags: llvmorg-3.0.0-rc2
# 10281425 21-Oct-2011 Chandler Carruth <chandlerc@gmail.com>

Implement a block placement pass based on the branch probability and
block frequency analyses. This differs substantially from the existing
block-placement pass in LLVM:

1) It operates on the Machin

Implement a block placement pass based on the branch probability and
block frequency analyses. This differs substantially from the existing
block-placement pass in LLVM:

1) It operates on the Machine-IR in the CodeGen layer. This exposes much
more (and more precise) information and opportunities. Also, the
results are more stable due to fewer transforms ocurring after the
pass runs.
2) It uses the generalized probability and frequency analyses. These can
model static heuristics, code annotation derived heuristics as well
as eventual profile loading. By basing the optimization on the
analysis interface it can work from any (or a combination) of these
inputs.
3) It uses a more aggressive algorithm, both building chains from tho
bottom up to maximize benefit, and using an SCC-based walk to layout
chains of blocks in a profitable ordering without O(N^2) iterations
which the old pass involves.

The pass is currently gated behind a flag, and not enabled by default
because it still needs to grow some important features. Most notably, it
needs to support loop aligning and careful layout of loop structures
much as done by hand currently in CodePlacementOpt. Once it supports
these, and has sufficient testing and quality tuning, it should replace
both of these passes.

Thanks to Nick Lewycky and Richard Smith for help authoring & debugging
this, and to Jakob, Andy, Eric, Jim, and probably a few others I'm
forgetting for reviewing and answering all my questions. Writing
a backend pass is *sooo* much better now than it used to be. =D

llvm-svn: 142641

show more ...


Revision tags: llvmorg-3.0.0-rc1
# 875ebd5f 25-Jul-2011 Jakub Staszak <jstaszak@apple.com>

Rename BlockFrequency to BlockFrequencyInfo and MachineBlockFrequency to
MachineBlockFrequencyInfo.

llvm-svn: 135937


# b7d00313 27-Jun-2011 Evan Cheng <evan.cheng@apple.com>

Remove the experimental (and unused) pre-ra splitting pass. Greedy regalloc can split live ranges.

llvm-svn: 133962


# 676c405a 26-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com>

There is only one register coalescer. Merge it into the base class and
remove the analysis group.

llvm-svn: 133899


Revision tags: llvmorg-2.9.0, llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2, llvmorg-2.9.0-rc1
# d4900a64 30-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk>

Stub out a new LiveDebugVariables pass.

This analysis is going to run immediately after LiveIntervals. It will stay
alive during register allocation and keep track of user variables mentioned in
DBG

Stub out a new LiveDebugVariables pass.

This analysis is going to run immediately after LiveIntervals. It will stay
alive during register allocation and keep track of user variables mentioned in
DBG_VALUE instructions.

When the register allocator is moving values between registers and the stack, it
is very hard to keep track of DBG_VALUE instructions. We usually get it wrong.
This analysis maintains a data structure that makes it easy to update DBG_VALUE
instructions.

llvm-svn: 120385

show more ...


# 6c18d1aa 19-Oct-2010 Owen Anderson <resistor@mac.com>

Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency

Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize
the pass's dependencies.

Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.

I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems
with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass
registration/creation, please send the testcase to me directly.

llvm-svn: 116820

show more ...


# 80fc0762 07-Oct-2010 Owen Anderson <resistor@mac.com>

Add initialization routines for CodeGen.

llvm-svn: 115949


123456789