summaryrefslogtreecommitdiffstats
path: root/llvm/include
Commit message (Collapse)AuthorAgeFilesLines
* Removes template magic to build up containers.Manuel Klimek2012-01-171-124/+130
| | | | | | Instead, we now put the attributes of the container into members. llvm-svn: 148302
* Renamed MachineScheduler to ScheduleTopDownLive.Andrew Trick2012-01-172-2/+2
| | | | | | Responding to code review. llvm-svn: 148290
* Moving options declarations around.Andrew Trick2012-01-171-4/+0
| | | | | | More short term hackery until we have a way to configure passes that work on LiveIntervals. llvm-svn: 148289
* add some missing const qualifiers.Chris Lattner2012-01-171-2/+2
| | | | llvm-svn: 148274
* Add portable bit mask operations to BitVector.Jakob Stoklund Olesen2012-01-171-0/+63
| | | | | | | | | | | | BitVector uses the native word size for its internal representation. That doesn't work well for literal bit masks in source code. This patch adds BitVector operations to efficiently apply literal bit masks specified as arrays of uint32_t. Since each array entry always holds exactly 32 bits, these portable bit masks can be source code literals, probably produced by TableGen. llvm-svn: 148272
* ExecutionEngine interface to re-map addresses for engines that support it.Jim Grosbach2012-01-162-3/+19
| | | | llvm-svn: 148264
* Extract method for detecting constant unallocatable physregs.Jakob Stoklund Olesen2012-01-161-1/+9
| | | | | | It is safe to move uses of such registers. llvm-svn: 148259
* MCJIT support for non-function sections.Jim Grosbach2012-01-162-2/+28
| | | | | | | | | | | | | | | | Move to a by-section allocation and relocation scheme. This allows better support for sections which do not contain externally visible symbols. Flesh out the relocation address vs. local storage address separation a bit more as well. Remote process JITs use this to tell the relocation resolution code where the code will live when it executes. The startFunctionBody/endFunctionBody interfaces to the JIT and the memory manager are deprecated. They'll stick around for as long as the old JIT does, but the MCJIT doesn't use them anymore. llvm-svn: 148258
* Add a new kind of MachineOperand: MO_RegisterMask.Jakob Stoklund Olesen2012-01-162-0/+43
| | | | | | | | | | | | | | | | | | | | | Register masks will be used as a compact representation of large clobber lists. Currently, an x86 call instruction has some 40 operands representing call-clobbered registers. That's more than 1kB of useless operands per call site. A register mask operand references a bit mask of call-preserved registers, everything else is clobbered. The bit mask will typically come from TargetRegisterInfo::getCallPreservedMask(). By abandoning ImplicitDefs for call-clobbered registers, it also becomes possible to share call instruction descriptions between calling conventions, and we can get rid of the WINCALL* instructions. This patch introduces the new operand kind. Future patches will add RegMask support to target-independent passes before finally the fixed clobber lists can be removed from call instruction descriptions. llvm-svn: 148250
* Return an ArrayRef from ShuffleVectorSDNode::getMask and push it through ↵Benjamin Kramer2012-01-151-4/+2
| | | | | | CodeGen. llvm-svn: 148218
* Remove SetWorkingDirectory from the Process interface. Nothing in LLVMChandler Carruth2012-01-151-3/+0
| | | | | | | | | | | | or Clang is using this, and it would be hard to use it correctly given the thread hostility of the function. Also, it never checked the return which is rather dangerous with chdir. If someone was in fact using this, please let me know, as well as what the usecase actually is so that I can add it back and make it more correct and secure to use. (That said, it's never going to be "safe" per-se, but we could at least document the risks...) llvm-svn: 148211
* Add TRI::getCallPreservedMask() hook.Jakob Stoklund Olesen2012-01-141-1/+22
| | | | | | | | | | | | | | | | | | | | | The hook returns a bit-mask of call-preserved registers that will eventually replace the current list of implicit defs on call instructions. This will make it possible to support multiple calling conventions without duplicating call instruction descriptors. The call-preserved mask is slightly different from the list returned by the getCalleeSavedRegs() hook, it includes all aliases that are preserved by calls. The hook takes a CallingConv::ID argument instead of a MachineFunction pointer, so it can provide information about calls to extern functions, and even indirect function calls. TRI::getCalleeSavedRegs() returns information about the function currently being compiled. TRI::getCallPreservedMask() returns information about the functions it is calling. llvm-svn: 148165
* Fixed comment. Thanks Duncan!Pete Cooper2012-01-131-1/+1
| | | | llvm-svn: 148123
* Added the MachineSchedulerPass skeleton.Andrew Trick2012-01-133-0/+8
| | | | llvm-svn: 148105
* whitespaceAndrew Trick2012-01-131-3/+3
| | | | llvm-svn: 148104
* Delete CodeInit and CodeRecTy from TableGen.Jakob Stoklund Olesen2012-01-131-87/+0
| | | | | | | The code type was always identical to a string anyway. Now it is simply a synonym. The code literal syntax [{...}] is still valid. llvm-svn: 148092
* Use uniqued StringInit pointers for lookups.Jakob Stoklund Olesen2012-01-131-10/+13
| | | | | | | This avoids a gazillion StringMap and dynamic_cast calls, making TableGen run 3x faster. llvm-svn: 148091
* Added MVT::v2f16Pete Cooper2012-01-122-20/+28
| | | | llvm-svn: 148067
* Allow targets to select source order pre-RA scheduler.Evan Cheng2012-01-121-0/+1
| | | | llvm-svn: 148033
* Move Sched::Preference out of TargetMachine.h where it is not referenced.Evan Cheng2012-01-123-10/+10
| | | | llvm-svn: 148014
* Re-fix the issue Bill fixed in r147899 in a slightly different way, which ↵Eli Friedman2012-01-111-10/+0
| | | | | | doesn't abuse the semantics of linker_private. We don't really want to merge any string constant with a weak_odr global. llvm-svn: 147971
* Add XOP Intrinsics and testsJan Sjödin2012-01-111-0/+529
| | | | llvm-svn: 147949
* Clarified the SCEV getSmallConstantTripCount interface with in-your-face ↵Andrew Trick2012-01-111-5/+10
| | | | | | | | comments. This interface is misleading and dangerous, but it is actually what we need for unrolling. llvm-svn: 147926
* Detect when a value is undefined on an edge to a landing pad.Jakob Stoklund Olesen2012-01-111-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider this code: int h() { int x; try { x = f(); g(); } catch (...) { return x+1; } return x; } The variable x is undefined on the first edge to the landing pad, but it has the f() return value on the second edge to the landing pad. SplitAnalysis::getLastSplitPoint() would assume that the return value from f() was live into the landing pad when f() throws, which is of course impossible. Detect these cases, and treat them as if the landing pad wasn't there. This allows spill code to be inserted after the function call to f(). <rdar://problem/10664933> llvm-svn: 147912
* Exclusively use SplitAnalysis::getLastSplitPoint().Jakob Stoklund Olesen2012-01-111-6/+0
| | | | | | | | | Delete the alternative implementation in LiveIntervalAnalysis. These functions computed the same thing, but SplitAnalysis caches the result. llvm-svn: 147911
* If the global variable is removed by the linker, then don't constant merge itBill Wendling2012-01-111-0/+10
| | | | | | | | | | | | | | with other symbols. An object in the __cfstring section is suppoed to be filled with CFString objects, which have a pointer to ___CFConstantStringClassReference followed by a pointer to a __cstring. If we allow the object in the __cstring section to be merged with another global, then it could end up in any section. Because the linker is going to remove these symbols in the final executable, we shouldn't bother to merge them. <rdar://problem/10564621> llvm-svn: 147899
* Let asm parser query asm syntax dialect.Devang Patel2012-01-101-0/+2
| | | | llvm-svn: 147880
* This is the matching change for the data structure name changes for theKevin Enderby2012-01-102-14/+12
| | | | | | | functional change in r147860 to use DW_TAG_label's instead TAG_subprogram's. This only changes names and updates comments. No functional change. llvm-svn: 147877
* Teach the triple library about the androideabi environment.Chandler Carruth2012-01-101-1/+2
| | | | | | Patch by Evgeniy Stepanov. llvm-svn: 147871
* Add 'llvm_unreachable' to passify GCC's understanding of the constraintsChandler Carruth2012-01-102-0/+3
| | | | | | | | of several newly un-defaulted switches. This also helps optimizers (including LLVM's) recognize that every case is covered, and we should assume as much. llvm-svn: 147861
* Remove unnecessary default cases in switches that cover all enum values.David Blaikie2012-01-102-3/+0
| | | | llvm-svn: 147855
* Enable LSR IV Chains with sufficient heuristics.Andrew Trick2012-01-101-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | These heuristics are sufficient for enabling IV chains by default. Performance analysis has been done for i386, x86_64, and thumbv7. The optimization is rarely important, but can significantly speed up certain cases by eliminating spill code within the loop. Unrolled loops are prime candidates for IV chains. In many cases, the final code could still be improved with more target specific optimization following LSR. The goal of this feature is for LSR to make the best choice of induction variables. Instruction selection may not completely take advantage of this feature yet. As a result, there could be cases of slight code size increase. Code size can be worse on x86 because it doesn't support postincrement addressing. In fact, when chains are formed, you may see redundant address plus stride addition in the addressing mode. GenerateIVChains tries to compensate for the common cases. On ARM, code size increase can be mitigated by using postincrement addressing, but downstream codegen currently misses some opportunities. llvm-svn: 147826
* Remove the logging streamer.Rafael Espindola2012-01-101-6/+0
| | | | llvm-svn: 147820
* Split AsmParser into two components - AsmParser and AsmParserVariantDevang Patel2012-01-091-1/+13
| | | | | | | AsmParser holds info specific to target parser. AsmParserVariant holds info specific to asm variants supported by the target. llvm-svn: 147787
* Don't print an unused label before .cfi_endproc.Rafael Espindola2012-01-092-1/+4
| | | | llvm-svn: 147763
* Don't print a label before .cfi_startproc when we don't need to. This makesRafael Espindola2012-01-072-1/+4
| | | | | | the produce assembly when using CFI just a bit more readable. llvm-svn: 147743
* Make clever use of alignment and padding to shrink GlobalValue.Benjamin Kramer2012-01-071-4/+3
| | | | | | -8 bytes on x86_64, no change on x86. llvm-svn: 147742
* Remove VectorExtras. This unused helper was written for a type of API that ↵Benjamin Kramer2012-01-071-41/+0
| | | | | | is discouraged now. llvm-svn: 147738
* Port the trick to skip the check for empty buckets from StringMap to DenseMap.Benjamin Kramer2012-01-071-9/+9
| | | | | | This should fix the odd behavior that find() is slower than lookup(). llvm-svn: 147731
* Split Finish into Finish and FinishImpl to have a common place to do end ofRafael Espindola2012-01-073-3/+7
| | | | | | | | file error checking. Use that to error on an unfinished cfi_startproc. The error is not nice, but is already better than a segmentation fault. llvm-svn: 147717
* Added a late machine instruction copy propagation pass. This catchesEvan Cheng2012-01-072-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | opportunities that only present themselves after late optimizations such as tail duplication .e.g. ## BB#1: movl %eax, %ecx movl %ecx, %eax ret The register allocator also leaves some of them around (due to false dep between copies from phi-elimination, etc.) This required some changes in codegen passes. Post-ra scheduler and the pseudo-instruction expansion passes have been moved after branch folding and tail merging. They were before branch folding before because it did not always update block livein's. That's fixed now. The pass change makes independently since we want to properly schedule instructions after branch folding / tail duplication. rdar://10428165 rdar://10640363 llvm-svn: 147716
* Extended replaceCongruentPhis to handle mixed phi types.Andrew Trick2012-01-071-1/+4
| | | | llvm-svn: 147707
* Expose isNonConstantNegative to users of ScalarEvolution.Andrew Trick2012-01-071-0/+4
| | | | llvm-svn: 147700
* Put all IVUsers in the processed set. Allow querying IVUsers with ↵Andrew Trick2012-01-061-0/+4
| | | | | | isIVUserOrOperand. llvm-svn: 147686
* Kill ObjectCodeEmitter and BinaryObject, they were unused and superseded by MC.Benjamin Kramer2012-01-052-524/+0
| | | | llvm-svn: 147618
* A small re-factored JIT/MCJIT::getPointerToNamedFunction(), so it could be ↵Danil Malyshev2012-01-051-0/+11
| | | | | | called with the base class. llvm-svn: 147610
* revert r147542 after comments from Joerg SonnenbergerSebastian Pop2012-01-055-20/+0
| | | | llvm-svn: 147608
* allow clients of SmallSet to specify their own comparison function for the set.Chris Lattner2012-01-051-2/+2
| | | | | | Patch by Stepan Dyatkovskiy! llvm-svn: 147607
* comment cleanupAndrew Trick2012-01-051-1/+1
| | | | llvm-svn: 147585
* Freeze reserved registers before starting register allocation.Jakob Stoklund Olesen2012-01-051-1/+38
| | | | | | | | | | | The register allocators don't currently support adding reserved registers while they are running. Extend the MRI API to keep track of the set of reserved registers when register allocation started. Target hooks like hasFP() and needsStackRealignment() can look at this set to avoid reserving more registers during register allocation. llvm-svn: 147577
OpenPOWER on IntegriCloud