History log of /external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cd81d94322a39503e4a3e87b6ee03d4fcb3465fb 21-Jul-2014 Stephen Hines <srhines@google.com> Update LLVM for rebase to r212749.

Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls

Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2565de926b64b0777c2a192b53ac1ab43fc42a70 08-Oct-2013 Eric Christopher <echristo@gmail.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192199 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
da11df0c22f5d0ba2e2be3ae4a7076c806233db8 09-Sep-2013 Bill Wendling <isanbard@gmail.com> Call generateCompactUnwindEncodings() right before we need to output the frame information.

There are more than one paths to where the frame information is emitted. Place
the call to generateCompactUnwindEncodings() into the method which outputs the
frame information, thus ensuring that the encoding is there for every path. This
involved threading the MCAsmBackend object through to this method.

<rdar://problem/13623355>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190335 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c3cee57f7d20f69a84fd88464ed8cf050e63c7ad 09-Sep-2013 Bill Wendling <isanbard@gmail.com> Generate compact unwind encoding from CFI directives.

We used to generate the compact unwind encoding from the machine
instructions. However, this had the problem that if the user used `-save-temps'
or compiled their hand-written `.s' file (with CFI directives), we wouldn't
generate the compact unwind encoding.

Move the algorithm that generates the compact unwind encoding into the
MCAsmBackend. This way we can generate the encoding whether the code is from a
`.ll' or `.s' file.

<rdar://problem/13623355>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190290 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
ea44281d5da5096de50ce1cb358ff0c6f20e1a2a 19-Jun-2013 Bill Wendling <isanbard@gmail.com> Access the TargetLoweringInfo from the TargetMachine object instead of caching it. The TLI may change between functions. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184349 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
4ca0ddaefa2bdea4803cd768e543904f575acdb6 18-Jun-2013 Bill Wendling <isanbard@gmail.com> Simplify some of the code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184172 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
08368387a450dc2b5681000e2728ec702a8f1197 06-Jun-2013 Bill Wendling <isanbard@gmail.com> Add space to assert message.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
4a971705bc6030dc2e4338b3cd5cffa2e0f88b7b 13-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the MachineMove class.

It was just a less powerful and more confusing version of
MCCFIInstruction. A side effect is that, since MCCFIInstruction uses
dwarf register numbers, calls to getDwarfRegNum are pushed out, which
should allow further simplifications.

I left the MachineModuleInfo::addFrameMove interface unchanged since
this patch was already fairly big.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181680 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
063337309e71683fc57c049c10d03d4f8a2ce356 19-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Fix GCMetadaPrinter::finishAssembly not executed, patch by Yiannis Tsiouris.

Due to the execution order of doFinalization functions, the GC information were
deleted before AsmPrinter::doFinalization was executed. Thus, the
GCMetadataPrinter::finishAssembly was never called.

