summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Set NonLocalDepInfo's Size field to UnknownSize when invalidatingDan Gohman2010-11-111-5/+5
| | | | | | it, so that it doesn't appear to be a known size. llvm-svn: 118748
* Insert two blank SlotIndexes between basic blocks instead of just one.Jakob Stoklund Olesen2010-11-111-2/+6
| | | | | | | | | | | | | | | | | This is the first small step towards using closed intervals for liveness instead of the half-open intervals we're using now. We want to be able to distinguish between a SlotIndex that represents a variable being live-out of a basic block, and an index representing a variable live-in to its successor. That requires two separate indexes between blocks. One for live-outs and one for live-ins. With this change, getMBBEndIdx(MBB).getPrevSlot() becomes stable so it stays greater than any instructions inserted at the end of MBB. llvm-svn: 118747
* No need to add liveness that's already there.Jakob Stoklund Olesen2010-11-101-4/+1
| | | | llvm-svn: 118742
* Hook up AliasAnalysis in InlineSpiller. This is used for rematerializingJakob Stoklund Olesen2010-11-102-1/+8
| | | | | | constant loads. llvm-svn: 118741
* Move LDM predicate operand encoding into base clase. Add STM missing STMJim Grosbach2010-11-102-10/+18
| | | | | | encoding bits. llvm-svn: 118738
* ARM LDM encoding for the mode (ia, ib, da, db) operand.Jim Grosbach2010-11-104-1/+19
| | | | llvm-svn: 118736
* Factor some code into WriteSection.Rafael Espindola2010-11-101-62/+72
| | | | llvm-svn: 118733
* Fix ARM encoding of non-return LDM instructions.Jim Grosbach2010-11-102-4/+11
| | | | llvm-svn: 118732
* Fix ARM encoding of LDM+Return instruction.Jim Grosbach2010-11-102-3/+10
| | | | llvm-svn: 118730
* When clearing a non-local pointer dependency cache entry, clearDan Gohman2010-11-101-0/+8
| | | | | | the reverse map too. This fixes seflhost build errors. llvm-svn: 118729
* Update the section index map after we add the medatada sections.Rafael Espindola2010-11-101-0/+4
| | | | llvm-svn: 118728
* Take care of special characters while creating named MDNode name to hold ↵Devang Patel2010-11-102-13/+39
| | | | | | | | function specific local variable's info. This fixes radar 8653152. I am checking in testcase as a separate check-in. llvm-svn: 118726
* Use SectionIndexMap in WriteSymbolTable to make it a little less brittle.Rafael Espindola2010-11-101-16/+17
| | | | llvm-svn: 118725
* Factor out the code for computing an AliasAnalysis::LocationDan Gohman2010-11-101-82/+101
| | | | | | for a given instruction into a helper function. llvm-svn: 118723
* Factor some code into ComputeIndexMap.Rafael Espindola2010-11-101-14/+28
| | | | llvm-svn: 118722
* Fully invalidate cached results when a prior query's size orDan Gohman2010-11-101-10/+23
| | | | | | type is insufficient for, or incompatible with, the current query. llvm-svn: 118721
* Fix an issue where we tried to turn a v2f32 build_vector into a v4i32 build ↵Nate Begeman2010-11-101-2/+2
| | | | | | vector with 2 elts llvm-svn: 118720
* Reduce the maximum recursion depth, 5 seems pointlessly too much.Duncan Sands2010-11-101-1/+1
| | | | | | Probably it should just be 1, but compromise with 3. llvm-svn: 118718
* Enhance GVN to do more precise alias queries for non-local memoryDan Gohman2010-11-103-17/+59
| | | | | | | | | | | | | | | references. For example, this allows gvn to eliminate the load in this example: void foo(int n, int* p, int *q) { p[0] = 0; p[1] = 1; if (n) { *q = p[0]; } } llvm-svn: 118714
* Change the String<size> methods to take a fragment instead of a buffer.Rafael Espindola2010-11-101-77/+40
| | | | llvm-svn: 118709
* Basic rematerialization during splitting.Jakob Stoklund Olesen2010-11-102-38/+66
| | | | | | | | | | | Whenever splitting wants to insert a copy, it checks if the value can be rematerialized cheaply instead. Missing features: - Delete instructions when all uses have been rematerialized. - Truncate live ranges to the remaining uses after rematerialization. llvm-svn: 118702
* RABasic is nearly functionally complete. There are a few remainingAndrew Trick2010-11-108-87/+225
| | | | | | | | | benchmarks hitting an assertion. Adds LiveIntervalUnion::collectInterferingVRegs. Fixes "late spilling" by checking for any unspillable live vregs among all physReg aliases. llvm-svn: 118701
* Use MCSectionELF in places we know we have an ELF section.Rafael Espindola2010-11-102-8/+7
| | | | llvm-svn: 118699
* Use getValueOperand() and getPointerOperand() on load and storeDan Gohman2010-11-101-12/+13
| | | | | | instructions instead of hard-coding operand numbers. llvm-svn: 118698
* Teach InstructionSimplify how to look through PHI nodes. Since PHIDuncan Sands2010-11-101-32/+163
| | | | | | | | | nodes can be used in loops, this could result in infinite looping if there is no recursion limit, so add such a limit. It is also used for the SelectInst case because in theory there could be an infinite loop there too if the basic block is unreachable. llvm-svn: 118694
* Add a doesAccessArgPointees helper function, and update code to useDan Gohman2010-11-102-23/+25
| | | | | | it, and to be consistent. llvm-svn: 118692
* Simplify and clean up MC symbol lookup for ARM constant pool values. This fixesJim Grosbach2010-11-101-10/+10
| | | | | | | | double quoting of ObjC symbol names in constant pool entries. rdar://8652107 llvm-svn: 118688
* Factor out the code for testing whether a function accessesDan Gohman2010-11-101-3/+2
| | | | | | arbitrary memory into a helper function, and adjust some comments. llvm-svn: 118687
* Fix Whitespace.Michael J. Spencer2010-11-101-6/+6
| | | | llvm-svn: 118683
* System/Win32/Path: Implement isSymLink.Michael J. Spencer2010-11-101-1/+9
| | | | llvm-svn: 118681
* Simplify binary operations where one operand is a select instruction.Duncan Sands2010-11-101-28/+113
| | | | | | | | | | | | | | | | | The simplifications performed here never create new instructions, they only return existing instructions (or a constant), and so are always a win. In theory they should transform (for example) %z = and i32 %x, %y %s = select i1 %cond, i32 %y, i32 %z %r = and i32 %x, %s into %r = and i32 %x, y but in practice they get into a fight with instcombine, and lose. Unfortunately instcombine does a poor job in this case. Nonetheless I'm committing this transform to make it easier to discuss what to do to make peace with instcombine. llvm-svn: 118679
* Win32/Process.inc: [PR8527] Process::FileDescriptorIsDisplayed(fd) should ↵NAKAMURA Takumi2010-11-101-1/+2
| | | | | | | | not check by FILE_TYPE_CHAR. It must be better to check it with Console API. The special file "NUL" is FILE_TYPE_CHAR with GetFileType(h). It was treated as display device and discarding output to NUL had failed. (eg. opt -o nul) llvm-svn: 118678
* Update ARMConstantPoolValue to not use a modifier string. Use an explicitJim Grosbach2010-11-102-48/+49
| | | | | | | VariantKind marker to indicate the additional information necessary. Update MC to handle the new Kinds. rdar://8647623 llvm-svn: 118671
* Add clo instruction. Patch by Akira Hatanaka (ahatanaka@mips.com) with some ↵Bruno Cardoso Lopes2010-11-102-8/+12
| | | | | | minor tweaks llvm-svn: 118667
* When checking that the necessary bits are zero inDale Johannesen2010-11-101-2/+2
| | | | | | | order to reduce ((x<<30)>>24) to x<<6, check the correct bits. PR 8547. llvm-svn: 118665
* Emit a '!' if this is a "writeback" register or memory address.Bill Wendling2010-11-101-2/+2
| | | | llvm-svn: 118662
* Simplify the LiveRangeEdit::canRematerializeAt() interface a bit.Jakob Stoklund Olesen2010-11-103-27/+19
| | | | llvm-svn: 118661
* Make ModRefBehavior a lattice. Use this to clean up AliasAnalysisDan Gohman2010-11-105-63/+60
| | | | | | chaining and simplify FunctionAttrs' GetModRefBehavior logic. llvm-svn: 118660
* Rename a parameter to avoid confusion with a local variableMatt Beaumont-Gay2010-11-101-3/+3
| | | | llvm-svn: 118656
* Emit the warning about the register list not being in ascending order only once.Bill Wendling2010-11-091-5/+8
| | | | llvm-svn: 118653
* Fixed version of 118639 with an extra assert to catch similar problemsRafael Espindola2010-11-095-41/+31
| | | | | | earlier. Implicit bool -> int conversions are evil! llvm-svn: 118651
* s/std::vector/SmallVector/Bill Wendling2010-11-091-12/+11
| | | | llvm-svn: 118648
* Revert previous patch. Missed a case.Rafael Espindola2010-11-094-29/+40
| | | | llvm-svn: 118645
* Delete the allocated vector.Bill Wendling2010-11-091-0/+4
| | | | llvm-svn: 118644
* Define the subtarget feature for the architecture version,Bob Wilson2010-11-091-15/+40
| | | | | | | as derived from the target triple. This is important for enabling features that are implied based on the architecture version. llvm-svn: 118643
* Do not use MEMBARRIER_MCR for any Thumb code.Bob Wilson2010-11-091-2/+2
| | | | | | | | | It is only supported for ARM code. Normally Thumb2 code would use DMB instead, but depending on how the compiler is invoked (e.g., -mattr=-db) that might be disabled. This prevents a "cannot select MEMBARRIER_MCR" error in that situation. Radar 8644195 llvm-svn: 118642
* Two types of instructions have register lists:Bill Wendling2010-11-091-56/+32
| | | | | | | | | | | * LDM, et al, uses a bit mask to indicate the register list. * VLDM, et al, uses a base register plus number. The LDM instructions may be non-contiguous, but the VLDM ones must be contiguous. Those are semantic checks that should be done later in the compiler. Also postpone the creation of the bit mask until it's needed. llvm-svn: 118640
* Remove IsExplicit. It was always false.Rafael Espindola2010-11-094-40/+29
| | | | llvm-svn: 118639
* Change the ARMConstantPoolValue modifier string to an enumeration. This willJim Grosbach2010-11-094-17/+42
| | | | | | help in MC'izing the references that use them. llvm-svn: 118633
* Adds RABasic verification and tracing.Andrew Trick2010-11-094-16/+158
| | | | | | (retry now that the windows build is green) llvm-svn: 118630
OpenPOWER on IntegriCloud