summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Preserve line number information while threading jumps.Devang Patel2011-05-041-2/+5
| | | | llvm-svn: 130880
* 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
* Preserve line number info.Devang Patel2011-05-041-1/+4
| | | | llvm-svn: 130876
* preserve line number info.Devang Patel2011-05-041-2/+3
| | | | llvm-svn: 130869
* 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
* Implement SystemZRegisterInfo::getMatchingSuperRegClass to enable ↵Jakob Stoklund Olesen2011-05-042-0/+18
| | | | | | cross-class joins. llvm-svn: 130857
* Do not emit location expression size twice.Devang Patel2011-05-041-12/+0
| | | | llvm-svn: 130854
* Fix cmake build.Rafael Espindola2011-05-041-0/+1
| | | | llvm-svn: 130850
* Prevent instructions using $gp from being placed between a jalr and the ↵Akira Hatanaka2011-05-045-11/+89
| | | | | | instruction that restores the clobbered $gp. llvm-svn: 130847
* Producing a DW_FORM_addr for DW_AT_stmt_list is probably correct, butRafael Espindola2011-05-043-4/+4
| | | | | | | | | | | 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
* Add variations on: max(x,y) >= min(x,z) folds to true. This isn't that common,Duncan Sands2011-05-041-2/+46
| | | | | | | | but according to my super-optimizer there are only two missed simplifications of -instsimplify kind when compiling bzip2, and this is one of them. It amuses me to have bzip2 be perfectly optimized as far as instsimplify goes! llvm-svn: 130840
* Emit gcov data files to the directory specified in the metadata produced by theNick Lewycky2011-05-041-4/+23
| | | | | | frontend, if applicable. llvm-svn: 130835
* indvars: Added DisableIVRewrite and WidenIVs.Andrew Trick2011-05-042-9/+130
| | | | | | | | This adds functionality to remove size/zero extension during indvars without generating a canonical IV and rewriting all IV users. It's disabled by default so should have no effect on codegen. Work in progress. llvm-svn: 130829
* Implement MSP430RegisterInfo::getMatchingSuperRegClass to enable cross-classJakob Stoklund Olesen2011-05-041-0/+7
| | | | | | coalescing. llvm-svn: 130814
* Mark ultra-super-registers QQQQ as call-clobbered instead of the D ↵Jakob Stoklund Olesen2011-05-033-32/+11
| | | | | | | | | | | | | | | sub-registers. LiveVariables doesn't understand that clobbering D0 and D1 completely overwrites Q0, so if Q0 is live-in to a function, its live range will extend beyond a function call that only clobbers D0 and D1. This shows up in the ARM/2009-11-01-NeonMoves test case. LiveVariables should probably implement the much stricter rules for physreg liveness that RAFast imposes - a physreg is killed by the first use of any alias. llvm-svn: 130801
* indvars: Added canExpandBackEdgeTakenCount.Andrew Trick2011-05-031-32/+55
| | | | | | | | | Only create a canonical IV for backedge taken count if it will actually be used by LinearFunctionTestReplace. And some related cleanup, preparing to reduce dependence on canonical IVs. No significant effect on x86 or arm in the test-suite. llvm-svn: 130799
* 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
* MCDwarf: Don't save Twine to local variable, this is almost never safe to doDaniel Dunbar2011-05-031-2/+2
| | | | | | | (and should thus never be done). - Should fix a crash on win32. llvm-svn: 130793
* Replace the "movnt" intrinsics with a native store + nontemporal metadata bit.Bill Wendling2011-05-032-38/+44
| | | | | | <rdar://problem/8460511> llvm-svn: 130791
* 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
* Implement some basic simplifications involving min/max, for exampleDuncan Sands2011-05-031-0/+118
| | | | | | | | max(a,b) >= a -> true. According to my super-optimizer, these are by far the most common simplifications (of the -instsimplify kind) that occur in the testsuite and aren't caught by -std-compile-opts. llvm-svn: 130780
* Fix function MipsRegisterInfo::getRegisterNumbering.Akira Hatanaka2011-05-031-10/+10
| | | | llvm-svn: 130774
* Temporarily disable use of divmod compiler-rt functions for iOS.Bob Wilson2011-05-031-6/+0
| | | | llvm-svn: 130766
* Fold ARM coprocessor intrinsics patterns into the instructions defs wheneverBruno Cardoso Lopes2011-05-033-96/+73
| | | | | | it's possible. llvm-svn: 130764
* Add a few ARM coprocessor intrinsics. Testcases includedBruno Cardoso Lopes2011-05-034-0/+71
| | | | llvm-svn: 130763
* 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
* Use llvm.dbg.cu named metadata to collect compile units.Devang Patel2011-05-031-0/+4
| | | | llvm-svn: 130756
* Remove unused variables caught by GCC's -Wunused-but-set-variable.Benjamin Kramer2011-05-033-5/+0
| | | | llvm-svn: 130755
* Add pentium{3,4}m cpus. Patch by Alexander Best!Michael J. Spencer2011-05-031-0/+2
| | | | llvm-svn: 130749
* xmm0 is an implicit parameter in this and so shouldn't be in theEric Christopher2011-05-031-2/+2
| | | | | | | | string template. Fixes rdar://8493866 llvm-svn: 130747
* Add an unfolded offset field to LSR's Formula record. This is used toDan Gohman2011-05-033-9/+76
| | | | | | | | model constants which can be added to base registers via add-immediate instructions which don't require an additional register to materialize the immediate. llvm-svn: 130743
* 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
* Scanning entire basic block may be too expensive in terms of compile time. ↵Devang Patel2011-05-021-6/+4
| | | | | | Instead, just use whatever location info first non-phi instruction has. llvm-svn: 130729
* Handle <def,undef> in the second loop as well.Jakob Stoklund Olesen2011-05-021-1/+3
| | | | llvm-svn: 130718
* Apparently the check for direct calls is unnecessary.Eric Christopher2011-05-021-2/+2
| | | | llvm-svn: 130716
* 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
* Fix PR9579: when simplifying a compare to "true" or "false", and it wasDuncan Sands2011-05-021-18/+22
| | | | | | a vector compare, generate a vector result rather than i1 (and crashing). llvm-svn: 130706
* Remove unused variable.Duncan Sands2011-05-021-1/+1
| | | | llvm-svn: 130705
* 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
* Move some rem transforms out of instcombine and into instsimplify.Duncan Sands2011-05-022-42/+136
| | | | | | | This automagically provides a transform noticed by my super-optimizer as occurring quite often: "rem x, (select cond, x, 1)" -> 0. llvm-svn: 130694
* Add 130690 back.Rafael Espindola2011-05-021-1/+1
| | | | llvm-svn: 130693
* Only produce the eh_frame section if we have at least one personality function.Rafael Espindola2011-05-021-7/+9
| | | | llvm-svn: 130692
* Revert while I debug the tests that use march but not mtriple.Rafael Espindola2011-05-021-1/+1
| | | | llvm-svn: 130691
* Move ppc OS X to cfi too. I am building it on an old ppc mini, but it will ↵Rafael Espindola2011-05-021-1/+1
| | | | | | take some time. llvm-svn: 130690
* 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
OpenPOWER on IntegriCloud