summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Nothing else uses this label.Rafael Espindola2011-05-061-3/+0
| | | | llvm-svn: 130989
* Yet more dead code.Rafael Espindola2011-05-061-13/+0
| | | | llvm-svn: 130988
* Update comments.Rafael Espindola2011-05-061-2/+2
| | | | llvm-svn: 130987
* More dead code elimination.Rafael Espindola2011-05-061-71/+0
| | | | llvm-svn: 130985
* Dead code elimination.Rafael Espindola2011-05-063-111/+4
| | | | llvm-svn: 130984
* Re-revert r130877; it's apparently causing a regression on 197.parser,Eli Friedman2011-05-061-50/+27
| | | | | | possibly related to cbnz formation. llvm-svn: 130977
* Remove DwarfTableException.Rafael Espindola2011-05-054-413/+1
| | | | llvm-svn: 130964
* Remove the DwarfTable enum.Rafael Espindola2011-05-052-4/+0
| | | | llvm-svn: 130959
* Remove little used statistical counter.Devang Patel2011-05-051-29/+0
| | | | llvm-svn: 130955
* Implement a really simple DwarfSjLjException.Rafael Espindola2011-05-054-0/+68
| | | | llvm-svn: 130947
* List all exception types in a switch.Rafael Espindola2011-05-051-14/+15
| | | | llvm-svn: 130944
* ARM post RA scheduler compile time fix.Andrew Trick2011-05-051-0/+12
| | | | | | | | | | | | | | BuildSchedGraph was quadratic in the number of calls in the basic block. After this fix, it keeps only a single call at the top of the DefList so compile time doesn't blow up on large blocks. This reduces postRA sched time on an external test case from 81s to 0.3s. Although r130800 (reduced ARM register alias defs) also partially fixes the issue by reducing the constant overhead of checking call interference by an order of magnitude. Fixes <rdar://problem/7662664> very poor compile time with post RA scheduling. llvm-svn: 130943
* whitespaceAndrew Trick2011-05-051-16/+16
| | | | llvm-svn: 130942
* Allow FastISel of three-register-operand instructions.Owen Anderson2011-05-051-0/+24
| | | | llvm-svn: 130934
* If debug info for inlined function is missing then handle it gracefully.Devang Patel2011-05-051-3/+5
| | | | llvm-svn: 130933
* Add some statistics to the splitting and spilling frameworks.Jakob Stoklund Olesen2011-05-053-5/+44
| | | | llvm-svn: 130931
* Avoid extra vreg copies for arguments passed in registers. Specifically, ↵Eli Friedman2011-05-052-38/+44
| | | | | | this can make MachineCSE more effective in some cases (especially in small functions). PR8361 / part of rdar://problem/8259436 . llvm-svn: 130928
* Small syntax cleanup; we don't need to #define constants in C++. No ↵Eli Friedman2011-05-051-3/+3
| | | | | | functionality change intended. llvm-svn: 130926
* Minor correction to r130877; fixes PR9846 and hopefully the buildbot failures.Eli Friedman2011-05-051-1/+2
| | | | llvm-svn: 130925
* Remove a flag that would set the ".eh" symbol as .globl. MachO was the only oneBill Wendling2011-05-052-10/+0
| | | | | | | | who used this flag, and it now emits CFI and doesn't emit this anymore. All other targets left this flag "false". <rdar://problem/8486371> llvm-svn: 130918
* Disable physical register coalescing by default.Jakob Stoklund Olesen2011-05-041-1/+1
| | | | | | | | | | | | Joining physregs is inherently dangerous because it uses a heuristic to avoid creating invalid code. Linear scan had an emergency spilling mechanism to deal with those rare cases. The new greedy allocator does not. The greedy register allocator is much better at taking hints, so this has almost no impact on code size and quality. The few cases where it matters show up as unit tests that now have -join-physregs enabled explicitly. llvm-svn: 130896
* SjLj EH could produce a machine basic block that legitimately has more than oneBill Wendling2011-05-041-1/+9
| | | | | | | | | | | | | landing pad as its successor. SjLj exception handling jumps to the correct landing pad via a switch statement that's generated right before code-gen. Loosen the constraint in the machine instruction verifier to allow for this. Note, this isn't the most rigorous check since we cannot determine where that switch statement came from. But it's marginally better than turning this check off when SjLj exceptions are used. <rdar://problem/9187612> llvm-svn: 130881
* Re-commit r130862 with a minor change to avoid an iterator running off the ↵Eli Friedman2011-05-041-27/+49
| | | | | | | | | | edge in some cases. Original message: Teach MachineCSE how to do simple cross-block CSE involving physregs. This allows, for example, eliminating duplicate cmpl's on x86. Part of rdar://problem/8259436 . llvm-svn: 130877
* Back out r130862; it appears to be breaking bootstrap.Eli Friedman2011-05-041-43/+27
| | | | llvm-svn: 130867
* Teach MachineCSE how to do simple cross-block CSE involving physregs. This ↵Eli Friedman2011-05-041-27/+43
| | | | | | allows, for example, eliminating duplicate cmpl's on x86. Part of rdar://problem/8259436 . llvm-svn: 130862
* Producing a DW_FORM_addr for DW_AT_stmt_list is probably correct, butRafael Espindola2011-05-041-2/+2
| | | | | | | | | | | it is both inefficient and unexpected by dwarfdump. Change to a DW_FORM_data4. While in here, change the predicate name to reflect that the position is not really absolute (it is an offset), just that the linker needs a relocation. llvm-svn: 130846
* Rename -disable-physical-join to -join-physregs and invert it.Jakob Stoklund Olesen2011-05-041-4/+4
| | | | | | Physreg joining is still on by default, but I will turn it off shortly. llvm-svn: 130844
* Tighten up check for empty (i.e. no meaningful debug info) module. This ↵Devang Patel2011-05-041-15/+17
| | | | | | fixes dwarf-die2.c test case from gcc test suite. llvm-svn: 130842
* Even if the subprogram is going to use AT_specification, emit ↵Devang Patel2011-05-031-5/+5
| | | | | | DW_AT_MIPS_linkage_name. This helps gdb and fixes var-path-expr.exp regression reported by gdb testsuite. llvm-svn: 130794
* Gracefully handle invalid live ranges. Fix PR9831.Jakob Stoklund Olesen2011-05-033-0/+23
| | | | | | | | | | | | | | | | Register coalescing can sometimes create live ranges that end in the middle of a basic block without any killing instruction. When SplitKit detects this, it will repair the live range by shrinking it to its uses. Live range splitting also needs to know about this. When the range shrinks so much that it becomes allocatable, live range splitting fails because it can't find a good split point. It is paranoid about making progress, so an allocatable range is considered an error. The coalescer should really not be creating these bad live ranges. They appear when coalescing dead copies. llvm-svn: 130787
* If the front end has emitted llvm.dbg.cu and other debug info anchors (clang ↵Devang Patel2011-05-031-27/+49
| | | | | | does it now) then use them directly. This saves one scan of entire module, to collect debug info, which in turns saves few machine cycles at compile time. llvm-svn: 130759
* Other parts of the SelectionDAG framework assume that targets use their ↵Owen Anderson2011-05-021-1/+1
| | | | | | pointer type for vector indices. Make the vector unrolling code respect that. llvm-svn: 130733
* Handle <def,undef> in the second loop as well.Jakob Stoklund Olesen2011-05-021-1/+3
| | | | llvm-svn: 130718
* Use the PrintReg adaptor to correctly print live-in registers in debug output.Jakob Stoklund Olesen2011-05-021-17/+5
| | | | llvm-svn: 130715
* Only ignore <undef> use operands, keep the <def,undef> ops.Jakob Stoklund Olesen2011-05-021-1/+4
| | | | | | | | Def operands may also have an <undef> flag, but that just means that a sub-register redef doesn't actually read the super-register. For physical registers, it has no meaning. llvm-svn: 130714
* Emit debug info for global variables first.Devang Patel2011-05-021-5/+5
| | | | | | | | | | | | | This works around a limitation in gdb which is reported by following inherit.exp test failures from gdb testsuite. gdb.cp/inherit.exp: print g_vB.vB::vb gdb.cp/inherit.exp: print g_vB.vB::vx gdb.cp/inherit.exp: print g_vC.vC::vc gdb.cp/inherit.exp: print g_vC.vC::vx gdb.cp/inherit.exp: print g_vD.vB::vb ... llvm-svn: 130702
* Only produce the eh_frame section if we have at least one personality function.Rafael Espindola2011-05-021-7/+9
| | | | llvm-svn: 130692
* Minimize the slot indexes spanned by register ranges created when splitting.Jakob Stoklund Olesen2011-05-023-5/+13
| | | | | | | | | | | | | When an interfering live range ends at a dead slot index between two instructions, make sure that the inserted copy instruction gets a slot index after the dead ones. This makes it possible to avoid the interference. Ideally, there shouldn't be interference ending at a deleted instruction, but physical register coalescing can sometimes do that to sub-registers. This fixes PR9823. llvm-svn: 130687
* GCC uses a different encoding of pointers in the FDE when usingRafael Espindola2011-05-012-3/+3
| | | | | | -fno-dwarf2-cfi-asm. Implement the same behavior. llvm-svn: 130637
* When a physreg is live-in and live through a basic block, make sure its liveJakob Stoklund Olesen2011-04-301-1/+1
| | | | | | | | range covers the entire block. The live range can't be terminated at a random instruction. llvm-svn: 130619
* Avoid using stale entries form the sibling value map.Jakob Stoklund Olesen2011-04-301-5/+21
| | | | | | | This could happen when trying to use a value that had been eliminated after dead code elimination and folding loads. llvm-svn: 130597
* Use hysteresis for local live range splitting as well.Jakob Stoklund Olesen2011-04-301-4/+4
| | | | llvm-svn: 130596
* Add all the plumbing needed for MC to expand cfi to the old tables inRafael Espindola2011-04-301-0/+1
| | | | | | | the final assembly. It is the same technique used when targeting assemblers that don't support .loc. llvm-svn: 130587
* Update comment.Jakob Stoklund Olesen2011-04-301-2/+2
| | | | llvm-svn: 130582
* Use a greedy algorithm for allocating registers.Jakob Stoklund Olesen2011-04-301-3/+3
| | | | llvm-svn: 130568
* Print out the 'nontemporal' info on a store.Bill Wendling2011-04-291-0/+4
| | | | llvm-svn: 130562
* Make FastEmit_ri_ try a bit harder to succeed for supported operations; ↵Eli Friedman2011-04-291-2/+7
| | | | | | FastEmit_i can fail for non-Thumb2 ARM. Makes ARMSimplifyAddress work correctly, and reduces the number of fast-isel bailouts on non-Thumb ARM. llvm-svn: 130560
* Hoist MCLineEntry construction AsmPrinter so that anyone who derives from ↵Devang Patel2011-04-291-0/+3
| | | | | | | | AsmPrinter can have line number entries. PR 9810 llvm-svn: 130518
* The last hack for producing bit identical output with cfi on OS X.Rafael Espindola2011-04-291-0/+8
| | | | llvm-svn: 130504
* Change DwarfCFIException's member variables to track what it actuallyRafael Espindola2011-04-292-34/+38
| | | | | | emmits: .cfi_personality, .cfi_lsda and the moves. llvm-svn: 130503
OpenPOWER on IntegriCloud