summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* revert bill's patches in an attempt to fix the buildbot.Chris Lattner2010-07-154-27/+22
| | | | llvm-svn: 108419
* Fix headers.Bill Wendling2010-07-152-1/+1
| | | | llvm-svn: 108413
* Use std::vector instead of a hard-coded array. The length of that array couldBill Wendling2010-07-152-17/+20
| | | | | | get *very* large, but we only need it to be the size of the number of pregs. llvm-svn: 108412
* Use std::vector instead of a hard-coded array. The length of that array couldBill Wendling2010-07-152-6/+8
| | | | | | get *very* large, but we only need it to be the size of thenumber of pregs. llvm-svn: 108411
* a more graceful fix for test/Other/inline-asm-newline-terminator.ll,Chris Lattner2010-07-152-15/+1
| | | | | | follow on to r103765 llvm-svn: 108390
* 80-col.Eric Christopher2010-07-141-2/+3
| | | | llvm-svn: 108381
* Make the order in which variables are described in debug informationDan Gohman2010-07-141-0/+23
| | | | | | | | independent of the order that isel happens to visit the dbg_declare intrinsics. This fixes a bug in which the formal arguments were being printed in reverse order, now that fast isel is going bottom up. llvm-svn: 108369
* Properly restore DebugLoc after leaving the local constant area.Dan Gohman2010-07-141-1/+2
| | | | llvm-svn: 108364
* Delete fast-isel's trivial load optimization; it breaks debugging becauseDan Gohman2010-07-141-31/+0
| | | | | | it can look past points where a debugger might modify user variables. llvm-svn: 108336
* Teach ProcessImplicitDefs to transform more COPY instructions into ↵Evan Cheng2010-07-142-20/+43
| | | | | | IMPLICIT_DEF (and subsequently eliminate them). This allows machine LICM to hoist IMPLICIT_DEF's. PR7620. llvm-svn: 108304
* Don't propagate debug locations to instructions for materializingDan Gohman2010-07-141-5/+8
| | | | | | | constants, since they may not be emited near the other instructions which get the same line, and this confuses debug info. llvm-svn: 108302
* Print VNInfo flags.Jakob Stoklund Olesen2010-07-131-0/+4
| | | | llvm-svn: 108277
* In inline asm treat indirect 'X' constraint as 'm'.Dale Johannesen2010-07-131-3/+5
| | | | | | | This may not be right in all cases, but it's better than asserting which it was doing before. PR 7528. llvm-svn: 108268
* Add an assertion to make PR7542 fail consistently.Jakob Stoklund Olesen2010-07-131-0/+1
| | | | | | | | | | LiveInterval::overlapsFrom dereferences end() if it is called on an empty interval. It would be reasonable to just return false - an empty interval doesn't overlap anything, but I want to know who is doing it first. llvm-svn: 108264
* Fix LiveInterval::overlaps so it doesn't claim touching intervals overlap.Jakob Stoklund Olesen2010-07-131-10/+2
| | | | | | Also, one binary search is enough. llvm-svn: 108261
OpenPOWER on IntegriCloud