summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Fix a few places that were missed when we converted to unified syntax.Bob Wilson2009-11-181-2/+2
| | | | llvm-svn: 89214
* Don't require LiveVariables for PHIElimination. Enable critical edge splittingJakob Stoklund Olesen2009-11-182-28/+9
| | | | | | | | | | | | when LiveVariables is available. The -split-phi-edges is now gone, and so is the hack to disable it when using the local register allocator. The PHIElimination pass no longer has LiveVariables as a prerequisite - that is what broke the local allocator. Instead we do critical edge splitting when possible - that is when LiveVariables is available. llvm-svn: 89213
* Fix passing of float arguments through ffi.Nick Lewycky2009-11-181-1/+1
| | | | llvm-svn: 89198
* Add a target hook to allow changing the tail duplication limit based on theBob Wilson2009-11-185-4/+25
| | | | | | | | | contents of the block to be duplicated. Use this for ARM Cortex A8/9 to be more aggressive tail duplicating indirect branches, since it makes it much more likely that they will be predicted in the branch target buffer. Testcase coming soon. llvm-svn: 89187
* The llvm-gcc front-end and the pass manager use two separate TargetData objects.Bill Wendling2009-11-181-24/+116
| | | | | | | | | | | | | | | | | | This is probably not confined to *just* these two things. Anyway, the llvm-gcc front-end may look up the structure layout information for an abstract type. That information will be stored into a table with the FE's TD. Instruction combine can come along and also ask for information on that abstract type, but for a separate TD (the one associated with the pass manager). After the type is refined, the old structure layout information in the pass manager's TD file is out of date. If a new type is allocated in the same space as the old-unrefined type, then the structure type information in the pass manager's TD file will be wrong, but won't know it. Fix this by making the TD's structure type information an abstract type user. llvm-svn: 89176
* Simplify ComputeMultiple so that it doesn't depend on TargetData.Dan Gohman2009-11-182-25/+11
| | | | llvm-svn: 89175
* Fix inverted test and add testcase from failing self-host.Jakob Stoklund Olesen2009-11-181-9/+7
| | | | llvm-svn: 89167
* Remove dead code.Devang Patel2009-11-171-55/+1
| | | | llvm-svn: 89156
* Add ability to set code model within the execution engine buildersEric Christopher2009-11-173-8/+15
| | | | | | and creation interfaces. llvm-svn: 89151
* grammarJim Grosbach2009-11-171-2/+2
| | | | llvm-svn: 89145
* Enable arm jumpt table adjustment.Jim Grosbach2009-11-171-1/+1
| | | | llvm-svn: 89143
* Disable -split-phi-edges to unbreak the buildbotsJakob Stoklund Olesen2009-11-171-1/+1
| | | | llvm-svn: 89142
* Never call UpdateTerminator() when AnalyzeBranch would fail.Jakob Stoklund Olesen2009-11-171-1/+13
| | | | llvm-svn: 89139
* Both Darwin as and GNU as violate ARM docs wrt printing of addrmode6Anton Korobeynikov2009-11-171-5/+2
| | | | | | alignment imm (in the same way). Fix asmprinting for non-darwin platforms. llvm-svn: 89137
* Add a WriteAsOperand for MachineBasicBlock so MachineLoopInfo dump looks sane.Evan Cheng2009-11-171-0/+5
| | | | llvm-svn: 89130
* Fix comment.Evan Cheng2009-11-171-3/+3
| | | | llvm-svn: 89129
* Enable -split-phi-edges by default, except when -regalloc=local.Jakob Stoklund Olesen2009-11-171-3/+15
| | | | | | | The local register allocator doesn't like it when LiveVariables is run. We should also disable edge splitting under -O0, but that has to wait a bit. llvm-svn: 89125
* 80-column violationsJim Grosbach2009-11-171-8/+11
| | | | llvm-svn: 89123
* Added getArchNameForAssembler method to the Triple class for which returns ↵Viktor Kutuzov2009-11-171-0/+27
| | | | | | OS and Vendor independent target assembler arch. llvm-svn: 89122
* Remove a special case for tail merging that seems to be both broken andBob Wilson2009-11-171-33/+0
| | | | | | | | | | | unnecessary. It is broken because the "isIdenticalTo" check should be negated. If that is fixed, this code causes the CodeGen/X86/tail-opts.ll test to fail, in the dont_merge_oddly function. And, I confirmed that the regression is real -- the generated code is worse. As far as I can tell, that tail-opts.ll test is checking for what this code is supposed to handle and we're doing the right thing anyway. llvm-svn: 89121
* Generalize OptimizeLoopTermCond to optimize more loop terminating icmp to ↵Evan Cheng2009-11-171-87/+99
| | | | | | use postinc iv. llvm-svn: 89116
* Set MadeChange instead of MadeChangeThisIteration.Dan Gohman2009-11-171-1/+1
| | | | llvm-svn: 89114
* Revert CPU detection code to return "generic" instead of an empty string in caseBenjamin Kramer2009-11-172-4/+4
| | | | | | | of failure. The x86 target didn't like empty cpu names and broke x86 tests on non-x86 buildbots. llvm-svn: 89111
* Remove trailing whitespaceJim Grosbach2009-11-171-74/+74
| | | | llvm-svn: 89110
* Update a comment, now that tail duplication happens after other branchBob Wilson2009-11-171-2/+2
| | | | | | folding optimizations. llvm-svn: 89109
* Set Inst{15-12} (Rd/Rt) to 0b1111 (PC) for BR_JTadd, BR_JTr, and BR_JTm toJohnny Chen2009-11-171-0/+3
| | | | | | distinguish between them and the more generic instructions (add, mov, and ldr). llvm-svn: 89108
* Perform tail duplication only once, after tail merging is complete.Bob Wilson2009-11-172-33/+68
| | | | | | | It was too difficult to keep the heuristics for merging and duplication consistent. llvm-svn: 89105
* Revert 89021. It's miscompiling llvm-gcc driver driver at -O0.Evan Cheng2009-11-171-1/+1
| | | | llvm-svn: 89082
* Re-apply 89011. It's not to be blamed.Evan Cheng2009-11-172-4/+7
| | | | llvm-svn: 89081
* Revert 89011. Buildbot thinks it might be breaking stuff.Evan Cheng2009-11-172-7/+4
| | | | llvm-svn: 89076
* Remove VISIBILITY_HIDDEN from the classes in this directory. Fixes bug 5507.Nick Lewycky2009-11-175-19/+18
| | | | llvm-svn: 89075
* Revert r88939.Nick Lewycky2009-11-171-2/+2
| | | | llvm-svn: 89066
* Fail less mysteriously; inform the user that their LLVM was not built withNick Lewycky2009-11-171-0/+3
| | | | | | | libffi support and that the interpreter can't call external functions without it. Patch by Timo Juhani Lindfors! Fixes PR5466. llvm-svn: 89062
* Fix a race condition in the Timer class.Owen Anderson2009-11-171-38/+5
| | | | llvm-svn: 89056
* Refactor the code that creates the "dot-label" difference. This may be used inBill Wendling2009-11-172-18/+29
| | | | | | more than one place. No intended functionality change. llvm-svn: 89024
* When moving a block for table jumps, make sure the prior block terminatorJim Grosbach2009-11-171-7/+9
| | | | | | | is analyzable so it can be updated. If it's not, be safe and don't move the block. llvm-svn: 89022
* Enable -split-phi-edges by defaultJakob Stoklund Olesen2009-11-171-1/+1
| | | | llvm-svn: 89021
* MOV64rm should be marked isReMaterializable.Evan Cheng2009-11-171-1/+1
| | | | llvm-svn: 89019
* Remove the optimizations that convert BRCOND and BR_CC intoDan Gohman2009-11-171-17/+12
| | | | | | | | | | unconditional branches or fallthroghes. Instcombine/SimplifyCFG should be simplifying branches with known conditions. This fixes some problems caused by these transformations not updating the MachineBasicBlock CFG. llvm-svn: 89017
* Remove debug info attached with an instruction.Devang Patel2009-11-171-36/+18
| | | | llvm-svn: 89016
* In GlobalVariable::setInitializer, assert that the initializer has theJeffrey Yasskin2009-11-171-0/+15
| | | | | | right type. llvm-svn: 89014
* A few more instructions that should be marked re-materializable.Evan Cheng2009-11-172-4/+7
| | | | llvm-svn: 89011
* Set Rm bits of BX_RET to 0b1110 (R14); and set condition code bits of BRIND toJohnny Chen2009-11-161-0/+2
| | | | | | | 0b1110 (ALways). This is so that the disassembler decoder can distinguish among BX_RET, BRIND, and BXr9. llvm-svn: 89000
* Initialize the new AsmPrinterFlags field to 0, fixing uses ofDan Gohman2009-11-161-6/+8
| | | | | | uninitialized memory. llvm-svn: 88985
* Make X86-64 in the Large model always emit 64-bit calls.Jeffrey Yasskin2009-11-165-56/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The large code model is documented at http://www.x86-64.org/documentation/abi.pdf and says that calls should assume their target doesn't live within the 32-bit pc-relative offset that fits in the call instruction. To do this, we turn off the global-address->target-global-address conversion in X86TargetLowering::LowerCall(). The first attempt at this broke the lazy JIT because it can separate the movabs(imm->reg) from the actual call instruction. The lazy JIT receives the address of the movabs as a relocation and needs to record the return address from the call; and then when that call happens, it needs to patch the movabs with the newly-compiled target. We could thread the call instruction into the relocation and record the movabs<->call mapping explicitly, but that seems to require at least as much new complication in the code generator as this change. To fix this, we make lazy functions _always_ go through a call stub. You'd think we'd only have to force lazy calls through a stub on difficult platforms, but that turns out to break indirect calls through a function pointer. The right fix for that is to distinguish between calls and address-of operations on uncompiled functions, but that's complex enough to leave for someone else to do. Another attempt at this defined a new CALL64i pseudo-instruction, which expanded to a 2-instruction sequence in the assembly output and was special-cased in the X86CodeEmitter's emitInstruction() function. That broke indirect calls in the same way as above. This patch also removes a hack forcing Darwin to the small code model. Without far-call-stubs, the small code model requires things of the JITMemoryManager that the DefaultJITMemoryManager can't provide. Thanks to echristo for lots of testing! llvm-svn: 88984
* - Check memoperand alignment instead of checking stack alignment. Most load ↵Evan Cheng2009-11-162-17/+14
| | | | | | | | / store folding instructions are not referencing spill stack slots. - Mark MOVUPSrm re-materializable. llvm-svn: 88974
* Revert r88939.Devang Patel2009-11-161-2/+2
| | | | llvm-svn: 88973
* Fix an expensive-checks error.David Greene2009-11-161-20/+24
| | | | | | | The Mask and LHSMask may not be of the same size, so don't do the transformation if they're different. llvm-svn: 88972
* Make the pass class name more explicit.Jim Grosbach2009-11-161-4/+6
| | | | llvm-svn: 88964
* make pass name a bit more clearJim Grosbach2009-11-161-1/+1
| | | | llvm-svn: 88961
OpenPOWER on IntegriCloud