The patch fixes that by moving the code of the GCInfoDeleter::doFinalization to
Printer::doFinalization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175528 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
aeef83c6afa1e18d1cf9d359cc678ca0ad556175 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Switch TargetTransformInfo from an immutable analysis pass that requires
a TargetMachine to construct (and thus isn't always available), to an
analysis group that supports layered implementations much like
AliasAnalysis does. This is a pretty massive change, with a few parts
that I was unable to easily separate (sorry), so I'll walk through it.

The first step of this conversion was to make TargetTransformInfo an
analysis group, and to sink the nonce implementations in
ScalarTargetTransformInfo and VectorTargetTranformInfo into
a NoTargetTransformInfo pass. This allows other passes to add a hard
requirement on TTI, and assume they will always get at least on
implementation.

The TargetTransformInfo analysis group leverages the delegation chaining
trick that AliasAnalysis uses, where the base class for the analysis
group delegates to the previous analysis *pass*, allowing all but tho
NoFoo analysis passes to only implement the parts of the interfaces they
support. It also introduces a new trick where each pass in the group
retains a pointer to the top-most pass that has been initialized. This
allows passes to implement one API in terms of another API and benefit
when some other pass above them in the stack has more precise results
for the second API.

The second step of this conversion is to create a pass that implements
the TargetTransformInfo analysis using the target-independent
abstractions in the code generator. This replaces the
ScalarTargetTransformImpl and VectorTargetTransformImpl classes in
lib/Target with a single pass in lib/CodeGen called
BasicTargetTransformInfo. This class actually provides most of the TTI
functionality, basing it upon the TargetLowering abstraction and other
information in the target independent code generator.

The third step of the conversion adds support to all TargetMachines to
register custom analysis passes. This allows building those passes with
access to TargetLowering or other target-specific classes, and it also
allows each target to customize the set of analysis passes desired in
the pass manager. The baseline LLVMTargetMachine implements this
interface to add the BasicTTI pass to the pass manager, and all of the
tools that want to support target-aware TTI passes call this routine on
whatever target machine they end up with to add the appropriate passes.

The fourth step of the conversion created target-specific TTI analysis
passes for the X86 and ARM backends. These passes contain the custom
logic that was previously in their extensions of the
ScalarTargetTransformInfo and VectorTargetTransformInfo interfaces.
I separated them into their own file, as now all of the interface bits
are private and they just expose a function to create the pass itself.
Then I extended these target machines to set up a custom set of analysis
passes, first adding BasicTTI as a fallback, and then adding their
customized TTI implementations.

The fourth step required logic that was shared between the target
independent layer and the specific targets to move to a different
interface, as they no longer derive from each other. As a consequence,
a helper functions were added to TargetLowering representing the common
logic needed both in the target implementation and the codegen
implementation of the TTI pass. While technically this is the only
change that could have been committed separately, it would have been
a nightmare to extract.

The final step of the conversion was just to delete all the old
boilerplate. This got rid of the ScalarTargetTransformInfo and
VectorTargetTransformInfo classes, all of the support in all of the
targets for producing instances of them, and all of the support in the
tools for manually constructing a pass based around them.

Now that TTI is a relatively normal analysis group, two things become
straightforward. First, we can sink it into lib/Analysis which is a more
natural layer for it to live. Second, clients of this interface can
depend on it *always* being available which will simplify their code and
behavior. These (and other) simplifications will follow in subsequent
commits, this one is clearly big enough.

Finally, I'm very aware that much of the comments and documentation
needs to be updated. As soon as I had this working, and plausibly well
commented, I wanted to get it committed and in front of the build bots.
I'll be doing a few passes over documentation later if it sticks.

Commits to update DragonEgg and Clang will be made presently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171681 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
07f6a4fde0a1b081fbefd986345c9b2f4f85e88a 10-Dec-2012 Lang Hames <lhames@gmail.com> Defer call to InitSections until after MCContext has been initialized. If
InitSections is called before the MCContext is initialized it could cause
duplicate temporary symbols to be emitted later (after context initialization
resets the temporary label counter).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169785 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
08510b14d4fe5d9b1a979fbee8a7aad11dbc6cea 30-Nov-2012 Bill Wendling <isanbard@gmail.com> Replace r168930 with a more reasonable patch.

The original patch removed a bunch of code that the SjLjEHPrepare pass placed
into the entry block if all of the landing pads were removed during the
CodeGenPrepare class. The more natural way of doing things is to run the CGP
*before* we run the SjLjEHPrepare pass.

Make it so!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169044 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
9f696c815719ceabbba8443e8039827ebcdebe44 22-Nov-2012 Eli Bendersky <eliben@google.com> Fix 80-col violation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168498 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
536a88ad5bf160232205192a7ce72e50bfadbded 18-Sep-2012 Roman Divacky <rdivacky@freebsd.org> When creating MCAsmBackend pass the CPU string as well. In X86AsmBackend
store this and use it to not emit long nops when the CPU is geode which
doesnt support them.

Fixes PR11212.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164132 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
30a507a1f5d6a5646dd3481eba6958424415c886 02-Jul-2012 Bob Wilson <bob.wilson@apple.com> Extend TargetPassConfig to allow running only a subset of the normal passes.

This is still a work in progress but I believe it is currently good enough
to fix PR13122 "Need unit test driver for codegen IR passes". For example,
you can run llc with -stop-after=loop-reduce to have it dump out the IR after
running LSR. Serializing machine-level IR is not yet supported but we have
some patches in progress for that.

The plan is to serialize the IR to a YAML file, containing separate sections
for the LLVM IR, machine-level IR, and whatever other info is needed. Chad
suggested that we stash the stop-after pass in the YAML file and use that
instead of the start-after option to figure out where to restart the
compilation. I think that's a great idea, but since it's not implemented yet
I put the -start-after option into this patch for testing purposes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159570 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
564fbf6aff8fb95646a1290078a37c2d4dbe629f 02-Jul-2012 Bob Wilson <bob.wilson@apple.com> Add all codegen passes to the PassManager via TargetPassConfig.

This is a preliminary step toward having TargetPassConfig be able to
start and stop the compilation at specified passes for unit testing
and debugging. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159567 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
6514551be704adb577682148ca825c08fd642329 20-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Plug a leak when using MCJIT.

Found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157160 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
79485315cd88df1d743158feeb21cc46c253c021 20-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Use TargetMachine's register info instead of creating a new one and leaking it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157155 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
918f55fe239f00651e396be841f2b3b6e242f98d 15-May-2012 Jim Grosbach <grosbach@apple.com> Allow MCCodeEmitter access to the target MCRegisterInfo.

Add the MCRegisterInfo to the factories and constructors.

Patch by Tom Stellard <Tom.Stellard@amd.com>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156828 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
17463b3ef1a3d39b10619254f12e806c8c43f9e7 02-Apr-2012 Craig Topper <craig.topper@gmail.com> Make MCInstrInfo available to the MCInstPrinter. This will be used to remove getInstructionName and the static data it contains since the same tables are already in MCInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153860 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
eabae1d07bffac60d9f4f2473cf6736d6a1c372d 13-Mar-2012 Bill Wendling <isanbard@gmail.com> s/SjLjEHPass/SjLjEHPrepare/
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152658 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c6449b636f4984be88f128d0375c056ad05e7e8f 05-Mar-2012 Jim Grosbach <grosbach@apple.com> Make MCRegisterInfo available to the the MCInstPrinter.

Used to allow context sensitive printing of super-register or sub-register
references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152043 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
7842a741eb0e1baa35af8c3bb5884655c1edaa9e 17-Feb-2012 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
ffea03f2165c5a4fda672495bf853aa2d8c7d1b5 08-Feb-2012 Andrew Trick <atrick@apple.com> Added TargetPassConfig::setOpt

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
6939fde29cdd04cec9f440a9351c1c4340850e20 06-Feb-2012 Andrew Trick <atrick@apple.com> Add TargetPassConfig to the PassManager for use inside passes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149926 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c0dc1b7f9725433325ea06e1272ba7fd411c2eb1 04-Feb-2012 Nick Lewycky <nicholas@mxc.ca> Fix a leak!

Andy, in a previous commit you made this into an ImmutablePass so that you could
add it to the PassManager, then in the next commit you left it a Pass but
removed the code that added it to the PM. If you do add it to the PM then the PM
should take care of deleting it, but it's also true that nothing in codegen
needs this object to exist after it's done its work here. It's not clear to me
which design you want; this should likely either cease to be a Pass or be added
to the PM where other parts of CodeGen will request it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149765 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
061efcfb3e79899493d857f49e50d09f29037e0a 04-Feb-2012 Andrew Trick <atrick@apple.com> TargetPassConfig: confine the MC configuration to TargetMachine.

Passes prior to instructon selection are now split into separate configurable stages.
Header dependencies are simplified.
The bulk of this diff is simply removal of the silly DisableVerify flags.

Sorry for the target header churn. Attempting to stabilize them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149754 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
d5422654016b3ac7494db1d2ba16bd8febadb0a8 04-Feb-2012 Andrew Trick <atrick@apple.com> Move TargetPassConfig implementation into Passes.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149753 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
7461334084aa77286b6f9af596fb0f6ba0465685 04-Feb-2012 Andrew Trick <atrick@apple.com> Make TargetPassConfig an ImmutablePass so CodeGenPasses can query options

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149752 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
f1f78d5266dd67e25f23904578d69384bb53a6f7 03-Feb-2012 Andrew Trick <atrick@apple.com> Initialize all common codegen passes before configuration so we can use their PassIDs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149705 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
843ee2e6a46b2b2d74a84c2eea68dec35cb359cc 03-Feb-2012 Andrew Trick <atrick@apple.com> Added TargetPassConfig. The first little step toward configuring codegen passes.

Allows command line overrides to be centralized in LLVMTargetMachine.cpp.
LLVMTargetMachine can intercept common passes and give precedence to command line overrides.
Allows adding "internal" target configuration options without touching TargetOptions.
Encapsulates the PassManager.
Provides a good point to initialize all CodeGen passes so that Pass ID's can be used in APIs.
Allows modifying the target configuration hooks without rebuilding the world.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149672 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
4a309f3d25f3a28065a8ccbd7067afaad745e2d1 22-Jan-2012 Anton Korobeynikov <asl@math.spbu.ru> Add an option to disable buggy copy propagation pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148662 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
07680ec7a1ea86e8280c924e84e0eb2455e2483c 13-Jan-2012 Andrew Trick <atrick@apple.com> 80-col violation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148102 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
732f05c41f177a0bc4d47e93a5d02120f146cb4c 10-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Add 'llvm_unreachable' to passify GCC's understanding of the constraints
of several newly un-defaulted switches. This also helps optimizers
(including LLVM's) recognize that every case is covered, and we should
assume as much.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147861 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2bd335470f8939782f3df7f6180282d3825d4f09 10-Jan-2012 David Blaikie <dblaikie@gmail.com> Remove unnecessary default cases in switches that cover all enum values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147855 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
9cce24a257108ec50f65652d233b9ffadc691682 10-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove the logging streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
977679d6034791fd48a344e5b990503ba50fc242 07-Jan-2012 Evan Cheng <evan.cheng@apple.com> Added a late machine instruction copy propagation pass. This catches
opportunities that only present themselves after late optimizations
such as tail duplication .e.g.
## BB#1:
movl %eax, %ecx
movl %ecx, %eax
ret

The register allocator also leaves some of them around (due to false
dep between copies from phi-elimination, etc.)

This required some changes in codegen passes. Post-ra scheduler and the
pseudo-instruction expansion passes have been moved after branch folding
and tail merging. They were before branch folding before because it did
not always update block livein's. That's fixed now. The pass change makes
independently since we want to properly schedule instructions after
branch folding / tail duplication.

rdar://10428165
rdar://10640363



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147716 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
8a8d479214745c82ef00f08d4e4f1c173b5f9ce2 02-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Move global variables in TargetMachine into new TargetOptions class. As an API
change, now you need a TargetOptions object to create a TargetMachine. Clang
patch to follow.

One small functionality change in PTX. PTX had commented out the machine
verifier parts in their copy of printAndVerify. That now calls the version in
LLVMTargetMachine. Users of PTX who need verification disabled should rely on
not passing the command-line flag to enable it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145714 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
b95fc31aa2e5a0a0b9ee1909d1cb949577c5aa16 16-Nov-2011 Evan Cheng <evan.cheng@apple.com> Sink codegen optimization level into MCCodeGenInfo along side relocation model
and code model. This eliminates the need to pass OptLevel flag all over the
place and makes it possible for any codegen pass to use this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144788 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
37efc9fe42a4867c81526cac7fca9fe0ea04a484 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 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143537 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
ca30f75703fa4f032b256bba445608c79e2bd82c 25-Oct-2011 Jim Grosbach <grosbach@apple.com> Make assert() message more informative.

PR11217.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142956 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
db35087d21f09fdde81cab7e12fc0bcd8b7d00e9 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 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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142641 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
44d798d9763bc32aaf49fe7c10d604845f4b6685 18-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Add support for a new extension to the .file directive:

.file filenumber "directory" "filename"

This removes one join+split of the directory+filename in MC internals. Because
bitcode files have independent fields for directory and filenames in debug info,
this patch may change the .o files written by existing .bc files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142300 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
d398bae0e008f089037e7c3c316e2b6b194daefc 30-Sep-2011 Torok Edwin <edwintorok@gmail.com> Comment grammar fixes.

thanks to Duncan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140850 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
10a11ecb59b8b9d5de462930960df0d4bd4bf801 30-Sep-2011 Torok Edwin <edwintorok@gmail.com> Instead of crashing when MCAsmInfo is NULL, add an assert.

This helps with porting code from 2.9 to 3.0 as TargetSelect.h changed location,
and if you include the old one by accident you will trigger this assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140848 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
4b6736bdb02e21e4611522d033247f015aa6c4aa 28-Sep-2011 Bill Wendling <isanbard@gmail.com> Don't conditionalize execution of the SjLj EH prepare pass.

We may need an SjLj EH preparation pass for some call site information, at least
in the short term.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140674 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
0481d29d49cc26a944d0d502360f044cb493a4b5 28-Sep-2011 Bill Wendling <isanbard@gmail.com> This is the start of the new SjLj EH preparation pass, which will replace the
current IR-level pass.

The old SjLj EH pass has some problems, especially with the new EH model. Most
significantly, it violates some of the new restrictions the new model has. For
instance, the 'dispatch' table wants to jump to the landing pad, but we cannot
allow that because only an invoke's unwind edge can jump to a landing pad. This
requires us to mangle the code something awful. In addition, we need to keep the
now dead landingpad instructions around instead of CSE'ing them because the
DWARF emitter uses that information (they are dead because no control flow edge
will execute them - the control flow edge from an invoke's unwind is superceded
by the edge coming from the dispatch).

Basically, this pass belongs not at the IR level where SSA is king, but at the
code-gen level, where we have more flexibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140646 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
74e2d6ea66a9289fc3c00583f3c2b2abd84e1866 25-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up code after renaming LowerSubregs -> ExpandPostRAPseudos.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140470 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
b950585cc5a0d665e9accfe5ce490cd269756f2e 07-Sep-2011 James Molloy <james.molloy@arm.com> Refactor instprinter and mcdisassembler to take a SubtargetInfo. Add -mattr= handling to llvm-mc. Reviewed by Owen Anderson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139237 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
3e74d6fdd248e20a280f1dff3da9a6c689c2c4c3 24-Aug-2011 Evan Cheng <evan.cheng@apple.com> Move TargetRegistry and TargetSelect from Target to Support where they belong.
These are strictly utilities for registering targets and components.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138450 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
61b2d7f20780409143f312bcfa29149d237f99d8 19-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add llc flags to disable machine DCE and CSE.

This is useful for unit tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138028 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
28c85a81a17dd719a254dc00cbeb484774893197 26-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename createCodeEmitter to createMCCodeEmitter; createObjectStreamer to createMCObjectStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136031 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
78c10eeaa57d1c6c4b7781d3c0bcb0cfbbc43b5c 26-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename TargetAsmBackend to MCAsmBackend; rename createAsmBackend to createMCAsmBackend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136010 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
203576aa0cb9d8bf2d2e4d910ebab4b7a63262ae 20-Jul-2011 Evan Cheng <evan.cheng@apple.com> Goodbye TargetAsmInfo. This eliminate last bit of CodeGen and Target in llvm-mc.

There is still a bit more refactoring left to do in Targets. But we are now very
close to fixing all the layering issues in MC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135611 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
34ad6db8b958fdc0d38e122edf753b5326e69b03 20-Jul-2011 Evan Cheng <evan.cheng@apple.com> - Move CodeModel from a TargetMachine global option to MCCodeGenInfo.
- Introduce JITDefault code model. This tells targets to set different default
code model for JIT. This eliminates the ugly hack in TargetMachine where
code model is changed after construction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135580 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
e76a33b9567d78a5744dc52fcec3a6056d6fb576 20-Jul-2011 Evan Cheng <evan.cheng@apple.com> Add MCObjectFileInfo and sink the MCSections initialization code from
TargetLoweringObjectFileImpl down to MCObjectFileInfo.

TargetAsmInfo is done to one last method. It's *almost* gone!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135569 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
439661395fd2a2a832dba01c65bc88718528313c 19-Jul-2011 Evan Cheng <evan.cheng@apple.com> Introduce MCCodeGenInfo, which keeps information that can affect codegen
(including compilation, assembly). Move relocation model Reloc::Model from
TargetMachine to MCCodeGenInfo so it's accessible even without TargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135468 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
0e6a052331f674dd70e28af41f654a7874405eab 18-Jul-2011 Evan Cheng <evan.cheng@apple.com> Sink getDwarfRegNum, getLLVMRegNum, getSEHRegNum from TargetRegisterInfo down
to MCRegisterInfo. Also initialize the mapping at construction time.

This patch eliminate TargetRegisterInfo from TargetAsmInfo. It's another step
towards fixing the layering violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135424 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
1abf2cb59b8d63415780a03329307c0997b2670c 15-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename createAsmInfo to createMCAsmInfo and move registration code to MCTargetDesc to prepare for next round of changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135219 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
59ee62d2418df8db499eca1ae17f5900dc2dcbba 11-Jul-2011 Evan Cheng <evan.cheng@apple.com> - Eliminate MCCodeEmitter's dependency on TargetMachine. It now uses MCInstrInfo
and MCSubtargetInfo.
- Added methods to update subtarget features (used when targets automatically
detect subtarget features or switch modes).
- Teach X86Subtarget to update MCSubtargetInfo features bits since the
MCSubtargetInfo layer can be shared with other modules.
- These fixes .code 16 / .code 32 support since mode switch is updated in
MCSubtargetInfo so MC code emitter can do the right thing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134884 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
ebdeeab812beec0385b445f3d4c41a114e0d972f 08-Jul-2011 Evan Cheng <evan.cheng@apple.com> Eliminate asm parser's dependency on TargetMachine:
- Each target asm parser now creates its own MCSubtatgetInfo (if needed).
- Changed AssemblerPredicate to take subtarget features which tablegen uses
to generate asm matcher subtarget feature queries. e.g.
"ModeThumb,FeatureThumb2" is translated to
"(Bits & ModeThumb) != 0 && (Bits & FeatureThumb2) != 0".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134678 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
b262799d49891b036daa00eddf51947487346c98 06-Jul-2011 Evan Cheng <evan.cheng@apple.com> createMCInstPrinter doesn't need TargetMachine anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134525 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
9c04b5bd282bd5d03ab2114339d670ca95073664 06-Jul-2011 Dan Gohman <gohman@apple.com> Remove the ObjC ARC passes from the default optimization list, and add
extension points to be used by clang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134444 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
25483911049304c069b76f0a3b2f4f6b2216ef51 04-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Move early tail duplication earlier.

This fixes the issue noted in PR10251 where early tail dup of bbs with
indirectbr would cause a bb to be duplicated into a loop preheader
and then into its predecessors, creating phi nodes with identical
operands just before register allocation.

This helps with jsinterp.o size (__TEXT goes from 163568 to 126656)
and a bit with performance 1.005x faster on sunspider (jits still enabled).

The result on webkit with the jit disabled is more significant: 1.021x faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134372 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
e266ce6c6eaf52ebe2b18d85b5e23788cf2f6ef4 17-Jun-2011 Bill Wendling <isanbard@gmail.com> Use the verbose asm flag instead of a new flag for decoding the LSDA.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133292 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
916a94b870042772568fca7995cf45aef7a6e333 17-Jun-2011 Bill Wendling <isanbard@gmail.com> Add an option that allows one to "decode" the LSDA.

The LSDA is a bit difficult for the non-initiated to read. Even with comments,
it's not always clear what's going on. This wraps the ASM streamer in a class
that retains the LSDA and then emits a human-readable description of what's
going on in it.

So instead of having to make sense of:

Lexception1:
.byte 255
.byte 155
.byte 168
.space 1
.byte 3
.byte 26
Lset0 = Ltmp7-Leh_func_begin1
.long Lset0
Lset1 = Ltmp812-Ltmp7
.long Lset1
Lset2 = Ltmp913-Leh_func_begin1
.long Lset2
.byte 3
Lset3 = Ltmp812-Leh_func_begin1
.long Lset3
Lset4 = Leh_func_end1-Ltmp812
.long Lset4
.long 0
.byte 0
.byte 1
.byte 0
.byte 2
.byte 125
.long __ZTIi@GOTPCREL+4
.long __ZTIPKc@GOTPCREL+4

you can read this instead:

## Exception Handling Table: Lexception1
## @LPStart Encoding: omit
## @TType Encoding: indirect pcrel sdata4
## @TType Base: 40 bytes
## @CallSite Encoding: udata4
## @Action Table Size: 26 bytes

## Action 1:
## A throw between Ltmp7 and Ltmp812 jumps to Ltmp913 on an exception.
## For type(s): __ZTIi@GOTPCREL+4 __ZTIPKc@GOTPCREL+4
## Action 2:
## A throw between Ltmp812 and Leh_func_end1 does not have a landing pad.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133286 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
9fbd318d36e618fb08fb53bb48b7c848e617a8a7 16-Jun-2011 John McCall <rjmccall@apple.com> The ARC language-specific optimizer. Credit to Dan Gohman.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133108 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
d652b1368b1e381382951f450e5eeca870d91dd6 28-May-2011 Charles Davis <cdavis@mines.edu> Stub out support for Win64-style exceptions. Note that this is merely using
the Win64 EH mechanism to implement GCC-style exceptions. LLVM supports
hardly anything else at this point!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132234 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
402d9d9935fc1ee4e13675aae7f95072da50db69 22-May-2011 Chris Lattner <sabre@nondot.org> eliminate dependence on StandardPasses.h. The code generator's pass pipeline
should eventually convert to PMBuilder, but I don't plan to do this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131819 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
254784f9e0ae59fc060ccd54b39cd1e94ac91356 06-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove the DwarfTable enum.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130959 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
f1a5c7ec04002769f1638e64f7439589f0f926e6 30-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Add all the plumbing needed for MC to expand cfi to the old tables in
the final assembly. It is the same technique used when targeting
assemblers that don't support .loc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130587 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
a7b8c2b6a416052bd7b48d3c0d702d266c6ac3a2 29-Mar-2011 Daniel Dunbar <daniel@zuster.org> Integrated-As: Add support for setting the AllowTemporaryLabels flag via
integrated-as.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128431 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
a5c177e70a42f48e4885075c4c48aad0816a2817 21-Mar-2011 Bill Wendling <isanbard@gmail.com> We need to pass the TargetMachine object to the InstPrinter if we are printing
the alias of an InstAlias instead of the thing being aliased. Because we need to
know the features that are valid for an InstAlias.

This is part of a work-in-progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127986 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
31649e61bcead26a63c7cd452da90fff5e000b91 18-Mar-2011 Jim Grosbach <grosbach@apple.com> Beginnings of MC-JIT code generation.

Proof-of-concept code that code-gens a module to an in-memory MachO object.
This will be hooked up to a run-time dynamic linker library (see: llvm-rtdyld
for similarly conceptual work for that part) which will take the compiled
object and link it together with the rest of the system, providing back to the
JIT a table of available symbols which will be used to respond to the
getPointerTo*() queries.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127916 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
b5e16af9ea04cc1f94ca631104e5e6be96546aa1 05-Mar-2011 Anton Korobeynikov <asl@math.spbu.ru> Some first rudimentary support for ARM EHABI: print exception table in "text mode".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127099 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
00141694fa9fd846a051e335c3ec6ba335aca602 28-Feb-2011 Dan Gohman <gohman@apple.com> Delete the GEPSplitter experiment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126671 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
96aa78c8c5ef1a5f268539c9edc86569b436d573 23-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Add support for the --noexecstack option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124077 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
3965b5e974d57f3e56a2c7f37d76d73e572dfb20 14-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Add a possibility to switch between CFI directives- and table-based frame description emission. Currently all the backends use table-based stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123476 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
89cab93fe999f6d81b4b99a71ac797b7ecfec277 18-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Pass a Banner argument to the machine code verifier both from
createMachineVerifierPass and MachineFunction::verify.

The banner is printed before the machine code dump, just like the printer pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122113 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
745dacc91d7ee9531bfba76b21beb5d4eef93a7d 16-Dec-2010 Daniel Dunbar <daniel@zuster.org> MC: Make TargetAsmBackend available to the AsmStreamer.
- Treaty talks on the non-proliferation of MC objects broke down.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121949 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
89b9372605db2ce3b0085c84089e389f7bc1fbdd 10-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Fixed version of 121434 with no new memory leaks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121471 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
f7fd4aa2610f46467369de07f3ec669561d79be0 10-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert my previous patch to make the valgrind bots happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
1c952b9cc98e84b28f68f0f6cf11197263f89863 10-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Initial support for the cfi directives. This is just enough to get

f:
.cfi_startproc
nop
.cfi_endproc

assembled (on ELF).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
195a0ce484cd12a5adae9184188f6d0fb52b84c0 19-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Change some methods in MCDwarf.cpp to be able to handle an arbitrary
MCStreamer instead of just MCObjectStreamer. Address changes cannot
be as efficient as we have to use DW_LNE_set_addres, but at least
most of the logic is shared.

This will be used so that, with CodeGen still using EmitDwarfLocDirective,
llvm-gcc is able to produce debug_line sections without needing an
assembler that supports .loc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119777 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
bd77d399c4cdc2440abde96b2861b149fae4f33e 18-Nov-2010 Dan Gohman <gohman@apple.com> Oops, missed this file when remaing ExpandPseudos to ExpandISelPseudos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119717 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c4af4638dfdab0dc3b6257276cfad2ee45053060 17-Nov-2010 Evan Cheng <evan.cheng@apple.com> Remove ARM isel hacks that fold large immediates into a pair of add, sub, and,
and xor. The 32-bit move immediates can be hoisted out of loops by machine
LICM but the isel hacks were preventing them.

Instead, let peephole optimization pass recognize registers that are defined by
immediates and the ARM target hook will fold the immediates in.

Other changes include 1) do not fold and / xor into cmp to isel TST / TEQ
instructions if there are multiple uses. This happens when the 'and' is live
out, machine sink would have sinked the computation and that ends up pessimizing
code. The peephole pass would recognize situations where the 'and' can be
toggled to define CPSR and eliminate the comparison anyway.

2) Move peephole pass to after machine LICM, sink, and CSE to avoid blocking
important optimizations.

