summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Print a space between the comment character and the text.Dan Gohman2009-12-041-4/+6
| | | | llvm-svn: 90621
* In TAG_subrange_type, uppder bound is zero indexed. Devang Patel2009-12-041-2/+1
| | | | llvm-svn: 90617
* Use new interfaces to print spill size.David Greene2009-12-041-6/+9
| | | | llvm-svn: 90611
* Handle recursive PHI's.Evan Cheng2009-12-041-18/+18
| | | | llvm-svn: 90575
* Add a pre-regalloc tail duplication pass.Evan Cheng2009-12-042-99/+226
| | | | llvm-svn: 90567
* Don't try to be cute with undef optimization here. Let ProcessImplicitDefs ↵Evan Cheng2009-12-041-27/+17
| | | | | | handle it. llvm-svn: 90566
* Add note about a subtle bug in this code. Does not effect the mainDuncan Sands2009-12-041-0/+6
| | | | | | architectures that LLVM targets, because they don't use this code. llvm-svn: 90564
* Also attempt trivial coalescing for live intervals that end in a copy.Jakob Stoklund Olesen2009-12-042-51/+95
| | | | | | | | | | | | | The coalescer is supposed to clean these up, but when setting up parameters for a function call, there may be copies to physregs. If the defining instruction has been LICM'ed far away, the coalescer won't touch it. The register allocation hint does not always work - when the register allocator is backtracking, it clears the hints. This patch takes care of a few more cases that r90163 missed. llvm-svn: 90502
* - If the reaching definition is an undef and the use is a PHI, add the ↵Evan Cheng2009-12-041-11/+15
| | | | | | | | implicit_def to the end of the source block. - When reaching value is replaced with another, update the cache as well. llvm-svn: 90501
* Insert composite type DIE into the map before processing type fields. This ↵Devang Patel2009-12-031-1/+1
| | | | | | allows fields to find their context DIE from the map. llvm-svn: 90498
* Handle undef values properly.Evan Cheng2009-12-031-15/+38
| | | | llvm-svn: 90489
* Watch out for PHI instruction with no source operands.Evan Cheng2009-12-031-0/+2
| | | | llvm-svn: 90488
* Fix ExpandShiftWithUnknownAmountBit, which was completely bogus.Duncan Sands2009-12-031-37/+38
| | | | | | | | | | | | Pointed out by Javier Martinez (who also provided a patch). Since this logic is not used on (for example) x86, I guess nobody noticed. Tested by generating SHL, SRL, SRA on various choices of i64 for all possible shift amounts, and comparing with gcc. Since I did this on x86-32, I had to force the use of ExpandShiftWithUnknownAmountBit. What I'm saying here is that I don't have a testcase I can add to the repository. llvm-svn: 90482
* Clean up some loop logic.Jakob Stoklund Olesen2009-12-031-14/+6
| | | | llvm-svn: 90481
* Add support to emit debug info for virtual functions and virtual base classes.Devang Patel2009-12-032-3/+33
| | | | llvm-svn: 90474
* Teach tail duplication to update SSA form. Work in progress.Evan Cheng2009-12-031-3/+134
| | | | llvm-svn: 90432
* Don't pull vector sext through both hands of a logical operation, since ↵Nate Begeman2009-12-031-2/+8
| | | | | | | | | doing so prevents the fusion of vector sext and setcc into vsetcc. Add a testcase for the above transformation. Fix a bogus use of APInt noticed while tracking this down. llvm-svn: 90423
* Don't call getValueType() on a null SDValueJakob Stoklund Olesen2009-12-031-1/+2
| | | | llvm-svn: 90415
* Fill out codegen SSA updater. It's not yet tested.Evan Cheng2009-12-032-8/+243
| | | | llvm-svn: 90395
* Don't hang on to pointers or references after vector::push_back.Jakob Stoklund Olesen2009-12-031-6/+3
| | | | | | | The MO reference to a MachineOperand can be invalidated by MachineInstr::addOperand. Don't even use it for debugging. llvm-svn: 90381
* Emit method definition DIE at module level (even for methods with inlined ↵Devang Patel2009-12-032-28/+90
| | | | | | functino body at soure level) so that the debugger can invoke it. This fixes many test failures in gdb test suite. llvm-svn: 90375
* improve portability to avoid conflicting with std::next in c++'0x.Chris Lattner2009-12-0320-64/+70
| | | | | | Patch by Howard Hinnant! llvm-svn: 90365
* Fix CMake makefilesDouglas Gregor2009-12-021-0/+1
| | | | llvm-svn: 90354
* Skeleton for MachineInstr level SSA updater.Evan Cheng2009-12-021-0/+108
| | | | llvm-svn: 90353
* Add MaxStackAlignment.cpp to CMakeJim Grosbach2009-12-021-0/+1
| | | | llvm-svn: 90337
* Factor the stack alignment calculations out into a target independent pass.Jim Grosbach2009-12-021-0/+70
| | | | | | No functionality change. llvm-svn: 90336
* Don't count PHI instructions toward the limit for tail duplicating a block.Bob Wilson2009-12-021-4/+6
| | | | llvm-svn: 90326
* Clarify that DIEString does not keep a copy of the string.Devang Patel2009-12-022-3/+3
| | | | llvm-svn: 90318
* Reuse existing subprogram DIE.Devang Patel2009-12-011-2/+7
| | | | llvm-svn: 90281
* Fix PR5391: support early clobber physical register def tied with a use (ewwww)Evan Cheng2009-12-012-4/+12
| | | | | | | | - A valno should be set HasRedefByEC if there is an early clobber def in the middle of its live ranges. It should not be set if the def of the valno is defined by an early clobber. - If a physical register def is tied to an use and it's an early clobber, it just means the HasRedefByEC is set since it's still one continuous live range. - Add a couple of missing checks for HasRedefByEC in the coalescer. In general, it should not coalesce a vr with a physical register if the physical register has a early clobber def somewhere. This is overly conservative but that's the price for using such a nasty inline asm "feature". llvm-svn: 90269
* Add edge source labels to SelectionDAG graphs, now that the graph printingDan Gohman2009-12-011-0/+5
| | | | | | | framework omits differentiated edge sources in the case where the labels are empty strings. llvm-svn: 90254
* Minor cleanups.Dan Gohman2009-12-011-9/+9
| | | | llvm-svn: 90253
* Trim an unnecessary #include.Dan Gohman2009-12-011-1/+0
| | | | llvm-svn: 90252
* Clear function specific containers while processing end of a function, even ↵Devang Patel2009-12-011-9/+7
| | | | | | if DW_TAG_subprogram for current function is not found. llvm-svn: 90247
* Move PHIElimination::isLiveOut method to LiveVariables.Jakob Stoklund Olesen2009-12-013-54/+47
| | | | | | | | We want LiveVariables clients to use methods rather than accessing the getVarInfo data structure directly. That way it will be possible to change the LiveVariables representation. llvm-svn: 90240
* Use CFG connectedness as a secondary sort key when deciding the order of ↵Jakob Stoklund Olesen2009-12-011-3/+13
| | | | | | | | | copy coalescing. This means that well connected blocks are copy coalesced before the less connected blocks. Connected blocks are more difficult to coalesce because intervals are more complicated, so handling them first gives a greater chance of success. llvm-svn: 90194
* Devang pointed out that this code should use DIScope instead ofDan Gohman2009-12-011-3/+3
| | | | | | DICompileUnit. This code now prints debug filenames successfully. llvm-svn: 90181
* Fix PR5614: parts of a physical register def may be killed the rest.Evan Cheng2009-12-011-1/+47
| | | | llvm-svn: 90180
* If pointer type has a name then do not ignore the name.Devang Patel2009-11-301-1/+1
| | | | llvm-svn: 90172
* New virtual registers created for spill intervals should inherit allocation ↵Jakob Stoklund Olesen2009-11-301-0/+6
| | | | | | | | | | | | | | | | | | | hints from the original register. This helps us avoid silly copies when rematting values that are copied to a physical register: leaq _.str44(%rip), %rcx movq %rcx, %rsi call _strcmp becomes: leaq _.str44(%rip), %rsi call _strcmp The coalescer will not touch the movq because that would tie down the physical register. llvm-svn: 90163
* Reprioritize tests for tail duplication to be aggressive about indirectBob Wilson2009-11-301-3/+3
| | | | | | | | branches even when optimizing for code size. Unless we find evidence to the contrary in the future, the special treatment for indirect branches does not have a significant effect on code size, and performance still matters with -Os. llvm-svn: 90147
* Remove isProfitableToDuplicateIndirectBranch target hook. It is profitableBob Wilson2009-11-301-2/+1
| | | | | | | | | for all the processors where I have tried it, and even when it might not help performance, the cost is quite low. The opportunities for duplicating indirect branches are limited by other factors so code size does not change much due to tail duplicating indirect branches aggressively. llvm-svn: 90144
* Fix last DOTGraphTraits problems in CompilationGraph.Tobias Grosser2009-11-301-1/+1
| | | | llvm-svn: 90136
* Remove ShortNames from getNodeLabel in DOTGraphTraitsTobias Grosser2009-11-303-23/+20
| | | | llvm-svn: 90134
* Instantiate DefaultDOTGraphTraitsTobias Grosser2009-11-303-2/+11
| | | | llvm-svn: 90133
* Added support to allow clients to custom widen. For X86, custom widen ↵Mon P Wang2009-11-305-56/+92
| | | | | | | | | vectors for divide/remainder since these operations can trap by unroll them and adding undefs for the resulting vector. llvm-svn: 90108
* Rename new TailDuplicationPass to avoid name conflict with the old one.Bob Wilson2009-11-262-12/+12
| | | | llvm-svn: 89968
* When all defs of a vr are implicit_def, delete all of the defs.Evan Cheng2009-11-261-2/+6
| | | | llvm-svn: 89905
* Split tail duplication into a separate pass. This is needed to avoidBob Wilson2009-11-266-239/+310
| | | | | | | | | running tail duplication when doing branch folding for if-conversion, and we also want to be able to run tail duplication earlier to fix some reg alloc problems. Move the CanFallThrough function from BranchFolding to MachineBasicBlock so that it can be shared by TailDuplication. llvm-svn: 89904
* ProcessImplicitDefs should watch out for invalidated iterator and extra ↵Evan Cheng2009-11-251-14/+45
| | | | | | implicit operands on copies. llvm-svn: 89880
OpenPOWER on IntegriCloud