summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Use CallConvLower.h and TableGen descriptions of the calling conventionsBob Wilson2009-04-176-305/+561
| | | | | | for ARM. Patch by Sandeep Patel. llvm-svn: 69371
* Use a safer iterator interface and get rid of std C++ library misuse.David Greene2009-04-171-3/+2
| | | | | | This fixes a --enable-expensive-checks problem. llvm-svn: 69353
* For general dynamic TLS access we must useRafael Espindola2009-04-173-36/+32
| | | | | | | | | leaq foo@TLSGD(%rip), %rdi as part of the instruction sequence. Using a register other than %rdi and then copying it to %rdi is not valid. llvm-svn: 69350
* Revert r69335 and r69336. They were causing build failures.Bill Wendling2009-04-171-5/+3
| | | | llvm-svn: 69347
* Don't create ConstantInts with pointer type. This fixes aDan Gohman2009-04-171-1/+1
| | | | | | | regression in 403.gcc in PIC_CODEGEN=1 and DISABLE_LTO=1 mode. llvm-svn: 69344
* Teach spiller to unfold instructions which modref spill slot when a scratchEvan Cheng2009-04-172-11/+227
| | | | | | | | | | | | | | | | | | | | register is available and when it's profitable. e.g. xorq %r12<kill>, %r13 addq %rax, -184(%rbp) addq %r13, -184(%rbp) ==> xorq %r12<kill>, %r13 movq -184(%rbp), %r12 addq %rax, %r12 addq %r13, %r12 movq %r12, -184(%rbp) Two more instructions, but fewer memory accesses. It can also open up opportunities for more optimizations. llvm-svn: 69341
* MOV8rr_NOREX is a "Move" instruction. This doesn't currentlyDan Gohman2009-04-171-0/+1
| | | | | | | matter, because this instruction isn't generated until after things that care. llvm-svn: 69336
* Don't use MOV8rr_NOREX on x86-32. It doesn't actually hurt anything atDan Gohman2009-04-171-3/+4
| | | | | | present, but it's inconsistent. llvm-svn: 69335
* Fix some failures in targets on available_externally functions,Chris Lattner2009-04-173-0/+17
| | | | | | | this fixes a crash on CodeGen/Generic/externally_available.ll on ppc hosts. Thanks to Nicholas L for pointing this out. llvm-svn: 69333
* Use TargetData::getTypeSizeInBits instead of getPrimitiveSizeInBits()Dan Gohman2009-04-161-5/+5
| | | | | | to get the correct answer for pointer types. llvm-svn: 69321
* make sure to unlock keymgr if the JIT is created and destroyed, allChris Lattner2009-04-161-5/+3
| | | | | | | | locks must be matched with unlocks. Also, use calloc to allocate the block so that it is properly zero'd. Thanks to Nick Kledzik for tracking this down. llvm-svn: 69314
* Fix for PR3944: make mem2reg O(N) instead of O(N^2) in the number of Eli Friedman2009-04-161-19/+11
| | | | | | incoming edges for a block with many predecessors. llvm-svn: 69312
* Handle a pointer type correctly in SCEVExpander::visitAddRecExpr.Dan Gohman2009-04-161-0/+2
| | | | llvm-svn: 69310
* In the list-burr's pseudo two-addr dependency heuristics, don'tDan Gohman2009-04-161-0/+10
| | | | | | | | | add dependencies on nodes with exactly one successor which is a COPY_TO_REGCLASS node. In the case that the copy is coalesced away, the dependence should be on the user of the copy, rather than the copy itself. llvm-svn: 69309
* Handle SUBREG_TO_REG instructions with the same heuristicsDan Gohman2009-04-161-5/+7
| | | | | | as INSERT_SUBREG instructions in the list-burr scheduler. llvm-svn: 69308
* Fix a bug with inttoptr/ptrtoint casts where the pointer has a differentDan Gohman2009-04-162-5/+12
| | | | | | | | size from the integer, requiring zero extension or truncation. Don't create ZExtInsts with pointer types. This fixes a regression in consumer-jpeg. llvm-svn: 69307
* Do not treat beginning of inlined scope as beginning of normal function ↵Devang Patel2009-04-162-2/+20
| | | | | | | | | | | | | | | | | | | | | scope if the location info is missing. Insetad of doing ... if (inlined_subroutine && known_location) DW_TAG_inline_subroutine else DW_TAG_subprogram do if (inlined_subroutine) { if (known_location) DW_TAG_inline_subroutine } else { DW_TAG_subprogram } llvm-svn: 69300
* Minor code simplifications. Don't attempt LSR on theoreticalDan Gohman2009-04-161-12/+6
| | | | | | | targets with pointers larger than 64 bits, due to the code not yet being APInt clean. llvm-svn: 69296
* LSR is no longer a GEP optimizer. It is now an IV expressionDan Gohman2009-04-161-2/+1
| | | | | | optimizer, which just happen to frequently involve optimizing GEPs. llvm-svn: 69295
* Fix SCEVExpander::visitSMaxExpr and SCEVExpander::visitUMaxExpr toDan Gohman2009-04-161-0/+8
| | | | | | | not create ICmpInsts with operands of different types. This fixes a regression in Applications/d/make_dparser. llvm-svn: 69294
* Teach SCEVExpander::InsertCastOfTo to avoid creating inttoptr-of-ptrtointDan Gohman2009-04-161-0/+8
| | | | | | and ptrtoint-of-inttoptr expressions. This fixes a regression in 300.twolf. llvm-svn: 69293
* Use ConstantExpr::getIntToPtr instead of SCEVExpander::InsertCastOfTo,Dan Gohman2009-04-161-3/+2
| | | | | | since the operand is always a constant. llvm-svn: 69291
* Use a SCEV expression cast instead of immediately inserting aDan Gohman2009-04-161-8/+8
| | | | | | new instruction with SCEVExpander::InsertCastOfTo. llvm-svn: 69290
* Record line number at the beginning of a func.start.Devang Patel2009-04-162-2/+2
| | | | | | This line was accidently lost yesterday. llvm-svn: 69286
* fix PR3995. A scale must be 1, 2, 4 or 8.Rafael Espindola2009-04-161-1/+1
| | | | llvm-svn: 69284
* Expand GEPs in ScalarEvolution expressions. SCEV expressions can nowDan Gohman2009-04-164-443/+433
| | | | | | | | | | | | | | | | | | | | | have pointer types, though in contrast to C pointer types, SCEV addition is never implicitly scaled. This not only eliminates the need for special code like IndVars' EliminatePointerRecurrence and LSR's own GEP expansion code, it also does a better job because it lets the normal optimizations handle pointer expressions just like integer expressions. Also, since LLVM IR GEPs can't directly index into multi-dimensional VLAs, moving the GEP analysis out of client code and into the SCEV framework makes it easier for clients to handle multi-dimensional VLAs the same way as other arrays. Some existing regression tests show improved optimization. test/CodeGen/ARM/2007-03-13-InstrSched.ll in particular improved to the point where if-conversion started kicking in; I turned it off for this test to preserve the intent of the test. llvm-svn: 69258
* In -fast mode do what FastISel does.Devang Patel2009-04-162-30/+71
| | | | | | This code could use some refactoring help! llvm-svn: 69254
* If FastISel is run and it has known DebugLoc then use it.Devang Patel2009-04-162-3/+7
| | | | llvm-svn: 69253
* If location where the function was inlined is not know then do not emit ↵Devang Patel2009-04-161-5/+11
| | | | | | debug info describing inlinied region. llvm-svn: 69252
* Eliminate zext over (iv | const) or (signed iv),Dale Johannesen2009-04-151-22/+77
| | | | | | | | and sext over (iv | const), if a longer iv is available. Allow expressions to have more than one zext/sext parent. All from OpenSSL. llvm-svn: 69241
* s/RootDbgScope/FunctionDbgScope/gDevang Patel2009-04-151-13/+13
| | | | llvm-svn: 69216
* Eliminate zext over (iv & const) or ((iv+const)&const)Dale Johannesen2009-04-151-31/+89
| | | | | | | if a longer iv is available. These subscript forms are not common; they're a bottleneck in OpenSSL. llvm-svn: 69215
* teach EscapeString and UnescapeString to handle ".Chris Lattner2009-04-151-0/+3
| | | | llvm-svn: 69211
* Add DISubprogram is not null check.Devang Patel2009-04-151-2/+4
| | | | | | This fixes test/CodeGen//2009-01-21-invalid-debug-info.m test case. llvm-svn: 69210
* Generalize one of the SelectionDAG::ReplaceAllUsesWith overloadsDan Gohman2009-04-152-9/+10
| | | | | | | | to support replacing a node with another that has a superset of the result types. Use this instead of calling ReplaceAllUsesOfValueWith for each value. llvm-svn: 69209
* Fix 80-column violations.Dan Gohman2009-04-152-3/+4
| | | | llvm-svn: 69204
* Add a folding table entry for MOV8rr_NOREX.Dan Gohman2009-04-151-0/+1
| | | | llvm-svn: 69203
* Check isInlinedSubroutine() before creating DW_TAG_inlined_subroutine.Devang Patel2009-04-151-1/+2
| | | | llvm-svn: 69202
* Fix MachineInstr::getNumExplicitOperands to countDan Gohman2009-04-151-2/+2
| | | | | | variadic operands correctly. Patch by Jakob Stoklund Olesen! llvm-svn: 69190
* Limit the number of times we're willing to chase pointers. Removes an O(n^2)Nick Lewycky2009-04-151-1/+3
| | | | | | problem from instcombine. llvm-svn: 69151
* Fix X86MachineFunctionInfo's doxygen comment.Dan Gohman2009-04-151-2/+3
| | | | llvm-svn: 69127
* Move MachineRegisterInfo::setRegClass out of line.Dan Gohman2009-04-151-0/+20
| | | | llvm-svn: 69126
* Move MachineJumpTableInfo::ReplaceMBBInJumpTables out of line.Dan Gohman2009-04-151-0/+17
| | | | llvm-svn: 69125
* Give RemoveRegOperandFromRegInfo a comment and move theDan Gohman2009-04-151-0/+15
| | | | | | code out of line. llvm-svn: 69124
* Enhance induction variable code to remove theDale Johannesen2009-04-151-40/+121
| | | | | | | | | sext around sext(shorter IV + constant), using a longer IV instead, when it can figure out the add can't overflow. This comes up a lot in subscripting; mainly affects 64 bit. llvm-svn: 69123
* Avoid making the transformation enabled by my last patch if the new ↵Evan Cheng2009-04-151-3/+13
| | | | | | destinations have phi nodes. llvm-svn: 69121
* While inlining, clone llvm.dbg.func.start intrinsic and adjust Devang Patel2009-04-152-3/+52
| | | | | | llvm.dbg.region.end instrinsic. This nested llvm.dbg.func.start/llvm.dbg.region.end pair now enables DW_TAG_inlined_subroutine support in code generator. llvm-svn: 69118
* Construct and emit DW_TAG_inlined_subroutine DIEs for inlined subroutine ↵Devang Patel2009-04-153-91/+217
| | | | | | scopes (only in FastISel mode). llvm-svn: 69116
* Do for GR16_NOREX what r69049 did for GR8_NOREX, to avoid trouble withDan Gohman2009-04-151-0/+35
| | | | | | the local register allocator. llvm-svn: 69115
* Add a method to check that the subprogram holds debug info for the given ↵Devang Patel2009-04-151-0/+13
| | | | | | Function or not. llvm-svn: 69113
OpenPOWER on IntegriCloud