rdar://8663787, rdar://8241368


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119548 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
668ac2fdae69ed358ecf690d6a07428e5a9ee2f7 16-Nov-2010 Dan Gohman <gohman@apple.com> Split pseudo-instruction expansion into a separate pass, to make it
easier to debug, and to avoid complications when the CFG changes
in the middle of the instruction selection process.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119382 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
6da24ca51d0a0483b4ff1537a177bd172997f129 08-Nov-2010 Che-Liang Chiou <clchiou@gmail.com> Add registry hook for assembly text output


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118394 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
4021fccf9fdb60906e5f16c98e72042240867495 18-Oct-2010 Dan Gohman <gohman@apple.com> Add TypeBasedAliasAnalysis to the standard pass lists. Note that it
is currently inert by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116732 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c1be92f3bb9158eade30d97db6997e2fe78150ab 18-Oct-2010 Dan Gohman <gohman@apple.com> Make BasicAliasAnalysis a normal AliasAnalysis implementation which
does normal initialization and normal chaining. Change the default
AliasAnalysis implementation to NoAlias.

Update StandardCompileOpts.h and friends to explicitly request
BasicAliasAnalysis.

Update tests to explicitly request -basicaa.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116720 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
ff9dfedd101e1a591ec8f7fac9999777cde80efb 08-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Call InitSections in llc and clang so that the binaries produced by them
are easier to diff with those produced by llvm-mc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116095 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
22efc18f12d8d5d0fa23b559121d211f4ea222f6 31-Aug-2010 Duncan Sands <baldrick@free.fr> Stop using the dom frontier in DwarfEHPrepare by not promoting alloca's
any more. I plan to reimplement alloca promotion using SSAUpdater later.
It looks like Bill's URoR logic really always needs domtree, so the pass
now always asks for domtree info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112597 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
a273442891ae20fd8192526132e3819ea9e5eda9 24-Aug-2010 Jim Grosbach <grosbach@apple.com> Move enabling the local stack allocation pass into the target where it belongs.
For now it's still a command line option, but the interface to the generic
code doesn't need to know that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111942 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
3d72367d30c9ce6f387764a028763f7a366cc443 14-Aug-2010 Jim Grosbach <grosbach@apple.com> Add a local stack object block allocation pass. This is still an
experimental pass that allocates locals relative to one another before
register allocation and then assigns them to actual stack slots as a block
later in PEI. This will eventually allow targets with limited index offset
range to allocate additional base registers (not just FP and SP) to
more efficiently reference locals, as well as handle situations where
locals cannot be referenced via SP or FP at all (dynamic stack realignment
together with variable sized objects, for example). It's currently
incomplete and almost certainly buggy. Work in progress.

