summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Implement loop splitting analysis.Jakob Stoklund Olesen2010-07-202-19/+183
| | | | | | | Determine which loop exit blocks need a 'pre-exit' block inserted. Recognize when this would be impossible. llvm-svn: 108941
* Fix test for switch statements and increaseDale Johannesen2010-07-201-2/+3
| | | | | | threshold a bit per experimentation. llvm-svn: 108935
* Appease the colonials.Jakob Stoklund Olesen2010-07-202-4/+4
| | | | llvm-svn: 108845
* Beginning SplitKit - utility classes for live range splitting.Jakob Stoklund Olesen2010-07-204-1/+261
| | | | | | | | | This is a work in progress. So far we have some basic loop analysis to help determine where it is useful to split a live range around a loop. The actual loop splitting code from Splitter.cpp is also going to move in here. llvm-svn: 108842
* Updated css classes for the pressure table legend.Lang Hames2010-07-201-3/+3
| | | | llvm-svn: 108839
* Oops - I tables render poorly in Chrome without this explicit height ↵Lang Hames2010-07-201-1/+1
| | | | | | specification. llvm-svn: 108824
* Use run-length encoding to represent identical adjacent cells in the pressureLang Hames2010-07-202-34/+104
| | | | | | | | and interval table. Reduces output HTML file sizes by ~80% in my test cases. Also fix access of private member type by << operator. llvm-svn: 108823
* Added support for turning HTML indentation on and off (indentation off by ↵Lang Hames2010-07-202-86/+123
| | | | | | | | default). Reduces output file size ~20% on my test cases. llvm-svn: 108822
* Switched to rendering after allocation (but before rewriting) in PBQP.Lang Hames2010-07-203-38/+77
| | | | | | | Updated renderer to use allocation information from VirtRegMap (if available) to render spilled intervals differently. llvm-svn: 108815
* Don't hoist things out of a large switch inside aDale Johannesen2010-07-201-2/+6
| | | | | | | | | | loop, for the reasons in the comments. This is a major win on 253.perlbmk on ARM Darwin. I expect it to be a good heuristic in general, but it's possible some things will regress; I'll be watching. 7940152. llvm-svn: 108792
* Correct line info for declarations/definitions. Radar 8063111.Stuart Hastings2010-07-191-11/+4
| | | | llvm-svn: 108784
* Fix memory leak reported by valgrind. Devang Patel2010-07-191-23/+31
| | | | | | Do not visit operands of old instruction. Visit all operands of new instruction. llvm-svn: 108767
* After a custom inserter, in a block which has constant instructions,Dan Gohman2010-07-191-0/+1
| | | | | | | update the current basic block in addition to the current insert position, so that they remain consistent. This fixes rdar://8204072. llvm-svn: 108765
* ARM has to provide its own TargetLowering::findRepresentativeClass because ↵Evan Cheng2010-07-191-6/+7
| | | | | | its scalar floating point registers alias its vector registers. llvm-svn: 108761
* Teach computeRegisterProperties() to compute "representative" register class ↵Evan Cheng2010-07-191-0/+52
| | | | | | | | for legal value types. A "representative" register class is the largest legal super-reg register class for a value type. e.g. On i386, GR32 is the rep register class for i8 / i16 / i32; on x86_64 it would be GR64. This property will be used by the register pressure tracking instruction scheduler. llvm-svn: 108735
* Spillers may alter MachineLoopInfo when breaking critical edges, so make itJakob Stoklund Olesen2010-07-194-12/+15
| | | | | | non-const. llvm-svn: 108734
* Fix PR 7662.Devang Patel2010-07-191-0/+1
| | | | | | Do not try to insert local variable info to a DIE used for function declaration. llvm-svn: 108731
* Update CMake build.Benjamin Kramer2010-07-191-0/+1
| | | | llvm-svn: 108700
* Render MachineFunctions to HTML pages, with options to render registerLang Hames2010-07-193-0/+1130
| | | | | | | | pressure estimates and liveness alongside. Still experimental. llvm-svn: 108698
* Remove r108639 now that it is handled by InstCombine instead.Owen Anderson2010-07-191-13/+0
| | | | llvm-svn: 108688
* Target: Give the TargetAsmParser access to the TargetMachine.Daniel Dunbar2010-07-191-1/+1
| | | | | | - Unfortunate, but necessary for now to handle subtarget instruction matching. Eventually we should factor out the lower level target machine information so we don't need to do this. llvm-svn: 108664
* MC: Move several clients to using AsmParser constructor function.Daniel Dunbar2010-07-181-6/+7
| | | | llvm-svn: 108645
* Fix struct/class mismatchDouglas Gregor2010-07-181-1/+1
| | | | llvm-svn: 108642
* Add a DAGCombine xform to fold away redundant float->double->float ↵Owen Anderson2010-07-181-0/+13
| | | | | | | | | | conversions around sqrt instructions. I am assured by people more knowledgeable than me that there are no rounding issues in eliminating this. This fixed <rdar://problem/8197504>. llvm-svn: 108639
* Added -pbqp-pre-coalescing flag to PBQP. If enabled this will cause PBQP to ↵Lang Hames2010-07-181-0/+8
| | | | | | | | | | require LoopSplitter be run prior to register allocation. Entirely for testing purposes at the moment. llvm-svn: 108634
* Use isPrologLabel() instead of checking the opcode directly.Bill Wendling2010-07-171-1/+1
| | | | llvm-svn: 108628
* update CMakeLists.txtZhongxing Xu2010-07-171-0/+1
| | | | llvm-svn: 108620
* Removed unused inRange variable.Lang Hames2010-07-171-2/+0
| | | | llvm-svn: 108618
* LoopSplitter - intended to split live intervals over loop boundaries.Lang Hames2010-07-172-0/+918
| | | | | | | | Still very much under development. Comments and fixes will be forthcoming. (This commit includes some small tweaks to LiveIntervals & LoopInfo to support the splitter) llvm-svn: 108615
* Iterating over sets of pointers in a heuristic was a bad idea. SwitchingLang Hames2010-07-172-8/+12
| | | | | | | | | | | any command line paramater changed the register allocation produced by PBQP. Turns out variety is not the spice of life. Fixed some comparators, added others. All good now. llvm-svn: 108613
* Propagate alloca alignment information via variable size object frameEric Christopher2010-07-171-1/+1
| | | | | | | | information. No functional change yet. llvm-svn: 108583
* Consider this function:Bill Wendling2010-07-161-2/+12
| | | | | | | | | | | | | | | | | | | | | | void foo() { __builtin_unreachable(); } It will output the following on Darwin X86: _func1: Leh_func_begin0: pushq %rbp Ltmp0: movq %rsp, %rbp Ltmp1: Leh_func_end0: This prolog adds a new Call Frame Information (CFI) row to the FDE with an address that is not within the address range of the code it describes -- part is equal to the end of the function -- and therefore results in an invalid EH frame. If we emit a nop in this situation, then the CFI row is now within the address range. llvm-svn: 108568
* Rename DBG_LABEL PROLOG_LABEL, because it's only used during prolog emission andBill Wendling2010-07-161-1/+1
| | | | | | thus is a much more meaningful name. llvm-svn: 108563
* Remove remaining calls to TII::isMoveInstr.Jakob Stoklund Olesen2010-07-162-38/+1
| | | | llvm-svn: 108556
* Revert r108369, sorting llvm.dbg.declare information by source position,Dan Gohman2010-07-164-33/+34
| | | | | | | | | | | | | since it doesn't work for front-ends which don't emit column information (which includes llvm-gcc in its present configuration), and doesn't work for clang for K&R style variables where the variables are declared in a different order from the parameter list. Instead, make a separate pass through the instructions to collect the llvm.dbg.declare instructions in order. This ensures that the debug information for variables is emitted in this order. llvm-svn: 108538
* Get rid of a bunch of duplicated ELF enum values.Eli Friedman2010-07-164-126/+36
| | | | llvm-svn: 108520
* Remove many calls to TII::isMoveInstr. Targets should be producing COPY anyway.Jakob Stoklund Olesen2010-07-1613-227/+72
| | | | | | TII::isMoveInstr is going tobe completely removed. llvm-svn: 108507
* Use the source-order scheduler instead of the "fast" scheduler at -O0,Dan Gohman2010-07-161-1/+1
| | | | | | | because it's more likely to keep debug line information in its original order. llvm-svn: 108496
* The SelectionDAGBuilder's handling of debug info, on rareDale Johannesen2010-07-162-12/+60
| | | | | | | | | | occasions, caused code to be generated in a different order. All cases I've seen involved float softening in the type legalizer, and this could be perhaps be fixed there, but it's better not to generate things differently in the first place. 7797940 (6/29/2010..7/15/2010). llvm-svn: 108484
* Revert. This isn't the correct way to go.Bill Wendling2010-07-152-15/+1
| | | | llvm-svn: 108478
* Handle code gen for the unreachable instruction if it's the only instruction inBill Wendling2010-07-152-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the function. We'll just turn it into a "trap" instruction instead. The problem with not handling this is that it might generate a prologue without the equivalent epilogue to go with it: $ cat t.ll define void @foo() { entry: unreachable } $ llc -o - t.ll -relocation-model=pic -disable-fp-elim -unwind-tables .section __TEXT,__text,regular,pure_instructions .globl _foo .align 4, 0x90 _foo: ## @foo Leh_func_begin0: ## BB#0: ## %entry pushq %rbp Ltmp0: movq %rsp, %rbp Ltmp1: Leh_func_end0: ... The unwind tables then have bad data in them causing all sorts of problems. Fixes <rdar://problem/8096481>. llvm-svn: 108473
* Split -enable-finite-only-fp-math to two options:Evan Cheng2010-07-152-2/+2
| | | | | | -enable-no-nans-fp-math and -enable-no-infs-fp-math. All of the current codegen fp math optimizations only care whether the fp arithmetics arguments and results can never be NaN. llvm-svn: 108465
* fix the definitions of ConstTextCoalSection/ConstDataCoalSectionChris Lattner2010-07-151-2/+3
| | | | | | | | | | | to keep "Text" in sync with the "pure instructions" section attribute. Lack of this attribute was preventing the assembler from emitting multibyte noops instructions for templates (and inlines, and other coalesced stuff) and was causing the assembler to mismatch .o files. This fixes rdar://8018335 llvm-svn: 108461
* Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.Bill Wendling2010-07-151-3/+3
| | | | llvm-svn: 108452
* Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.Bill Wendling2010-07-151-2/+3
| | | | llvm-svn: 108450
* Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister. This timeBill Wendling2010-07-153-18/+24
| | | | | | make sure to allocate enough space in the std::vector. llvm-svn: 108449
* Reserve a goodly amount of room for the vectors.Bill Wendling2010-07-151-2/+4
| | | | llvm-svn: 108448
* Fix crash reported in PR7653.Devang Patel2010-07-151-1/+1
| | | | llvm-svn: 108441
* Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.Bill Wendling2010-07-152-14/+14
| | | | llvm-svn: 108440
* Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.Bill Wendling2010-07-151-1/+1
| | | | llvm-svn: 108438
OpenPOWER on IntegriCloud