summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LLVMTargetMachine.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* CodeGen still defaults to non-verbose asm, but llc now overrides it and ↵Evan Cheng2009-03-251-1/+1
| | | | | | default to verbose. llvm-svn: 67668
* Re-enable machine sinking pass now that the coalescer bugs and the ↵Evan Cheng2009-02-091-8/+2
| | | | | | AnalyzeBrnach bug are fixed. llvm-svn: 64126
* Revert r63999. It was breaking self-hosting builds.Bill Wendling2009-02-081-2/+8
| | | | llvm-svn: 64062
* Enable machine sinking pass in non-fast mode.Evan Cheng2009-02-071-8/+2
| | | | llvm-svn: 63999
* Turn on machine LICM in non-fast mode.Evan Cheng2009-02-051-5/+1
| | | | llvm-svn: 63855
* Move post-RA scheduling before branch folding for now, because branchDan Gohman2008-12-181-7/+7
| | | | | | | folding's tail merging doesn't currently preserve liveness information which post-RA scheduling requires. llvm-svn: 61183
* Run post-RA scheduling after branch folding, as it tends toDan Gohman2008-11-241-4/+7
| | | | | | obscure tail-merging opportunities. llvm-svn: 59967
* Add another machine-code printing pass when post-pass scheduling is run.Dan Gohman2008-11-201-1/+5
| | | | llvm-svn: 59746
* Implement stack protectors as function attributes: "ssp" and "sspreq".Bill Wendling2008-11-131-15/+1
| | | | llvm-svn: 59202
* Update in response to feedback from Chris:Bill Wendling2008-11-041-4/+13
| | | | | | | | | | | | | | | | | - 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. llvm-svn: 58723
* Initial checkin for stack protectors. Here's what it does:Bill Wendling2008-11-041-0/+7
| | | | | | | | | | | | | | | | * 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. llvm-svn: 58673
* Move the code that adds the DeadMachineInstructionElimPass fromDan Gohman2008-10-251-4/+0
| | | | | | | | | | | | 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. llvm-svn: 58144
* Move Print*Pass to use raw_ostream.Daniel Dunbar2008-10-221-2/+2
| | | | llvm-svn: 57946
* Privatize PrintModulePass and PrintFunctionPass and addDaniel Dunbar2008-10-211-3/+4
| | | | | | | createPrintModulePass and createPrintFunctionPass. - So clients who compile w/o RTTI can use them. llvm-svn: 57933
* Remove -disable-fast-isel. Use cl::boolOrDefault with -fast-iselDan Gohman2008-10-071-8/+3
| | | | | | | | | | 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. llvm-svn: 57270
* Remove OptimizeForSize global. Use function attribute optsize.Devang Patel2008-10-011-1/+1
| | | | llvm-svn: 56937
* Enable FastISel by default (on x86 and x86-64) with the -fast option.Dan Gohman2008-10-011-4/+16
| | | | llvm-svn: 56930
* Enable DeadMachineInstructionElim when Fast-ISel is enabled.Dan Gohman2008-09-251-0/+13
| | | | llvm-svn: 56604
* Refactor the code that adds standard LLVM codegen passes intoDan Gohman2008-09-251-109/+44
| | | | | | | a separate function, eliminating duplication between the add-passes-for-file and add-passes-for-machine-code code. llvm-svn: 56599
* Use raw_ostream throughout the AsmPrinter.Owen Anderson2008-08-211-1/+2
| | | | llvm-svn: 55092
* Rename some GC classes so that their roll will hopefully be clearer.Gordon Henriksen2008-08-171-4/+4
| | | | | | | | | | | | | | | | | | 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. llvm-svn: 54899
* Factor GC metadata table assembly generation out of Collector in preparation ↵Gordon Henriksen2008-08-171-1/+1
| | | | | | for splitting AsmPrinter into its own library. llvm-svn: 54881
* Don't run stack slot coloring if -fast.Evan Cheng2008-06-301-2/+4
| | | | llvm-svn: 52933
* Enable stack coloring by default.Evan Cheng2008-06-061-8/+2
| | | | llvm-svn: 52057
* Oops. Should not be enabled by default.Evan Cheng2008-06-041-1/+1
| | | | llvm-svn: 51953
* Add a stack slot coloring pass. Not yet enabled.Evan Cheng2008-06-041-21/+37
| | | | llvm-svn: 51934
* Do not run loop-aligner at -fast (e.g. -O0).Evan Cheng2008-06-031-1/+1
| | | | llvm-svn: 51898
* Fix indentation.Evan Cheng2008-05-301-1/+1
| | | | llvm-svn: 51793
* Unbreak JITAnton Korobeynikov2008-04-231-0/+4
| | | | llvm-svn: 50173
* Add facility for pre-RA passesAnton Korobeynikov2008-04-231-0/+4
| | | | llvm-svn: 50165
* Recommitting EH patch; this should answer most of theDale Johannesen2008-04-021-2/+3
| | | | | | | | | | | | | | | 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. llvm-svn: 49064
* Revert 49006 for the moment.Dale Johannesen2008-04-011-2/+4
| | | | llvm-svn: 49046
* Emit exception handling info for functions which areDale Johannesen2008-03-311-4/+2
| | | | | | | | | | | 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. llvm-svn: 49006
* Avoid outputing spaces at the ends of lines.Dan Gohman2008-03-251-4/+4
| | | | llvm-svn: 48797
* Do not align loops if optimizing for size.Devang Patel2008-03-251-1/+1
| | | | llvm-svn: 48794
* Use PassManagerBase instead of FunctionPassManager for functionsDan Gohman2008-03-111-3/+3
| | | | | | | | 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. llvm-svn: 48256
* Added option -align-loops=<true/false> to disable loop aligner pass.Evan Cheng2008-02-281-0/+6
| | | | llvm-svn: 47736
* Enable exception handling int JITNicolas Geoffray2008-02-131-2/+2
| | | | llvm-svn: 47079
* don't create the post-ra scheduler unless it is enabled.Chris Lattner2008-01-141-1/+7
| | | | llvm-svn: 45972
* Ammending r45669 with a missing file.Gordon Henriksen2008-01-071-4/+23
| | | | llvm-svn: 45671
* allow sinking to be enabled for the jitChris Lattner2008-01-051-0/+3
| | | | llvm-svn: 45624
* Move option to enable machine LICM into LLVMTargetMachine.cpp.Bill Wendling2008-01-041-3/+8
| | | | llvm-svn: 45572
* Add a really quick hack at a machine code sinking pass, enabled with ↵Chris Lattner2008-01-041-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --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. llvm-svn: 45570
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* Initial commit of the machine code LICM pass. It successfully hoists this:Bill Wendling2007-12-071-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | _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... llvm-svn: 44687
* Move subreg lowering pass to be right after regalloc, per feedback.Christopher Lamb2007-07-271-4/+10
| | | | llvm-svn: 40548
* Add a MachineFunction pass, which runs post register allocation, that turns ↵Christopher Lamb2007-07-261-0/+4
| | | | | | subreg insert/extract instruction into register copies. This ensures correct code gen if the coalescer isn't able to remove all subreg instructions. llvm-svn: 40521
* Added -print-emitted-asm to print out JIT generated asm to cerr.Evan Cheng2007-07-201-2/+4
| | | | llvm-svn: 40123
* Modify previous patch per review comments.Dale Johannesen2007-07-131-2/+4
| | | | llvm-svn: 39817
* Skeleton of post-RA scheduler; doesn't do anything yet.Dale Johannesen2007-07-131-0/+6
| | | | | | | Change name of -sched option and DEBUG_TYPE to pre-RA-sched; adjust testcases. llvm-svn: 39816
OpenPOWER on IntegriCloud