Disabled by default and gated via the -enable-local-stack-alloc command
line option.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111059 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c92bb50a0cdecccfa53573df720d5893f83f615e 13-Aug-2010 Jim Grosbach <grosbach@apple.com> tidy up whitespace a bit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111019 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
6cdb1abe4e4f6364649e7ef656589441754e82ae 10-Aug-2010 Bill Wendling <isanbard@gmail.com> Merge the OptimizeExts and OptimizeCmps passes into one PeepholeOptimizer
pass. This pass should expand with all of the small, fine-grained optimization
passes to reduce compile time and increase happiment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110627 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
e4ddbdfd3cf031034020671d03626f0373fbd5ca 06-Aug-2010 Bill Wendling <isanbard@gmail.com> Add the Optimize Compares pass (disabled by default).

This pass tries to remove comparison instructions when possible. For instance,
if you have this code:

sub r1, 1
cmp r1, 0
bz L1

and "sub" either sets the same flag as the "cmp" instruction or could be
converted to set the same flag, then we can eliminate the "cmp" instruction all
together. This is a important for ARM where the ALU instructions could set the
CPSR flag, but need a special suffix ('s') to do so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110423 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
73cf709a08d480c4315dc4aa9f644cf86494c4cf 05-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove double-def checking from MachineVerifier, so a register does not have to
be killed before being redefined.

These checks are usually disabled, and usually fail when enabled. We de facto
allow live registers to be redefined without a kill, the corresponding
assertions in RegScavenger were removed long ago.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110362 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
af33b7b4a775073585f2037bf4cb56f1cd87d13c 05-Aug-2010 Bill Wendling <isanbard@gmail.com> The lower invoke pass needs to have unreachable code elimination run after it
because it could create such things. This fixes a MingW buildbot test failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110279 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2464d618c0043b8dcd13170f145f5add7738aad3 04-Aug-2010 Bill Wendling <isanbard@gmail.com> The EH prepare passes really want to be the last passes run before code-gen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110248 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
1abcd06856df324eac98d4bf5ba673fb77ae6a11 29-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Plug the remaining MC leaks by giving MCObjectStreamer/MCAsmStreamer ownership of the TargetAsmBackend and the MCCodeEmitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109767 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
8c64b9766e654079339ea7f3a2da152f18d00179 24-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Add hook to insert late LLVM=>LLVM passes just before isel

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109354 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c96a82a53415fd0b6cb1bbea2593dc18683c70cc 22-Jul-2010 Reid Kleckner <reid@kleckner.net> Initial modifications to MCAssembler and TargetMachine for the MCJIT.

Patch by Olivier Meurant!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109080 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
84023e0fbefc406a4c611d3d64a10df5d3a97dd7 10-Jul-2010 Dan Gohman <gohman@apple.com> Reapply bottom-up fast-isel, with several fixes for x86-32:
- Check getBytesToPopOnReturn().
- Eschew ST0 and ST1 for return values.
- Fix the PIC base register initialization so that it doesn't ever
fail to end up the top of the entry block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108039 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
02266e29f9250d74c5ec720aff23add3410ae920 09-Jul-2010 Bob Wilson <bob.wilson@apple.com> --- Reverse-merging r107947 into '.':
U utils/TableGen/FastISelEmitter.cpp
--- Reverse-merging r107943 into '.':
U test/CodeGen/X86/fast-isel.ll
U test/CodeGen/X86/fast-isel-loads.ll
U include/llvm/Target/TargetLowering.h
U include/llvm/Support/PassNameParser.h
U include/llvm/CodeGen/FunctionLoweringInfo.h
U include/llvm/CodeGen/CallingConvLower.h
U include/llvm/CodeGen/FastISel.h
U include/llvm/CodeGen/SelectionDAGISel.h
U lib/CodeGen/LLVMTargetMachine.cpp
U lib/CodeGen/CallingConvLower.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
U lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
U lib/CodeGen/SelectionDAG/FastISel.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
U lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
U lib/CodeGen/SelectionDAG/InstrEmitter.cpp
U lib/CodeGen/SelectionDAG/TargetLowering.cpp
U lib/Target/XCore/XCoreISelLowering.cpp
U lib/Target/XCore/XCoreISelLowering.h
U lib/Target/X86/X86ISelLowering.cpp
U lib/Target/X86/X86FastISel.cpp
U lib/Target/X86/X86ISelLowering.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107987 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
bf87e2491789d6ff788629e22e93d0c1ca02ae85 09-Jul-2010 Dan Gohman <gohman@apple.com> Re-apply bottom-up fast-isel, with fixes. Be very careful to avoid emitting
a DBG_VALUE after a terminator, or emitting any instructions before an EH_LABEL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107943 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
f59514152511694d46ca8b8d2db466d256ab5759 08-Jul-2010 Dan Gohman <gohman@apple.com> Revert 107840 107839 107813 107804 107800 107797 107791.
Debug info intrinsics win for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107850 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
4df83ed159f21fdf73a57729c3e9d8c9fcd73607 07-Jul-2010 Dan Gohman <gohman@apple.com> Implement bottom-up fast-isel. This has the advantage of not requiring
a separate DCE pass over MachineInstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107804 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
63b95a6f820d768797b28bbfd5c12fabf74b7f1d 01-Jul-2010 Dan Gohman <gohman@apple.com> Temporarily disable on-demand fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107393 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
a528bc0e8af8e4d70ba03e03319cce7c5775e4ea 01-Jul-2010 Dan Gohman <gohman@apple.com> Fast isel no longer needs DeadMachineInstrElim to clean up after it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107381 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
0879e2279025522a070d57a7c4e0122daef94e2f 25-Jun-2010 Dan Gohman <gohman@apple.com> Add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106809 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
700bfada6375546f82000bdd1b4cdbe87beebea5 28-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a -regalloc=default option that chooses a register allocator based on the -O
optimization level.

This only really affects llc for now because both the llvm-gcc and clang front
ends override the default register allocator. I intend to remove that code later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104904 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
cb8326dc09d900688b2d15bd9c977d1c3b722427 26-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Add TargetMachine support for setting the value of MCRelaxAll with
-filetype=obj.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104747 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
fdb5a8617996a20370756962e34c2e80176d6e87 23-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Add an MCLoggingStreamer, for use in debugging integrated-as mismatches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104463 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
3538c808f8fd1d4124f0cda4c962467ec8ae5b70 18-May-2010 Daniel Dunbar <daniel@zuster.org> llc (et al): Add support for --show-encoding and --show-inst.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104029 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
bd616b69f7ab072a623b55a244bf61541eac5f32 14-May-2010 Daniel Dunbar <daniel@zuster.org> XFAIL the test I added with vg_leak, apparently it is the first and only llc
-filetype=obj test, and -filetype=obj leaks a few objects. Added a FIXME, we
need to sort out the ownership model for the various MC objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103769 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
55e59c186303ff02c0be7429da3b1b36c347f164 19-Apr-2010 Dan Gohman <gohman@apple.com> Code that needs a TargetMachine should have access to one directly, rather
than just getting one through a TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101802 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
f2b910922d80b254a06a62e350b1b6ae15f390b5 17-Apr-2010 Evan Cheng <evan.cheng@apple.com> Fix codegen passes. -disable-ssc shouldn't disable postra machine licm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101622 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
09010a30fdb58426fc06c5c97956db35dcd90979 12-Apr-2010 Evan Cheng <evan.cheng@apple.com> Enable post regalloc machine licm by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101023 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
4b38debf597a22e2db02aafdaa40264d7770c1ad 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Remove late ARM codegen optimization pass committed by accident.
It is not ready for public yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100673 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
977dfcefa1b139de56fd17e108b263e39e16504f 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add hook to insert late LLVM=>LLVM passes just before isel

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100640 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
d94671a25e65918557a2c03c0fc12a60a5d138bf 07-Apr-2010 Evan Cheng <evan.cheng@apple.com> Post regalloc LICM. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100592 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
b23569aff0a6d2b231cb93cc4acd0ac060ba560f 04-Apr-2010 Chris Lattner <sabre@nondot.org> Momentous day: remove the "O" member from AsmPrinter. Now all
"asm printering" happens through MCStreamer. This also
Streamerizes PIC16 debug info, which escaped my attention.

