aboutsummaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2013-02-20Use LiveRangeUpdater instead of mergeIntervalRanges.Jakob Stoklund Olesen
Performance is the same, but LiveRangeUpdater has a more flexible interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175645 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Add a LiveRangeUpdater class.Jakob Stoklund Olesen
Adding new segments to large LiveIntervals can be expensive because the LiveRange objects after the insertion point may need to be moved left or right. This can cause quadratic behavior when adding a large number of segments to a live range. The LiveRangeUpdater class allows the LIveInterval to be in a temporary invalid state while segments are being added. It maintains an internal gap in the LiveInterval when it is shrinking, and it has a spill area for new segments when the LiveInterval is growing. The behavior is similar to the existing mergeIntervalRanges() function, except it allocates less memory for the spill area, and the algorithm is turned inside out so the loop is driven by the clients. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175644 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Add a default constructor for LiveRange.Jakob Stoklund Olesen
It is useful to be able to create temporary LiveRange object whose members are filled in later. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175639 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Revert r175626, "ADT/Optional.h: Appease msvc."NAKAMURA Takumi
Sorry, I didn't cover +Asserts, by accident. :( git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175633 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Whitespace.NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175627 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20ADT/Optional.h: Appease msvc.NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175626 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Move the SplatByte helper to APInt and generalize it a bit.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175621 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Modify LiveInterval::addRange() to match the comment about what it returns.Cameron Zwarich
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175602 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Add SlotIndexes::repairIndexesInRange(), which repairs SlotIndexes after addingCameron Zwarich
and removing instructions. The implementation seems more complicated than it needs to be, but I couldn't find something simpler that dealt with all of the corner cases. Also add a call to repairIndexesInRange() from repairIntervalsInRange(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175601 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Make SlotIndex::getEntry() return unsigned to match IndexListEntry.Cameron Zwarich
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175600 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Fix a misunderstanding about how RegMaskBlocks works. This was caught byCameron Zwarich
assertions in the register allocator when running 'make check' without LiveVariables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175599 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Rename llvm::Optional<T>::Reset to 'reset' as per LLVM naming conventions.David Blaikie
Code review feedback on r175580 from Jordan Rose. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175595 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20[llvm-readobj] Add ELF .dynamic table dumping.Michael J. Spencer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175592 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Remove unneeded #include.Jakub Staszak
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175584 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Fix #includes, so we include only what we really need.Jakub Staszak
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175581 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Allow llvm::Optional to work with types without default constructors.David Blaikie
This generalizes Optional to require less from the T type by using aligned storage for backing & placement new/deleting the T into it when necessary. Also includes unit tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175580 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Move part of APInt implementation from header to cpp file. These methodsJakub Staszak
require call cpp file anyway, so we wouldn't gain anything by keeping them inline. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175579 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19ELF symbol table field st_other support, Jack Carter
excluding visibility bits. Mips (o32 abi) specific e_header setting. EF_MIPS_ABI_O32 needs to be set in the ELF header flags for o32 abi output. Contributer: Reed Kotler git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175569 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19ELF symbol table field st_other support, Jack Carter
excluding visibility bits. Mips (Mips16) specific e_header setting. EF_MIPS_ARCH_ASE_M16 needs to be set in the ELF header flags for Mips16. Contributer: Reed Kotler git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175566 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19ELF symbol table field st_other support, Jack Carter
excluding visibility bits. Mips (MicroMips) specific STO handling . The st_other field settig for STO_MIPS_MICROMIPS Contributer: Zoran Jovanovic git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175564 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19ELF symbol table field st_other support, Jack Carter
excluding visibility bits. Generic STO handling at the Target level. The st_other field of the ELF symbol table is one byte in size. The first 2 bytes are used for generic visibility and are currently handled by llvm. The other six bits are processor specific and need to be set at the target level. A couple of notes: The new static methods for accessing and setting the "other" flags in include/llvm/MC/MCELF.h match the style guide and not the other methods in the file. I don't like the inconsistency, but feel I should follow the prescribed lowerUpper() convention. STO_ value definitions are not specified in gnu land as consistently as the STT_ and STB_ fields. Probably because the latter were defined in a standards doc and the former defined partially in code. I have stuck with the full byte definition of the flags. Contributer: Zoran Jovanovic git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175561 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19Simplify code. No functionality change.Jakub Staszak
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175559 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19Fix a bug in mayHaveSideEffects. Functions that do not return are now ↵Nadav Rotem
considered as instructions with side effects. rdar://13227456 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175553 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19Remove my bogus MapVector::erase() with a narrower ::pop_back(), and add a ↵Douglas Gregor
unit test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175538 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19Fix initialization-order bug in llvm::Support::TimeValue. TimeValue::now() ↵Alexey Samsonov
is explicitly called during module initialization of lib/Support/Process.cpp. It reads the field of global object PosixZeroTime, which is not guaranteed to be initialized at this point. Found by AddressSanitizer with -fsanitize=init-order option. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175509 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19Grammar.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175493 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-18Add some convenience methods for querying function attributes.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175469 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-18Use LLVM_DELETED_FUNCTION rather than '// do not implement' comments.David Blaikie
Also removes some redundant DNI comments on function declarations already using the macro. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175466 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-18Support for HiPE-compatible code emission, patch by Yiannis Tsiouris.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175457 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-18Use llvm::cast instead of reinterpret_cast.Jakub Staszak
Also, GetElementPtrInst::getType() method returns SequentialType now, instead of PointerType. There wasn't any issue yet, so no testcase attached. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175452 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-18Add front/back/erase to MapVector.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175449 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-18Futureproof AttrBuild if we ever have more than 64 attr enum values.Benjamin Kramer
Currently we're at 34. Bitset should compile into virtually the same code as uint64_t here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175437 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-18Add `unsigned DISubprogram::getFlags() const` for DragonEgg.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175430 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-18Add `DIFile DISubprogram::getFile() const` for DragonEgg.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175428 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-18Narrow the return types of a few DIBuilder utility functions.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175421 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-17Add multithreading functions and shutdown to the C API. Patch by MoritzDuncan Sands
Maxeiner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175398 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-17Remove use of reverse iterators in repairIntervalsInRange(). While they wereCameron Zwarich
arguably better than forward iterators for this use case, they are confusing and there are some implementation problems with reverse iterators and MI bundles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175393 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-17Use ArrayRef instead of a reference to a SmallVectorImpl.Cameron Zwarich
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175385 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-17Add support for updating the LiveIntervals of registers used by 'exotic'Cameron Zwarich
terminators that actually have register uses when splitting critical edges. This commit also introduces a method repairIntervalsInRange() on LiveIntervals, which allows for repairing LiveIntervals in a small range after an arbitrary target hook modifies, inserts, and removes instructions. It's pretty limited right now, but I hope to extend it to support all of the things that are done by the convertToThreeAddress() target hooks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175382 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-16Remove comma at the end of enum. Still my favourite C++11 feature.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175372 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-16Turn the enum attributes DenseSet in AttrBuilder into a set of bits.Benjamin Kramer
Avoids malloc and is a lot denser. We lose iteration over target independent attributes, but that's a strange interface anyways and didn't have any users outside of AttrBuilder. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175370 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-16Use const reference instead of vector object when passing an argument toJakub Staszak
updateScheduledPressure method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175362 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-16Add even more constatness in MachineDominators.h.Jakub Staszak
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175358 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-16Add some constantness in Machine Dominators.Jakub Staszak
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175344 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-16Remove trailing spaces.Jakub Staszak
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175343 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-16[ELF] Add STN_UNDEF.Michael J. Spencer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175338 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-16[ms-inline asm] Do not omit the frame pointer if we have ms-inline assembly.Chad Rosier
If the frame pointer is omitted, and any stack changes occur in the inline assembly, e.g.: "pusha", then any C local variable or C argument references will be incorrect. I pass no judgement on anyone who would do such a thing. ;) rdar://13218191 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175334 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-15Pacify -Wnon-virtual-dtorMatt Beaumont-Gay
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175324 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-15Use the 'target-features' and 'target-cpu' attributes to reset the subtarget ↵Bill Wendling
features. If two functions require different features (e.g., `-mno-sse' vs. `-msse') then we want to honor that, especially during LTO. We can do that by resetting the subtarget's features depending upon the 'target-feature' attribute. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175314 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-15capitalize SCEV to match the current naming conventionSebastian Pop
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175302 91177308-0d34-0410-b5e6-96231b3b80d8