summaryrefslogtreecommitdiffstats
path: root/llvm/include
Commit message (Collapse)AuthorAgeFilesLines
* Protect SmallVectorImpl's constructor and a few other methods that aren't ↵Benjamin Kramer2012-01-201-4/+6
| | | | | | meant to be public. llvm-svn: 148550
* SCEVExpander fixes. Affects LSR and indvars.Andrew Trick2012-01-202-10/+19
| | | | | | | | | | | | | | | | LSR has gradually been improved to more aggressively reuse existing code, particularly existing phi cycles. This exposed problems with the SCEVExpander's sloppy treatment of its insertion point. I applied some rigor to the insertion point problem that will hopefully avoid an endless bug cycle in this area. Changes: - Always used properlyDominates to check safe code hoisting. - The insertion point provided to SCEV is now considered a lower bound. This is usually a block terminator or the use itself. Under no cirumstance may SCEVExpander insert below this point. - LSR is reponsible for finding a "canonical" insertion point across expansion of different expressions. - Robust logic to determine whether IV increments are in "expanded" form and/or can be safely hoisted above some insertion point. Fixes PR11783: SCEVExpander assert. llvm-svn: 148535
* Add a new form of MCOperand, for representing sub-instructions. This is ↵Owen Anderson2012-01-191-1/+20
| | | | | | intended for supporting bundles through the MC layer, rather than lowering them pre-MC as we currently do for Thumb2 IT blocks. Since these sub-instruction operands hold pointers to the sub-instructions, it is the responsibility of the target's AsmPrinter to provide storage for them for the duration of the EmitInstruction() call. llvm-svn: 148492
* More bundle related API additions.Evan Cheng2012-01-193-0/+10
| | | | llvm-svn: 148465
* Introduce a new MutableArrayRef class, which refers to a series of mutableChris Lattner2012-01-191-1/+83
| | | | | | T's that are consequtively in memory. llvm-svn: 148463
* Enhance finalizeBundle to return end of bundle iterator because it makes sense.Evan Cheng2012-01-191-2/+3
| | | | llvm-svn: 148462
* Added methods to get the live range immediately before a given slot. ↵Lang Hames2012-01-191-0/+8
| | | | | | Intended to parallel the getVNInfoBefore method. llvm-svn: 148453
* - Slight change to finalizeBundle() interface. LastMI is not exclusive (pointingEvan Cheng2012-01-191-1/+8
| | | | | | | | | | | to instruction right after the last instruction in the bundle. - Add a finalizeBundle() variant that doesn't specify LastMI. Instead, the code will find the last instruction in the bundle by following the 'InsideBundle' marker. This is useful in case bundles are formed early (i.e. during MI scheduling) but finalized later (i.e. after register allocator has finished rewriting virtual registers with physical registers). llvm-svn: 148444
* Add a TargetOption for disabling tail calls.Nick Lewycky2012-01-191-2/+7
| | | | llvm-svn: 148442
* Rename Finalizebundle to finalizeBundle to conform to coding guideline.Evan Cheng2012-01-191-2/+2
| | | | llvm-svn: 148440
* Add a RegisterMaskSDNode class.Jakob Stoklund Olesen2012-01-183-1/+19
| | | | | | | | | | | This SelectionDAG node will be attached to call nodes by LowerCall(), and eventually becomes a MO_RegisterMask MachineOperand on the MachineInstr representing the call instruction. LowerCall() will attach a register mask that depends on the calling convention. llvm-svn: 148436
* Add support for the gnueabihf environment. Patch by Sylvestre Ledru.Rafael Espindola2012-01-181-0/+1
| | | | llvm-svn: 148434
* Document the fact that the selection dag changes the vselect condition typeNadav Rotem2012-01-181-0/+3
| | | | llvm-svn: 148411
* Tidy up. MCAsmBackend naming conventions.Jim Grosbach2012-01-181-9/+9
| | | | llvm-svn: 148400
* Move some ARM specific MCAssmebler bits into the ARMAsmBackend.Jim Grosbach2012-01-181-0/+10
| | | | llvm-svn: 148364
* Add a CoveredBySubRegs property to Register descriptions.Jakob Stoklund Olesen2012-01-181-0/+6
| | | | | | | | | | | | | | | | When set, this bit indicates that a register is completely defined by the value of its sub-registers. Use the CoveredBySubRegs property to infer which super-registers are call-preserved given a list of callee-saved registers. For example, the ARM registers D8-D15 are callee-saved. This now automatically implies that Q4-Q7 are call-preserved. Conversely, Win64 callees save XMM6-XMM15, but the corresponding YMM6-YMM15 registers are not call-preserved because they are not fully defined by their sub-registers. llvm-svn: 148363
* Remove unneeded include.Jakub Staszak2012-01-171-1/+0
| | | | llvm-svn: 148360
* Add TableGen support for callee saved registers.Jakob Stoklund Olesen2012-01-171-0/+11
| | | | | | | | | Targets can now add CalleeSavedRegs defs to their *CallingConv.td file. TableGen will use this to create a *_SaveList array suitable for returning from getCalleeSavedRegs() as well as a *_RegMask bit mask suitable for returning from getCallPreservedMask(). llvm-svn: 148346
* Move includes to the .cpp file.Jakub Staszak2012-01-171-2/+0
| | | | llvm-svn: 148342
* Trailing spaces.Jakub Staszak2012-01-171-22/+21
| | | | llvm-svn: 148332
* Add a new ObjC ARC optimization pass to eliminate unneededDan Gohman2012-01-173-0/+8
| | | | | | autorelease push+pop pairs. llvm-svn: 148330
* Add a new PassManagerBuilder customization point,Dan Gohman2012-01-171-0/+4
| | | | | | | EP_ModuleOptimizerEarly, to allow passes to be added before the main ModulePass optimizers. llvm-svn: 148329
* 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
OpenPOWER on IntegriCloud