summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* add BFI to getTargetNodeName()Jim Grosbach2010-07-171-0/+1
| | | | llvm-svn: 108603
* Fix logic think-oJim Grosbach2010-07-171-1/+1
| | | | llvm-svn: 108601
* Remove unnecessary check that was subsumed into canRealignStack.Eric Christopher2010-07-172-6/+4
| | | | llvm-svn: 108588
* Propagate alloca alignment information via variable size object frameEric Christopher2010-07-171-1/+1
| | | | | | | | information. No functional change yet. llvm-svn: 108583
* Make more explicit and add some currently disabled error messages forEric Christopher2010-07-171-4/+18
| | | | | | | | | stack realignment on ARM. Also check for function attributes as we do on X86 as well as make explicit that we're checking can as well as needs in this function. llvm-svn: 108582
* Make comment a bit more clear as well as return statement sinceEric Christopher2010-07-171-2/+2
| | | | | | needsStackRealignment is currently checking the can conditions as well. llvm-svn: 108581
* Add basic support to code-gen the ARM/Thumb2 bit-field insert (BFI) instructionJim Grosbach2010-07-166-36/+104
| | | | | | | and a combine pattern to use it for setting a bit-field to a constant value. More to come for non-constant stores. llvm-svn: 108570
* Fix whitespace.Dan Gohman2010-07-161-2/+2
| | | | llvm-svn: 108569
* 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
* Remove the isMoveInstr() hook.Jakob Stoklund Olesen2010-07-1626-618/+0
| | | | llvm-svn: 108567
* Avoid isMoveInstr when printing XCore pseudo-moves.Jakob Stoklund Olesen2010-07-161-7/+5
| | | | llvm-svn: 108566
* Use MI.isCopy.Jakob Stoklund Olesen2010-07-161-4/+2
| | | | llvm-svn: 108565
* Use a small local function for a single remaining late isMoveInstr call inJakob Stoklund Olesen2010-07-161-24/+42
| | | | | | Thumb2ITBlockPass. llvm-svn: 108564
* Rename DBG_LABEL PROLOG_LABEL, because it's only used during prolog emission andBill Wendling2010-07-1613-22/+22
| | | | | | thus is a much more meaningful name. llvm-svn: 108563
* Keep valgrind quiet.Jakob Stoklund Olesen2010-07-161-1/+6
| | | | | | | The isLive() method can read uninitialized memory, but it still gives correct results. llvm-svn: 108561
* tidy upChris Lattner2010-07-162-77/+88
| | | | llvm-svn: 108560
* Remove remaining calls to TII::isMoveInstr.Jakob Stoklund Olesen2010-07-162-38/+1
| | | | llvm-svn: 108556
* Emit COPY instead of FMR/FMSD instructions for floating point conversion onJakob Stoklund Olesen2010-07-162-12/+9
| | | | | | PowerPC. llvm-svn: 108555
* eliminate unlockedRefineAbstractTypeTo, types are all per-llvmcontext,Chris Lattner2010-07-163-14/+5
| | | | | | so there is no locking involved in type refinement. llvm-svn: 108553
* get the first few tags from a precomputed table (count can be increased if ↵Gabor Greif2010-07-161-0/+9
| | | | | | desired) llvm-svn: 108549
* Add missing attributes to cpp backend.Eli Friedman2010-07-161-1/+9
| | | | llvm-svn: 108547
* Accept registers with P modifier. PR 5314.Dale Johannesen2010-07-161-0/+4
| | | | llvm-svn: 108545
* Teach PPCInstrInfo::storeRegToStackSlot and loadRegFromStackSlot to add memoryJakob Stoklund Olesen2010-07-161-0/+19
| | | | | | | | | operands. Hopefully this fixes the llvm-gcc-powerpc-darwin9 buildbot. It really shouldn't since missing memoperands should not affect correctness. llvm-svn: 108540
* Reorder the contents of various getAnalysisUsage functions, eliminatingDan Gohman2010-07-164-20/+23
| | | | | | a redundant loopsimplify run from the default -O2 sequence. llvm-svn: 108539
* 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
* Remove the X86::FP_REG_KILL pseudo-instruction and the X86FloatingPointRegKillJakob Stoklund Olesen2010-07-167-182/+1
| | | | | | | | | pass that inserted it. It is no longer necessary to limit the live ranges of FP registers to a single basic block. llvm-svn: 108536
* Search for a free FP register instead of just assuming FP7 is not in use.Jakob Stoklund Olesen2010-07-161-6/+12
| | | | llvm-svn: 108535
* Remove the rest of my instcombine changes. Back to the drawing board on ↵Owen Anderson2010-07-161-28/+0
| | | | | | this one. llvm-svn: 108530
* Allow x87 FP registers to be alive globally in a function.Jakob Stoklund Olesen2010-07-162-37/+389
| | | | | | | | | | | | | | | | FP_REG_KILL instructions are still inserted, but can be disabled by passing -live-x87 to llc. The X87FPRegKillInserterPass is going to be removed shortly. CFG edges are partioned into bundles where the x87 stack must be allocated identically. Code is insertad at the end of each basic block that shuffles the live FP registers to match the outgoing bundles expectations. This fix is in preparation for some upcoming register allocator improvements that may extend the live range of registers beyond a basic block, similar to LICM. It also provides a nice runtime speedup if you are building with -mfpmath=387. llvm-svn: 108529
* eliminate CallInst::ArgOffsetGabor Greif2010-07-166-27/+25
| | | | llvm-svn: 108522
* Get rid of a bunch of duplicated ELF enum values.Eli Friedman2010-07-165-131/+41
| | | | llvm-svn: 108520
* Arrays and vectors with different numbers of elements are not equivalent.Nick Lewycky2010-07-161-4/+10
| | | | llvm-svn: 108517
* LoopSimplify does not update domfrontier correctly.Tobias Grosser2010-07-161-2/+2
| | | | | | This fixes PR7649. llvm-svn: 108513
* Add dump() to DominanceFrontierTobias Grosser2010-07-161-0/+5
| | | | llvm-svn: 108512
* 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
* Also revert 108422, it's causing some test failures.Eric Christopher2010-07-161-19/+0
| | | | | | Working on testcases for Owen. llvm-svn: 108494
* 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
* Fix the order that SCEVExpander considers add operands in so thatDan Gohman2010-07-151-2/+14
| | | | | | | it doesn't miss an opportunity to form a GEP, regardless of the relative loop depths of the operands. This fixes rdar://8197217. llvm-svn: 108475
* 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-156-26/+22
| | | | | | -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
* fix indentation and 80 colsChris Lattner2010-07-151-2/+3
| | | | llvm-svn: 108460
* Don't merge uses when they are targetting fixup sites withDan Gohman2010-07-151-1/+20
| | | | | | | | | | | | | different widths. In a use with a narrower fixup, formulae may be wider than the fixup, in which case the high bits aren't necessarily meaningful, so it isn't safe to reuse them for uses with wider fixups. This fixes PR7618, though the testcase is too large for a reasonable regression test, since it heavily dependes on hitting LSR's heuristics in a certain way. llvm-svn: 108455
* fix the encoding of MMX_MOVFR642Qrr, it starts with 0xF2 not 0xF3,Chris Lattner2010-07-151-1/+1
| | | | | | | | this fixes rdar://8192860. Unfortunately it can only be triggered with llc because llvm-mc matches another (correctly encoded) version of this, so no testcase. llvm-svn: 108454
* Use dbgs() instead of errs() in a DEBUG.Dan Gohman2010-07-151-1/+1
| | | | llvm-svn: 108453
* Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.Bill Wendling2010-07-151-3/+3
| | | | llvm-svn: 108452
* Teach ScalarEvolution how to fold trunc(undef) and anyext(undef) to undef.Dan Gohman2010-07-151-0/+14
| | | | | | This helps LSR behave more consistently on bugpoint-reduced testcases. llvm-svn: 108451
* Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.Bill Wendling2010-07-151-2/+3
| | | | llvm-svn: 108450
OpenPOWER on IntegriCloud