aboutsummaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* Stop verifying hasPHIKill() flags.Jakob Stoklund Olesen2011-09-151-11/+1
| | | | | | | | | | There is only one legitimate use remaining, in addIntervalsForSpills(). All other calls to hasPHIKill() are only used to update PHIKill flags. The addIntervalsForSpills() function is part of the old spilling framework, only used by linearscan. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139783 91177308-0d34-0410-b5e6-96231b3b80d8
* RemoveCopyByCommutingDef doesn't need hasPHIKill().Jakob Stoklund Olesen2011-09-151-8/+8
| | | | | | | | | | | Instead, let HasOtherReachingDefs() test for defs in B that overlap any phi-defs in A as well. This test is slightly different, but almost identical. A perfectly precise test would only check those phi-defs in A that are reachable from AValNo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139782 91177308-0d34-0410-b5e6-96231b3b80d8
* It is safe to remat a value killed by phis.Jakob Stoklund Olesen2011-09-151-3/+1
| | | | | | | | | | | | | The source live range is recomputed using shrinkToUses() which does handle phis correctly. The hasPHIKill() condition was relevant in the old days when ReMaterializeTrivialDef() tried to recompute the live range itself. The shrinkToUses() function will mark the original def as dead when no more uses and phi kills remain. It is then removed by runOnMachineFunction(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139781 91177308-0d34-0410-b5e6-96231b3b80d8
* Leave hasPHIKill flags alone in LiveInterval::RenumberValues.Jakob Stoklund Olesen2011-09-151-21/+0
| | | | | | | | | | | It is conservatively correct to keep the hasPHIKill flags, even after deleting PHI-defs. The calculation can be very expensive after taildup has created a quadratic number of indirectbr edges in the CFG, and the hasPHIKill flag isn't used for anything after RenumberValues(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139780 91177308-0d34-0410-b5e6-96231b3b80d8
* Update Dwarf enums list for DWARF 4.Nick Lewycky2011-09-151-0/+16
| | | | | | | Note that DW_TAG_rvalue_reference_type is officially 0x42, not 0x41. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139779 91177308-0d34-0410-b5e6-96231b3b80d8
* DWARF: Print the number for unknown abbrev fields.Benjamin Kramer2011-09-151-5/+18
| | | | | | Thanks Nick! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139778 91177308-0d34-0410-b5e6-96231b3b80d8
* DWARF: Fail gracefully when encountering unknown values in an abbrev.Benjamin Kramer2011-09-151-4/+9
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139777 91177308-0d34-0410-b5e6-96231b3b80d8
* Give structs with virtual methods a virtual destructor.Nick Lewycky2011-09-152-0/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139776 91177308-0d34-0410-b5e6-96231b3b80d8
* DWARF: Silence GCC -Wsign-compare warning.Benjamin Kramer2011-09-151-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139775 91177308-0d34-0410-b5e6-96231b3b80d8
* DWARF: Fix indentation.Benjamin Kramer2011-09-152-82/+81
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139774 91177308-0d34-0410-b5e6-96231b3b80d8
* DWARF: Include <algorithm> explicitly.Benjamin Kramer2011-09-151-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139773 91177308-0d34-0410-b5e6-96231b3b80d8
* DWARF: Add basic support for line tables.Benjamin Kramer2011-09-155-0/+707
| | | | | | The llvm-dwarfdump output isn't very verbose yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139771 91177308-0d34-0410-b5e6-96231b3b80d8
* Make demanded-elt simplification for shufflevector slightly stronger. ↵Eli Friedman2011-09-151-0/+3
| | | | | | Spotted by inspection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139768 91177308-0d34-0410-b5e6-96231b3b80d8
* [regcoalescing] bug fix for RegistersDefinedFromSameValue.Andrew Trick2011-09-151-2/+5
| | | | | | | | An improper SlotIndex->VNInfo lookup was leading to unsafe copy removal. Fixes PR10920 401.bzip2 miscompile with no IV rewrite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139765 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix the code creating VZEXT_LOAD so that it creates the right memoperand. ↵Eli Friedman2011-09-141-3/+6
| | | | | | Issue spotted in -debug output. I can't think of any practical effects at the moment, but it might matter if we start doing more aggressive alias analysis in CodeGen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139758 91177308-0d34-0410-b5e6-96231b3b80d8
* Update the comment for system_temp_directory() to indicate when itDouglas Gregor2011-09-141-1/+1
| | | | | | | | will ignore the erasedOnReboot option, and properly escape the backslash in "C:\TEMP". Thanks to Aaron and Francois. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139755 91177308-0d34-0410-b5e6-96231b3b80d8
* Thumb2 assembly parsing and encoding for PKH.Jim Grosbach2011-09-141-4/+14
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139754 91177308-0d34-0410-b5e6-96231b3b80d8
* ARMv7a has the PKH instructions.Jim Grosbach2011-09-141-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139753 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support to emit debug info for C++0x nullptr type.Devang Patel2011-09-143-5/+39
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139751 91177308-0d34-0410-b5e6-96231b3b80d8
* ARM tighten up the register classes for the PKH instructions.Jim Grosbach2011-09-141-21/+22
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139748 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a crasher in Thumb2 MOV-immediate encoding for certain inputs.Owen Anderson2011-09-141-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139747 91177308-0d34-0410-b5e6-96231b3b80d8
* Include limits.h to make sure PATH_MAX is known on Solaris 10.Bill Wendling2011-09-141-0/+3
| | | | | | | Patch by Joakim Johansson! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139743 91177308-0d34-0410-b5e6-96231b3b80d8
* Thumb2 assembly parsing and encoding for MVN.Jim Grosbach2011-09-141-42/+47
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139739 91177308-0d34-0410-b5e6-96231b3b80d8
* Nested IT blocks are UNPREDICTABLE. Mark them as such when disassembling them.Owen Anderson2011-09-141-0/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139736 91177308-0d34-0410-b5e6-96231b3b80d8
* Thumb2 assembly parsing and encoding for MUL.Jim Grosbach2011-09-141-1/+23
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139735 91177308-0d34-0410-b5e6-96231b3b80d8
* DWARF: Generate the address lookup table from the DIE tree if .debug_aranges ↵Benjamin Kramer2011-09-147-1/+87
| | | | | | | | is not available. Ported from LLDB. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139732 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a simple routine to determine the typical system directory forDouglas Gregor2011-09-141-0/+30
| | | | | | | temporary data. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139725 91177308-0d34-0410-b5e6-96231b3b80d8
* Thumb2 assembly parsing and encoding for MSR/MRS.Jim Grosbach2011-09-142-28/+18
| | | | | | Fix a bug in handling default flags for both ARM and Thumb encodings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139721 91177308-0d34-0410-b5e6-96231b3b80d8
* Thumb2 assembly parsing for MOV in IT block.Jim Grosbach2011-09-141-2/+3
| | | | | | Select the right 16 vs. 32 bit encoding in an IT block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139714 91177308-0d34-0410-b5e6-96231b3b80d8
* DWARF: Reorder fields to reduce padding.Benjamin Kramer2011-09-141-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139712 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't mark objc_retainBlock as nounwind. It calls user copy constructorsDan Gohman2011-09-141-2/+4
| | | | | | | which could theoretically throw. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139710 91177308-0d34-0410-b5e6-96231b3b80d8
* objc_retainBlock is not NoModRef because it can update forwarding pointersDan Gohman2011-09-141-1/+2
| | | | | | | in memory relevant to the optimizer. rdar://10050579. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139708 91177308-0d34-0410-b5e6-96231b3b80d8
* ARM fix assembly parser handling of ranges in register lists.Jim Grosbach2011-09-141-55/+98
| | | | | | | | | | Clean up register list handling in general a bit to explicitly check things like all the registers being from the same register class. rdar://8883573 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139707 91177308-0d34-0410-b5e6-96231b3b80d8
* DWARF: Improve indentation of DIE dumping so it's easier to see the structure.Benjamin Kramer2011-09-141-8/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139705 91177308-0d34-0410-b5e6-96231b3b80d8
* Ignore the cloning of unknown registers.Jakob Stoklund Olesen2011-09-141-0/+4
| | | | | | | | THe LRE_DidCloneVirtReg callback may be called with vitual registers that RAGreedy doesn't even know about yet. In that case, there are no data structures to update. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139702 91177308-0d34-0410-b5e6-96231b3b80d8
* llvm-dwarfdump: Make the "is debug info section" heuristic stricter so it ↵Benjamin Kramer2011-09-141-0/+7
| | | | | | | | | | doesn't accidentaly picks up the wrong section. Also add some validation code to the aranges section parser. Fixes PR10926. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139701 91177308-0d34-0410-b5e6-96231b3b80d8
* Add comment.Akira Hatanaka2011-09-141-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139699 91177308-0d34-0410-b5e6-96231b3b80d8
* Hoist back-copies to the least busy dominator.Jakob Stoklund Olesen2011-09-142-2/+66
| | | | | | | | | | | | | | | | When a back-copy is hoisted to the nearest common dominator, keep looking up the dominator tree for a less loopy dominator, and place the back-copy there instead. Don't do this when a single existing back-copy dominates all the others. Assume the client knows what he is doing, and keep the dominating back-copy. This prevents us from hoisting back-copies into loops in most cases. If a value is defined in a loop with multiple exits, we may still hoist back-copies into that loop. That is the speed/size tradeoff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139698 91177308-0d34-0410-b5e6-96231b3b80d8
* Move state var to private class member.Jim Grosbach2011-09-141-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139697 91177308-0d34-0410-b5e6-96231b3b80d8
* Add APInt support for converting to/from hexatridecimal stringsDouglas Gregor2011-09-141-12/+19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139695 91177308-0d34-0410-b5e6-96231b3b80d8
* Add integer promotion support for vselectNadav Rotem2011-09-142-0/+10
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139692 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix mem type for VEX.128 form of VROUNDP*. Remove filter preventing VROUND ↵Craig Topper2011-09-141-2/+2
| | | | | | from being recognized by disassembler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139691 91177308-0d34-0410-b5e6-96231b3b80d8
* Make disassembling of VBLEND* print immediate as a XMM/YMM register name. ↵Craig Topper2011-09-141-0/+6
| | | | | | Fixes PR10917. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139690 91177308-0d34-0410-b5e6-96231b3b80d8
* One more patch towards JIT support for Mips.Bruno Cardoso Lopes2011-09-146-130/+287
| | | | | | | | | | | | | | - Add TSFlags for the instruction formats. The idea here is to use as much encoding as possible from getBinaryCodeForInstr, and having TSFLags formats for that would make it easier to encode most part of the instructions (since Mips encodings are pretty straightforward) - Improve the mips mechanism for compilation callback - Add Mips specific code for invalidating the instruction cache - Next patch will address wrong tablegen encoding Commit msg added by my own but the patch is from Sasa Stankovic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139688 91177308-0d34-0410-b5e6-96231b3b80d8
* Teach the foldable tables about 128-bit AVX instructions and make theBruno Cardoso Lopes2011-09-142-50/+294
| | | | | | | | | | | | | | | alignment check for 256-bit classes more strict. There're no testcases but we catch more folding cases for AVX while running single and multi sources in the llvm testsuite. Since some 128-bit AVX instructions have different number of operands than their SSE counterparts, they are placed in different tables. 256-bit AVX instructions should also be added in the table soon. And there a few more 128-bit versions to handled, which should come in the following commits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139687 91177308-0d34-0410-b5e6-96231b3b80d8
* Vector shuffle mask <i32 4, i32 5, i32 2, i32 3> should yield "movsd", not ↵Bruno Cardoso Lopes2011-09-141-1/+3
| | | | | | "movss". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139686 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't rely in <algorithm> being pulled in transitively.Benjamin Kramer2011-09-141-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139684 91177308-0d34-0410-b5e6-96231b3b80d8
* Object: make the following changes into SymbolRefBenjamin Kramer2011-09-143-3/+192
| | | | | | | | | | | - Add enum SymbolType and function getSymbolType() - Add function isGlobal() - it's returns true for symbols that can be used in another objects, such as library functions. - Rename function getAddress() to getOffset() and add new function getAddress(), because currently getAddress() returns section offset of symbol first byte. new getAddress() return symbol address. - Change usage SymbolRef::getAddress() to getOffset() in tools/llvm-nm and tools/llvm-objdump. Patch by Danil Malyshev! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139683 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove unimplemented function prototypes from PathV2. They can be readded ↵Benjamin Kramer2011-09-141-3/+1
| | | | | | | | when someone cares enough. Patch by Aaron Ballman! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139682 91177308-0d34-0410-b5e6-96231b3b80d8
* DWARF: Port support for parsing .debug_aranges section from LLDB and wire it ↵Benjamin Kramer2011-09-147-2/+551
| | | | | | | | | up to llvm-dwarfdump. This is only one half of it, the part that caches address ranges from the DIEs when .debug_aranges is not available will be ported soon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139680 91177308-0d34-0410-b5e6-96231b3b80d8