This removes a leak from LLVMTargetMachine of the 'legacy'
output stream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100327 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
d374087be5360a353a4239a155b1227057145f48 04-Apr-2010 Chris Lattner <sabre@nondot.org> fix an ugly wart in the MCInstPrinter api where the
raw_ostream to print an instruction to had to be specified
at MCInstPrinter construction time instead of being able
to pick at each call to printInstruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100307 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
11d53c129fc9c2a4510605ec0a1696f58750af52 13-Mar-2010 Chris Lattner <sabre@nondot.org> rearrange MCContext ownership. Before LLVMTargetMachine created it
and passing off ownership to AsmPrinter. Now MachineModuleInfo
creates it and owns it by value. This allows us to use MCSymbols
more consistently throughout the rest of the code generator, and
simplifies a bit of code. This also allows MachineFunction to
keep an MCContext reference handy, and cleans up the TargetRegistry
interfaces for AsmPrinters.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98450 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
5ef31a039dbb9c36cfd78442b3554d1b6974ec4c 12-Mar-2010 Chris Lattner <sabre@nondot.org> make the mangler take an MCContext instead of an MAI.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
fdab14b10564283028e9bdb628d095feae7fa071 12-Mar-2010 Chris Lattner <sabre@nondot.org> remove MAI argument from createAsmStreamer since it
can get it from the context now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98361 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c18409aed80ba1c6c5998befd3c3c8edc865c423 11-Mar-2010 Chris Lattner <sabre@nondot.org> change MCContext to always have an MCAsmInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98293 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
1f3e445184e5ca2aa4295c2a77f2a4e0b957fea1 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Provide MCAssembler with a TargetAsmBackend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98222 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
fac4f1f1815b54346a805834a8c19d573ce8856c 10-Mar-2010 Evan Cheng <evan.cheng@apple.com> Enable machine cse pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98132 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
7ef1840d9e17f8064c87982a09b99279365db700 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
31f94c7c22cbf59753764bc17130dca6a73c0b4e 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> - Make the machine cse dumb coalescer (as opposed to the more awesome simple
coalescer) handle sub-register classes.
- Add heuristics to avoid non-profitable cse. Given the current lack of live
range splitting, avoid cse when an expression has PHI use and the would be
new use is in a BB where the expression wasn't already being used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98043 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
a76e816844debe822c23932ef6a71c127d073063 05-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> We don't really care about correct register liveness information after the
post-ra scheduler has run. Disable the verifier checks that late in the game.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97837 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c46e293e946d109319d382b4547b4f47806d567a 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Run machine licm before machine cse to avoid messing up licm opportunities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97752 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
9763f709e229ff39d9f00a1086c07dfa0398b485 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Rename -machine-cse to -enable-machine-cse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97713 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
d89347cb49178da65a1c72cde5d54e79007d57ae 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Add an option to enable machine cse (it's not doing anything yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97627 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
8772f5041ce8e98695655a72a54b952583630617 28-Feb-2010 Dan Gohman <gohman@apple.com> Add a flag to addPassesToEmit* to disable the Verifier pass run
after LSR, so that clients can opt in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97357 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
60df9077ebe2a38723beadedd88e349f9aa214cb 26-Feb-2010 Bob Wilson <bob.wilson@apple.com> Remove unused "NoPRE" parameter in GVN and createGVNPass().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97235 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
bf9b221c006a99d6f117c1048412859d5637bcde 13-Feb-2010 Bob Wilson <bob.wilson@apple.com> Besides removing phi cycles that reduce to a single value, also remove dead
phi cycles. Adjust a few tests to keep dead instructions from being optimized
away. This (together with my previous change for phi cycles) fixes Apple
radar 7627077.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96057 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
86020e46289643de2f8c7603b550ffc8b6aff376 13-Feb-2010 Chris Lattner <sabre@nondot.org> give MCCodeEmitters access to the current MCContext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96038 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
572645cf84060c0fc25cb91d38cb9079918b3a88 12-Feb-2010 Dan Gohman <gohman@apple.com> Reapply the new LoopStrengthReduction code, with compile time and
bug fixes, and with improved heuristics for analyzing foreign-loop
addrecs.

This change also flattens IVUsers, eliminating the stride-oriented
groupings, which makes it easier to work with.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
fe61fb1e1082c81653ed78efd6d471592a2e57ad 12-Feb-2010 Bob Wilson <bob.wilson@apple.com> Add a new pass on machine instructions to optimize away PHI cycles that
reduce down to a single value. InstCombine already does this transformation
but DAG legalization may introduce new opportunities. This has turned out to
be important for ARM where 64-bit values are split up during type legalization:
InstCombine is not able to remove the PHI cycles on the 64-bit values but
the separate 32-bit values can be optimized. I measured the compile time
impact of this (running llc on 176.gcc) and it was not significant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95951 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
00a99a35840451a291eb61a192a750908a4073ae 06-Feb-2010 Evan Cheng <evan.cheng@apple.com> Run codegen dce pass for all targets at all optimization levels. Previously it's
only run for x86 with fastisel. I've found it being very effective in
eliminating some obvious dead code as result of formal parameter lowering
especially when tail call optimization eliminated the need for some of the loads
from fixed frame objects. It also shrinks a number of the tests. A couple of
tests no longer make sense and are now eliminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95493 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
5669e3009761dff20b67e18a382c334041887928 03-Feb-2010 Chris Lattner <sabre@nondot.org> change addPassesToEmitFile to return true on failure instead of its input,
add -filetype=null for performance testing and remove -filetype=dynlib,
which isn't planned to be implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95202 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
6c8d6ec2a7906733401aae121a5e1eacf477c0f5 03-Feb-2010 Chris Lattner <sabre@nondot.org> pass an instprinter into the AsmPrinter if it is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95168 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
be2e76bbb358ba58aecc05c94fb98cf5c2981bd2 03-Feb-2010 Chris Lattner <sabre@nondot.org> make any use of the "O" stream in asmprinter print to
stderr if in filetype=obj mode. This is a hack, and will
live until dwarf emission and other random stuff that is
not yet going through MCStreamer is upgraded. It only
impacts filetype=obj mode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95166 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
ac7798e9062f9bc371709ed445e1b3153b581e9a 03-Feb-2010 Chris Lattner <sabre@nondot.org> Hook up -filetype=obj through the MachO streamer. Here's a demo:

$ cat t.ll
@g = global i32 42
$ llc t.ll -o t.o -filetype=obj
$ nm t.o
00000000 D _g

There is still a ton of work left. Instructions are not being encoded
yet apparently.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95162 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
6cafdcc9afb294b62962f94f03cc48d6b18712d0 03-Feb-2010 Chris Lattner <sabre@nondot.org> use OwningPtr and factor code better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95156 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
56591ab218639d8a6e4c756ca37adaf20215c3b6 03-Feb-2010 Chris Lattner <sabre@nondot.org> refactor code so that LLVMTargetMachine creates the asmstreamer and
mccontext instead of having AsmPrinter do it. This allows other
types of MCStreamer's to be passed in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95155 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
e16ad1a9833c89965c921f137cfb6c424ff3e9c2 02-Feb-2010 Chris Lattner <sabre@nondot.org> simplify getVerboseAsm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95153 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
1f21990284906b1d3ed244d99808c6dade04d295 02-Feb-2010 Chris Lattner <sabre@nondot.org> move handling of asm-verbose out of AsmPrinter.cpp into LLVMTargetMachine.cpp with the rest of the command line options.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95152 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
3813d8adf3788dd01a4cb9db01c122cd5e6a13b9 02-Feb-2010 Chris Lattner <sabre@nondot.org> Remove a bunch of stuff around the edges of the ELF writer.
Now the only use of the ELF writer is the JIT, which won't be
easy to fix in the short term. :( :(



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95148 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
211edae4843f5c2ee9c376e88e4cf0ecc8745f03 02-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate FileModel::Model, just use CodeGenFileType. The client
of the code generator shouldn't care what object format a target
uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95124 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
b5c5160a554cb0debeb7913287d9c099a753a59e 02-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate all forms of addPassesToEmitMachineCode except
the one used by the JIT. Remove all forms of
addPassesToEmitFileFinish except the one used by the static
code generator. Inline the remaining version of
addPassesToEmitFileFinish into its only caller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95109 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
0823d2a654cb3a075016f6efd21359ed4f5aca21 02-Feb-2010 Chris Lattner <sabre@nondot.org> Inline addAssemblyEmitter into its one real caller and delete
the -print-emitted-asm option. The JIT shouldn't have to pull
in the asmprinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95100 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
39bdc78e6fcc2a152c6143952c23fba5db983227 02-Feb-2010 Nate Begeman <natebegeman@mac.com> Kill the Mach-O writer, and temporarily make filetype=obj an error.
The MCStreamer based assemblers will take over for this functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95033 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
12bdbf1ca80a1c7a18020f8fd4482180afcfe6f4 22-Jan-2010 Dan Gohman <gohman@apple.com> Revert r94066, which was the patch which added a Verifier pass after
LoopStrengthReduce, as it's causing too much trouble (even with the
old LoopStrengthReduce code).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94172 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
fca37064789620d80580bc19281ef30141e25dc1 21-Jan-2010 Dan Gohman <gohman@apple.com> Run the verifier after LSR, to help catch use-before-def errors before
they reach codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94066 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
516ab96de3eb0c80ac9c4867cc2076ef4749625e 16-Jan-2010 Bob Wilson <bob.wilson@apple.com> Run the pre-register allocation tail duplication pass by default. Remove
the -pre-regalloc-taildup command-line option, and add a new
-disable-early-taildup option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93597 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
3fe980b127a61608bd6d44c0939ba716ca21625c 15-Jan-2010 Nate Begeman <natebegeman@mac.com> Hook up llc's -filetype=obj to use MCStreamer if an MCCodeEmitter is available.
Remove most of old Mach-O Writer support, it has been replaced by MCMachOStreamer

Further refactoring to completely remove MachOWriter and drive the object file
writer with the AsmPrinter MCInst/MCSection logic is forthcoming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93527 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
86e69fa901ea0e04bc24ae3d8f757bccc84c10e6 14-Jan-2010 Jim Grosbach <grosbach@apple.com> Add comment explaining the necessity of r93456

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93459 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
9f82da7cbfe0c9f1b2c4bc7d7a9a9b5d35bea488 14-Jan-2010 Jim Grosbach <grosbach@apple.com> Dwarf EH prepare needs to be run after SjLj prepare. Otherwise,
catch info can get misplaced when a selector ends up more than one block
removed from the parent invoke(s). This could happen when a landing pad is
shared by multiple invokes and is also a target of a normal edge from
elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93456 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
81d22d87de93f501f90f55b6bbc63f5dd286797a 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Re-enable extension optimization pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93313 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
262a96edb436543227b9b5e49f95a082e1c73b5f 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Disable opt-ext pass to unbreak the build for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93286 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
d9e385f411abc1ec41130d8010a9de4a93dd1042 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Remove debug option I accidentally left in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93285 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
7da9ecf9677b751d81515f95168ae3cb2df54160 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Add a quick pass to optimize sign / zero extension instructions. For targets where the pre-extension values are available in the subreg of the result of the extension, replace the uses of the pre-extension value with the result + extract_subreg.

For now, this pass is fairly conservative. It only perform the replacement when both the pre- and post- extension values are used in the block. It will miss cases where the post-extension values are live, but not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93278 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
541e9ae3ad39f6ebca7649ce0c640ff2c64bfb84 07-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow double defs after tail duplication.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92874 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2800eb1d30aea4177d6ea42adddd70e01ede8699 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92524 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
f4f43cb5011611d44219ffb1caa988f5adf305bf 21-Dec-2009 Eric Christopher <echristo@apple.com> Fix setting and default setting of code model for jit. Do this
by allowing backends to override routines that will default
the JIT and Static code generation to an appropriate code model
for the architecture.

Should fix PR 5773.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91824 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2013e2c6bdc2ea5d9f9ddc5f3388c9349fb7e467 17-Dec-2009 Evan Cheng <evan.cheng@apple.com> Remove debugging code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91604 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
04149f7ffd033773adfe85e4acf3f560e29bd47d 17-Dec-2009 Evan Cheng <evan.cheng@apple.com> Revert 91280-91283, 91286-91289, 91291, 91293, 91295-91296. It apparently introduced a non-deterministic behavior in the optimizer somewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91598 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
79fc6f44b64f47b8a7d5e298c9f3c596b89fa88d 04-Dec-2009 Evan Cheng <evan.cheng@apple.com> Add a pre-regalloc tail duplication pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90567 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2d521e51acd5f1a0100cbbe4c611a35c978c2456 26-Nov-2009 Bob Wilson <bob.wilson@apple.com> Rename new TailDuplicationPass to avoid name conflict with the old one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89968 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
15acadde5f87703da5f36721a19c09a7e3f97f53 26-Nov-2009 Bob Wilson <bob.wilson@apple.com> Split tail duplication into a separate pass. This is needed to avoid
running tail duplication when doing branch folding for if-conversion, and
we also want to be able to run tail duplication earlier to fix some
reg alloc problems. Move the CanFallThrough function from BranchFolding
to MachineBasicBlock so that it can be shared by TailDuplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89904 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
f5a7a2c84a1951151fee4e7e34d1d94ef0c31fa8 24-Nov-2009 Devang Patel <dpatel@apple.com> Remove DebugLabelFolder pass. It is not used by dwarf writer anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89790 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2e7e94826a4cf6715b4c07d779fb84994c0bc47b 20-Nov-2009 Dan Gohman <gohman@apple.com> Add an experimental option to run gep-splitting and no-load GVN
just before codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89439 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
517e2556e39973ae65f58fad9865eef3a5a0966b 05-Nov-2009 Evan Cheng <evan.cheng@apple.com> Now that code placement optimization pass is run for JIT, make sure it's before pre-emit passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
522c01ac6585604d53172daa970443d1fcaca3b1 04-Nov-2009 Eric Christopher <echristo@apple.com> Add some options to disable various code gen optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86044 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
499a9377a3dcce85f39f04b2ab39c3dffa3025ef 31-Oct-2009 Dan Gohman <gohman@apple.com> Factor out more code into addCommonCodeGenPasses. The JIT wasn't
previously running CodePlacementOpt. Also print headers before
each dump in -print-machineinstrs mode, so that it's clear which
dump is which.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85681 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
9f476e3179713a1e93bbf634855b85a93f8653cd 31-Oct-2009 Dan Gohman <gohman@apple.com> Remove CodeGenLICM. It's largely obsoleted by MachineLICM's new ability
to unfold loop-invariant loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85657 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
8bedf97f683bd5edb9308799a5e525de137d635c 29-Oct-2009 Bill Wendling <isanbard@gmail.com> Don't put in these EH changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85460 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
f58898fd41a61d8f02657c3ecddb085c39c0d773 29-Oct-2009 Bill Wendling <isanbard@gmail.com> Reverting r85338 for now. It's causing a bootstrap failure on PPC darwin9.

--- Reverse-merging r85338 into '.':
U lib/CodeGen/SimpleRegisterCoalescing.cpp
U lib/CodeGen/SimpleRegisterCoalescing.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85454 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
a597103c328e29fb763e7a4864bd7c29a588fc9d 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revert r85346 change to control tail merging by CodeGenOpt::Level.
I'm going to redo this using the OptimizeForSize function attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85426 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
cd4f04d6bcb7aefa24d92582fbadfe17519f4756 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Record CodeGen optimization level in the BranchFolding pass so that we can
use it to control tail merging when there is a tradeoff between performance
and code size. When there is only 1 instruction in the common tail, we have
been merging. That can be good for code size but is a definite loss for
performance. Now we will avoid tail merging in that case when the
optimization level is "Aggressive", i.e., "-O3". Radar 7338114.

Since the IfConversion pass invokes BranchFolding, it too needs to know
the optimization level. Note that I removed the RegisterPass instantiation
for IfConversion because it required a default constructor. If someone
wants to keep that for some reason, we can add a default constructor with
a hard-wired optimization level.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
fa16354e0370fe884830286923352268b036737d 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> Change createPostRAScheduler so it can be turned off at llc -O1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84273 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
629adde69953fa53362d20ddb7b4e67ed78b8ae3 30-Sep-2009 Evan Cheng <evan.cheng@apple.com> Add a target hook to add pre- post-regalloc scheduling passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83144 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
0dad89fa94536284d51f60868326294b725a0c61 30-Sep-2009 David Goodwin <david_goodwin@apple.com> Remove -post-RA-schedule flag and add a TargetSubtarget method to enable post-register-allocation scheduling. By default it is off. For ARM, enable/disable with -mattr=+/-postrasched. Enable by default for cortex-a8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83122 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
483011018efec3972fb2b003d6e8b6a095e4d9e5 25-Sep-2009 Evan Cheng <evan.cheng@apple.com> Flip -disable-post-RA-scheduler to -post-RA-scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82803 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
6f65d79750154c92c3e184c8cf3233a66c411c87 16-Sep-2009 Dan Gohman <gohman@apple.com> Add a new pass for doing late hoisting of floating-point and vector
constants out of loops. These aren't covered by the regular LICM
pass, because in LLVM IR constants don't require separate
instructions. They're not always covered by the MachineLICM pass
either, because it doesn't know how to unfold folded constant-pool
loads. This is somewhat experimental at this point, and off by
default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82076 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
e29fea4434b784bd8d908088c0ee4d4788080088 26-Aug-2009 Dan Gohman <gohman@apple.com> -fast is now -O0. -fast-isel is no longer experimental.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80104 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
cf143a4d917699f8f4202f331fa9e184070471fb 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove std::ostream versions of printing stuff for MBB and MF,
upgrading a few things to use raw_ostream


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79811 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
af76e592c7f9deff0e55c13dbb4a34f07f1c7f64 22-Aug-2009 Chris Lattner <sabre@nondot.org> Rename TargetAsmInfo (and its subclasses) to MCAsmInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79763 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
8b818d7e98309125c6058c4ea72a7dc73b031db2 17-Aug-2009 Jim Grosbach <grosbach@apple.com> Move the sjlj exception handling conversions to a back-end pass where they
more properly belong. This allows removing the front-end conditionalized
SJLJ code, and cleans up the generated IR considerably. All of the
infrastructure code (calling _Unwind_SjLj_Register/Unregister, etc) is
added by the SjLjEHPrepare pass.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79250 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
4af85b2328d432960371efeb092a70a8d9c25227 15-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow double defs in the machine code verifier after the addPreRegAlloc passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79095 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
789457847002f5289dbbc5cfce9d68c72e00bed1 14-Aug-2009 Daniel Dunbar <daniel@zuster.org> TargetRegistry: Change AsmPrinter constructor to be typed as returning an
AsmPrinter instance (instead of just a FunctionPass)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78962 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
67d894ea64bc52245abf3f2ba89122a749d99c53 13-Aug-2009 Daniel Dunbar <daniel@zuster.org> TargetRegistry: Reorganize AsmPrinter construction so that clients pass in the
TargetAsmInfo. This eliminates a dependency on TargetMachine.h from
TargetRegistry.h, which technically was a layering violation.
- Clients probably can only sensibly pass in the same TargetAsmInfo as the
TargetMachine has, but there are only limited clients of this API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78928 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
a7ac47cee1a0b3f4c798ecaa22ecf9d1be9c07e6 12-Aug-2009 Chris Lattner <sabre@nondot.org> Change TargetAsmInfo to be constructed via TargetRegistry from a Target+Triple
pair instead of from a virtual method on TargetMachine. This cuts the final
ties of TargetAsmInfo to TargetMachine, meaning that MC can now use
TargetAsmInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78802 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
ffef8acc3e3398bdd04e947c7949befdd52faf86 11-Aug-2009 Dan Gohman <gohman@apple.com> Tidy #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78677 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
1b747ad8a0694b86e8d98a8b9a05ddfe74ec0cd3 11-Aug-2009 Jim Grosbach <grosbach@apple.com> SjLj based exception handling unwinding support. This patch is nasty, brutish
and short. Well, it's kinda short. Definitely nasty and brutish.

The front-end generates the register/unregister calls into the SjLj runtime,
call-site indices and landing pad dispatch. The back end fills in the LSDA
with the call-site information provided by the front end. Catch blocks are
not yet implemented.

Built on Darwin and verified no llvm-core "make check" regressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78625 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
6248fa45299a9e54aac84b3296c02c44ddec84e8 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> Disable stack coloring with register for now. It's not able to set kill markers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78179 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
ad2afc2a421a0e41603d5eee412d4d8c77e9bc1c 31-Jul-2009 Dan Gohman <gohman@apple.com> Reapply r77654 with a fix: MachineFunctionPass's getAnalysisUsage
shouldn't do AU.setPreservesCFG(), because even though CodeGen passes
don't modify the LLVM IR CFG, they may modify the MachineFunction CFG,
and passes like MachineLoop are registered with isCFGOnly set to true.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77691 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c5b19b21d84814d19692a6bbea11fbd135f4b094 31-Jul-2009 Daniel Dunbar <daniel@zuster.org> Revert r77654, it appears to be causing llvm-gcc bootstrap failures, and many
failures when building assorted projects with clang.

--- Reverse-merging r77654 into '.':
U include/llvm/CodeGen/Passes.h
U include/llvm/CodeGen/MachineFunctionPass.h
U include/llvm/CodeGen/MachineFunction.h
U include/llvm/CodeGen/LazyLiveness.h
U include/llvm/CodeGen/SelectionDAGISel.h
D include/llvm/CodeGen/MachineFunctionAnalysis.h
U include/llvm/Function.h
U lib/Target/CellSPU/SPUISelDAGToDAG.cpp
U lib/Target/PowerPC/PPCISelDAGToDAG.cpp
U lib/CodeGen/LLVMTargetMachine.cpp
U lib/CodeGen/MachineVerifier.cpp
U lib/CodeGen/MachineFunction.cpp
U lib/CodeGen/PrologEpilogInserter.cpp
U lib/CodeGen/MachineLoopInfo.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
D lib/CodeGen/MachineFunctionAnalysis.cpp
D lib/CodeGen/MachineFunctionPass.cpp
U lib/CodeGen/LiveVariables.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
933c762371fe8cc6e2ef5d00d6866f4924852fed 31-Jul-2009 Dan Gohman <gohman@apple.com> Manage MachineFunctions with an analysis Pass instead of the Annotable
mechanism. To support this, make MachineFunctionPass a little more
complete.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77654 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
36129dba4f4134bc9cc83e3ea830e215754b1baf 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> We don't need to use llvm_report_error, this interface can deal with errors
(although we don't get a very good error message).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75864 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
6d823cd39d8d16571682cd1bb4cbf2ecb4815d8e 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75862 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
5d77cad60bd82dfa2d00f78e26443d667922efbf 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Lift addAssemblyEmitter into LLVMTargetMachine.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75859 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
cfe9a605eea542d91e3db74289b69b7e317d90a6 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Lift DumpAsm / -print-emitted-asm functionality into LLVMTargetMachine.
- No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75848 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
71847813bc419f7a0667468136a07429c6d9f164 14-Jul-2009 David Greene <greened@obbligato.org> Have asm printers use formatted_raw_ostream directly to avoid a
dynamic_cast<>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75670 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
8799dbe5b7be2e959047caf88ce97a04a3526856 14-Jul-2009 Evan Cheng <evan.cheng@apple.com> Revert an accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75553 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
ac57e6e498abccb117e0d61c2fa0f733845e50cb 06-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add the Object Code Emitter class. Original patch by Aaron Gray, I did some
cleanup, removed some #includes and moved Object Code Emitter out-of-line.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74813 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
e7d6df73530a98a5cc5f69ddfd17073b464caa57 13-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add a ARM specific pre-allocation pass that re-schedule loads / stores from
consecutive addresses togther. This makes it easier for the post-allocation pass
to form ldm / stm.

This is step 1. We are still missing a lot of ldm / stm opportunities because
of register allocation are not done in the desired order. More enhancements
coming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73291 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
a3f99f90338d89354384ca25f53ca4450a1a9d18 30-May-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> First patch in the direction of splitting MachineCodeEmitter in two subclasses:
JITCodeEmitter and ObjectCodeEmitter. No functional changes yet. Patch by Aaron Gray



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72631 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
b0f1e1780c736c62fb99e5824825d2a60a53b53b 22-May-2009 Duncan Sands <baldrick@free.fr> Add a new codegen pass that normalizes dwarf exception handling
code in preparation for code generation. The main thing it does
is handle the case when eh.exception calls (and, in a future
patch, eh.selector calls) are far away from landing pads. Right
now in practice you only find eh.exception calls close to landing
pads: either in a landing pad (the common case) or in a landing
pad successor, due to loop passes shifting them about. However
future exception handling improvements will result in calls far
from landing pads:
(1) Inlining of rewinds. Consider the following case:
In function @f:
...
invoke @g to label %normal unwind label %unwinds
...
unwinds:
%ex = call i8* @llvm.eh.exception()
...

In function @g:
...
invoke @something to label %continue unwind label %handler
...
handler:
%ex = call i8* @llvm.eh.exception()
... perform cleanups ...
"rethrow exception"

Now inline @g into @f. Currently this is turned into:
In function @f:
...
invoke @something to label %continue unwind label %handler
...
handler:
%ex = call i8* @llvm.eh.exception()
... perform cleanups ...
invoke "rethrow exception" to label %normal unwind label %unwinds
unwinds:
%ex = call i8* @llvm.eh.exception()
...

However we would like to simplify invoke of "rethrow exception" into
a branch to the %unwinds label. Then %unwinds is no longer a landing
pad, and the eh.exception call there is then far away from any landing
pads.

(2) Using the unwind instruction for cleanups.
It would be nice to have codegen handle the following case:
invoke @something to label %continue unwind label %run_cleanups
...
handler:
... perform cleanups ...
unwind

This requires turning "unwind" into a library call, which
necessarily takes a pointer to the exception as an argument
(this patch also does this unwind lowering). But that means
you are using eh.exception again far from a landing pad.

(3) Bugpoint simplifications. When bugpoint is simplifying
exception handling code it often generates eh.exception calls
far from a landing pad, which then causes codegen to assert.
Bugpoint then latches on to this assertion and loses sight
of the original problem.

Note that it is currently rare for this pass to actually do
anything. And in fact it normally shouldn't do anything at
all given the code coming out of llvm-gcc! But it does fire
a few times in the testsuite. As far as I can see this is
almost always due to the LoopStrengthReduce codegen pass
introducing pointless loop preheader blocks which are landing
pads and only contain a branch to another block. This other
block contains an eh.exception call. So probably by tweaking
LoopStrengthReduce a bit this can be avoided.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72276 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
48872e0d84b47769be6c13ae98bf88468b59d921 16-May-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Pass to verify generated machine code.

The following is checked:

* Operand counts: All explicit operands must be present.

* Register classes: All physical and virtual register operands must be
compatible with the register class required by the instruction descriptor.

* Register live intervals: Registers must be defined only once, and must be
defined before use.

The machine code verifier is enabled with the command-line option
'-verify-machineinstrs', or by defining the environment variable
LLVM_VERIFY_MACHINEINSTRS to the name of a file that will receive all the
verifier errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71918 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
1ea7327845bcd0996425c9892730bf9b1f123f20 12-May-2009 Evan Cheng <evan.cheng@apple.com> Fixed a stack slot coloring with reg bug: do not update implicit use / def when doing forward / backward propagation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71574 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
bbf1db72133e9cf986e4da6260736335533067db 07-May-2009 Evan Cheng <evan.cheng@apple.com> Rename "loop aligner" pass to "code placement optimization" pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71150 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2c1d7726f25b6b219a1518b411351b99d25c1a02 07-May-2009 Bill Wendling <isanbard@gmail.com> Just turn aggressive stack coloring off at -O3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71140 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
d0c1f9c932e9da29ea4c6e9a863f1567c6e61477 07-May-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r71010. It was causing massive failures during self-hosting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71138 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
f9a9b51429b284ad85f1162592a10918c5665733 05-May-2009 Evan Cheng <evan.cheng@apple.com> Enable stack coloring with regs at -O3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71010 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
98a366d547772010e94609e4584489b3e5ce0043 30-Apr-2009 Bill Wendling <isanbard@gmail.com> Instead of passing in an unsigned value for the optimization level, use an enum,
which better identifies what the optimization is doing. And is more flexible for
future uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70440 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
be8cc2a3dedeb7685f07e68cdc4b9502eb97eb2b 29-Apr-2009 Bill Wendling <isanbard@gmail.com> Second attempt:

Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.

Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'll change the JIT with a follow-up patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70343 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c69d56f1154342a57c9bdd4c17a10333e3520127 28-Apr-2009 Bill Wendling <isanbard@gmail.com> r70270 isn't ready yet. Back this out. Sorry for the noise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70275 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2e9d5f912a9841d3685ba0241abe1131943fed29 28-Apr-2009 Bill Wendling <isanbard@gmail.com> Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.

Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'm not 100% sure if it's necessary to change it there...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70270 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
42bf74be1402df7409efbea089310d4c276fde37 25-Mar-2009 Evan Cheng <evan.cheng@apple.com> CodeGen still defaults to non-verbose asm, but llc now overrides it and default to verbose.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67668 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
8f0d99e463a2dcb5a40d14f0481a0e322bcf79e4 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Re-enable machine sinking pass now that the coalescer bugs and the AnalyzeBrnach bug are fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64126 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
7f51fd3ea93232658388757fcc8121f14f4454bc 08-Feb-2009 Bill Wendling <isanbard@gmail.com> Revert r63999. It was breaking self-hosting builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64062 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c963b638c783beb2252e8a6c580c2d15c36c9be9 07-Feb-2009 Evan Cheng <evan.cheng@apple.com> Enable machine sinking pass in non-fast mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63999 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c5d1a4ffd96528b49a9e34e06706f1499cd0fe80 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> Turn on machine LICM in non-fast mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63855 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
23b0d490cdf27b2cba7b497aceeb5c79b0d0c9fe 18-Dec-2008 Dan Gohman <gohman@apple.com> Move post-RA scheduling before branch folding for now, because branch
folding's tail merging doesn't currently preserve liveness information
which post-RA scheduling requires.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61183 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
cb72dd6776d49b21711977bde21b23c92cff7544 24-Nov-2008 Dan Gohman <gohman@apple.com> Run post-RA scheduling after branch folding, as it tends to
obscure tail-merging opportunities.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
5ce0973f7f4d149f986d16d1a1f79b131fd70423 20-Nov-2008 Dan Gohman <gohman@apple.com> Add another machine-code printing pass when post-pass scheduling is run.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59746 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
e9e6bdf27fca46dc9eca2ebdf73e03747d1859ab 13-Nov-2008 Bill Wendling <isanbard@gmail.com> Implement stack protectors as function attributes: "ssp" and "sspreq".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59202 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
80a320d974dae7666157e80b141d7ff97e5f6544 04-Nov-2008 Bill Wendling <isanbard@gmail.com> Update in response to feedback from Chris:

- Use enums instead of magic numbers.

- Rework algorithm to use the bytes size from the target to determine when to
emit stack protectors.

- Get rid of "propolice" in any comments.

- Renamed an option to its expanded form.

- Other miscellanenous changes.

More changes will come after this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58723 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2b58ce5ab4e22e796303d68fb246d4031cb5d4ca 04-Nov-2008 Bill Wendling <isanbard@gmail.com> Initial checkin for stack protectors. Here's what it does:

* The prologue is modified to read the __stack_chk_guard global and insert it
onto the stack.

* The epilogue is modified to read the stored guard from the stack and compare
it to the original __stack_chk_guard value. If they differ, then the
__stack_chk_fail() function is called.

* The stack protector needs to be first on the stack (after the parameters) to
catch any stack-smashing activities.

Front-end support will follow after a round of beta testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58673 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
71b7f646de0d9e74198534d4a7b6059e6031ed59 25-Oct-2008 Dan Gohman <gohman@apple.com> Move the code that adds the DeadMachineInstructionElimPass from
target-independent code to target-specific code. This prevents it
from running on targets that aren't using fast-isel.

In addition to saving compile time, this addresses the problem
that not all targets are prepared for it. In order to use this
pass, all instructions must declare all their fixed uses and
defs of physical registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58144 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
3b0da26e202cbbeb22508231f4278bda8e995391 22-Oct-2008 Daniel Dunbar <daniel@zuster.org> Move Print*Pass to use raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57946 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
f4db3a51c7d806f7dcef5d9625e7cdf7f122dca9 22-Oct-2008 Daniel Dunbar <daniel@zuster.org> Privatize PrintModulePass and PrintFunctionPass and add
createPrintModulePass and createPrintFunctionPass.
- So clients who compile w/o RTTI can use them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57933 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
eb0d6abee36c274cf081948795f4675d8f33fc6f 08-Oct-2008 Dan Gohman <gohman@apple.com> Remove -disable-fast-isel. Use cl::boolOrDefault with -fast-isel
instead.

So now: -fast-isel or -fast-isel=true enable fast-isel, and
-fast-isel=false disables it. Fast-isel is also on by default
with -fast, and off by default otherwise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57270 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
4ae641f4d12c60ee1aaca5e42b6de231c6a02c40 02-Oct-2008 Devang Patel <dpatel@apple.com> Remove OptimizeForSize global. Use function attribute optsize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56937 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
dc756858f92a397ed30362ba8251fec56479735f 01-Oct-2008 Dan Gohman <gohman@apple.com> Enable FastISel by default (on x86 and x86-64) with the -fast option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56930 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2c4bf119be8aa05cdc3dc88c57006353f07f0d2c 25-Sep-2008 Dan Gohman <gohman@apple.com> Enable DeadMachineInstructionElim when Fast-ISel is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56604 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
02dae4ba06a05d28b24b3c1b39d54de751271c95 25-Sep-2008 Dan Gohman <gohman@apple.com> Refactor the code that adds standard LLVM codegen passes into
a separate function, eliminating duplication between the
add-passes-for-file and add-passes-for-machine-code code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56599 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
cb3718832375a581c5ea23f15918f3ea447a446c 21-Aug-2008 Owen Anderson <resistor@mac.com> Use raw_ostream throughout the AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
5eca075b74d62c621b160aa216b4cd50829a2cc7 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Rename some GC classes so that their roll will hopefully be clearer.

In particular, Collector was confusing to implementors. Several
thought that this compile-time class was the place to implement
their runtime GC heap. Of course, it doesn't even exist at runtime.
Specifically, the renames are:

Collector -> GCStrategy
CollectorMetadata -> GCFunctionInfo
CollectorModuleMetadata -> GCModuleInfo
CollectorRegistry -> GCRegistry
Function::getCollector -> getGC (setGC, hasGC, clearGC)

Several accessors and nested types have also been renamed to be
consistent. These changes should be obvious.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
5a29c9eed157af51a8d338b5a225b146881819e8 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Factor GC metadata table assembly generation out of Collector in preparation for splitting AsmPrinter into its own library.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54881 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
9ef4c5302eb547936f6586ece880f31104d2f801 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Don't run stack slot coloring if -fast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52933 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
877333b99dd830c3e8bb7eaa1345ea942d29fc06 06-Jun-2008 Evan Cheng <evan.cheng@apple.com> Enable stack coloring by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52057 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
75bb734f1d4d50ebb377bd030e2ee002a09be673 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Oops. Should not be enabled by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51953 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
3f32d65912b4da23793dab618d981be2ce11c331 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Add a stack slot coloring pass. Not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51934 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
f73ff3aaf64627fb71753032904ee3ab2a7add28 03-Jun-2008 Evan Cheng <evan.cheng@apple.com> Do not run loop-aligner at -fast (e.g. -O0).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51898 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
7645e574d2d50b1a737f91013fba75af61426fcf 31-May-2008 Evan Cheng <evan.cheng@apple.com> Fix indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51793 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
b013f5094c3bdb36472da996d63d5c0f75b6d4d3 23-Apr-2008 Anton Korobeynikov <asl@math.spbu.ru> Unbreak JIT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50173 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
769b481e9f57b9fa2acf6c5fe0a94877520fcec3 23-Apr-2008 Anton Korobeynikov <asl@math.spbu.ru> Add facility for pre-RA passes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50165 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
1532f3ddd77c362dd5f613af06b4de636e3c5b0e 02-Apr-2008 Dale Johannesen <dalej@apple.com> Recommitting EH patch; this should answer most of the
review feedback.
-enable-eh is still accepted but doesn't do anything.
EH intrinsics use Dwarf EH if the target supports that,
and are handled by LowerInvoke otherwise.
The separation of the EH table and frame move data is,
I think, logically figured out, but either one still
causes full EH info to be generated (not sure how to
split the metadata correctly).
MachineModuleInfo::needsFrameInfo is no longer used and
is removed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49064 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
b6d5b1439047609c050576f3dc52b722e76bd30b 01-Apr-2008 Dale Johannesen <dalej@apple.com> Revert 49006 for the moment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49046 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
1544e4713be68edcf042de5aed7265dff7169d9d 01-Apr-2008 Dale Johannesen <dalej@apple.com> Emit exception handling info for functions which are
not marked nounwind, or for all functions when -enable-eh
is set, provided the target supports Dwarf EH.

llvm-gcc generates nounwind in the right places; other FEs
will need to do so also. Given such a FE, -enable-eh should
no longer be needed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49006 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
62c7b8c3713f7178991fac299abcb04e3818ca65 25-Mar-2008 Dan Gohman <gohman@apple.com> Avoid outputing spaces at the ends of lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48797 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
73ee9c3fb1f15cbfb2f91a4f645834c94a76a949 25-Mar-2008 Devang Patel <dpatel@apple.com> Do not align loops if optimizing for size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48794 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
bfae83139dcb4fffd50b939e1b1224b0126f04d4 11-Mar-2008 Dan Gohman <gohman@apple.com> Use PassManagerBase instead of FunctionPassManager for functions
that merely add passes. This allows them to be used with either
FunctionPassManager or PassManager, or even with a custom new
kind of pass manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
d703ed6aed98c8156829399efbafb13a3cca0b69 29-Feb-2008 Evan Cheng <evan.cheng@apple.com> Added option -align-loops=<true/false> to disable loop aligner pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47736 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
afe6c2b001a924cd74bd0aacfed5984d9af004b0 13-Feb-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Enable exception handling int JIT



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47079 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
459525df1e003597077197b5f802bd5d9cd7d94c 14-Jan-2008 Chris Lattner <sabre@nondot.org> don't create the post-ra scheduler unless it is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45972 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
93f96d00bf10299246ea726956ce84dcb4b9a59e 07-Jan-2008 Gordon Henriksen <gordonhenriksen@mac.com> Ammending r45669 with a missing file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45671 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
3c42f1211874665e8ea6eea55a45024b557afa61 05-Jan-2008 Chris Lattner <sabre@nondot.org> allow sinking to be enabled for the jit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45624 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
cc8f603f531c906782e4966107ae29667eb6632c 04-Jan-2008 Bill Wendling <isanbard@gmail.com> Move option to enable machine LICM into LLVMTargetMachine.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45572 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c4ce73f666e7ab9a270982a575101df8aa6160d3 04-Jan-2008 Chris Lattner <sabre@nondot.org> Add a really quick hack at a machine code sinking pass, enabled with --enable-sinking.
It is missing validity checks, so it is known broken. However, it is powerful enough
to compile this contrived code:

void test1(int C, double A, double B, double *P) {
double Tmp = A*A+B*B;
*P = C ? Tmp : A;
}

into:

_test1:
movsd 8(%esp), %xmm0
cmpl $0, 4(%esp)
je LBB1_2 # entry
LBB1_1: # entry
movsd 16(%esp), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
LBB1_2: # entry
movl 24(%esp), %eax
movsd %xmm0, (%eax)
ret

instead of:

_test1:
movsd 16(%esp), %xmm0
mulsd %xmm0, %xmm0
movsd 8(%esp), %xmm1
movapd %xmm1, %xmm2
mulsd %xmm2, %xmm2
addsd %xmm0, %xmm2
cmpl $0, 4(%esp)
je LBB1_2 # entry
LBB1_1: # entry
movapd %xmm2, %xmm1
LBB1_2: # entry
movl 24(%esp), %eax
movsd %xmm1, (%eax)
ret

woo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45570 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
4ee451de366474b9c228b4e5fa573795a715216d 29-Dec-2007 Chris Lattner <sabre@nondot.org> Remove attribution from file headers, per discussion on llvmdev.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
0f940c95d4506f8d04fa2aeda8a79cadb3105fe3 07-Dec-2007 Bill Wendling <isanbard@gmail.com> Initial commit of the machine code LICM pass. It successfully hoists this:

_foo:
li r2, 0
LBB1_1: ; bb
li r5, 0
stw r5, 0(r3)
addi r2, r2, 1
addi r3, r3, 4
cmplw cr0, r2, r4
bne cr0, LBB1_1 ; bb
LBB1_2: ; return
blr

to:

_foo:
li r2, 0
li r5, 0
LBB1_1: ; bb
stw r5, 0(r3)
addi r2, r2, 1
addi r3, r3, 4
cmplw cr0, r2, r4
bne cr0, LBB1_1 ; bb
LBB1_2: ; return
blr

ZOMG!! :-)

Moar to come...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44687 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
ada779fb11eb411536aa8219a176ca0ce4d58fd1 27-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Move subreg lowering pass to be right after regalloc, per feedback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40548 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
bab2474b64e81be0ed4fc35d16cdfac65f283361 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Add a MachineFunction pass, which runs post register allocation, that turns subreg insert/extract instruction into register copies. This ensures correct code gen if the coalescer isn't able to remove all subreg instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40521 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
8bd6035750f1b290832a3b1c90766d9b45ed8d6b 20-Jul-2007 Evan Cheng <evan.cheng@apple.com> Added -print-emitted-asm to print out JIT generated asm to cerr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40123 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
72f159640382a16e036b63dcb9c0b427e6d5dc0a 13-Jul-2007 Dale Johannesen <dalej@apple.com> Modify previous patch per review comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39817 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
e7e7d0d7e39d0c7c659d26b97e8081fce0fcd749 13-Jul-2007 Dale Johannesen <dalej@apple.com> Skeleton of post-RA scheduler; doesn't do anything yet.
Change name of -sched option and DEBUG_TYPE to
pre-RA-sched; adjust testcases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39816 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c3751600b7a5dee550c5e50cb83065630759467f 11-Jul-2007 Duncan Sands <baldrick@free.fr> Exception handling has been implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39732 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
85ef2546303fabe32de3f2519a978fa2a7fd5958 19-Jun-2007 Chris Lattner <sabre@nondot.org> document and hide two options.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37651 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
e6e435498c0e35d98644f868886d39c4665bb83a 22-May-2007 Dale Johannesen <dalej@apple.com> name change requested by review of previous patch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37289 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
81da02b553b86868637f27b89c6e919c31ed5b51 22-May-2007 Dale Johannesen <dalej@apple.com> Make tail merging the default, except on powerPC. There was no prior art
for a target-dependent default with a command-line override; this way
should be generally usable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37285 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
c8d288f8fa9e46199a29e1954550c980f184bd1c 31-Mar-2007 Chris Lattner <sabre@nondot.org> move a bunch of code out of the sdisel pass into its own opt pass "codegenprepare".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35529 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
31442f9dc5512b6a29cdb332b12ae09a1c9e8176 31-Mar-2007 Chris Lattner <sabre@nondot.org> Add a -print-lsr-output option to LLC, to print the output of the LSR pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35522 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
0f54dcbf07c69e41ecaa6b4fbf0d94956d8e9ff5 06-Mar-2007 Devang Patel <dpatel@apple.com> Now LoopStrengthReduce is a LoopPass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34984 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
a4e7cd947e378aa3ffe633be227138d8f859c9e3 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Use exception flag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34496 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
04523eab6bbc5d55a6e3f3296ddd583c8ad5ebb1 08-Feb-2007 Bill Wendling <isanbard@gmail.com> Split the addPassesToEmitFile method up into two. This is so that we can
do some common stuff, then on our own add an object file writer (by calling
a concrete function), and then do some finishing stuff, if need be.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34032 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
bcd2498f4f1682dbdc41452add5b9bc72cbd6b3f 07-Dec-2006 Bill Wendling <isanbard@gmail.com> Removed more <iostream> includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32321 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
e01eaa09c6be30497fde9bc4a8776752f27f74b6 16-Nov-2006 Chris Lattner <sabre@nondot.org> enable the branch folding pass for the JIT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31777 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
9d4209fb82cab74bae76511e3f21ef1c24ec948a 07-Nov-2006 Jim Laskey <jlaskey@mac.com> 1. Add a pass to fold debug label instructions so a debug info client can detect
empty ranges.

2. Reorg how MachineDebugInfo maintains changes to debug labels.

3. Have dwarf writer use debug label info to simplify scopes and source line
coorespondence.

4. Revert the merging of compile units until I can get the bugs ironed out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31507 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
62d07d6acef9f5fd807b98a509d164bd3d6f0187 24-Oct-2006 Jim Laskey <jlaskey@mac.com> Don't do dead block elimination in fast mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31155 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
4a84ad7a2bfd1795357776164e3bf80a2600d924 13-Oct-2006 Chris Lattner <sabre@nondot.org> add the branch folding pass as a late cleanup pass for all targets. For now
it just deletes empty MBB's. Soon it will do more :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30941 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
2a0013f59fb3b23010c0509fab8bf509eb30fb36 04-Sep-2006 Duraid Madina <duraid@octopus.com.au> add setJumpBufSize() and setJumpBufAlignment() to target-lowering.
Call these from your backend to enjoy setjmp/longjmp goodness, see
lib/Target/IA64/IA64ISelLowering.cpp for an example


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30095 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp
47877050e7ea02c3514497aba54eef1d4cee8452 04-Sep-2006 Chris Lattner <sabre@nondot.org> new file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30082 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LLVMTargetMachine.cpp