summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Make CodePlacementOpt detect special EH control flow byDan Gohman2010-02-181-7/+8
| | | | | | | | | | checking whether AnalyzeBranch disagrees with the CFG directly, rather than looking for EH_LABEL instructions. EH_LABEL instructions aren't always at the end of the block, due to FP_REG_KILL and other things. This fixes an infinite loop compiling MultiSource/Benchmarks/Bullet. llvm-svn: 96611
* Uniformize the way these options are printed. Requested byDuncan Sands2010-02-182-2/+2
| | | | | | Russell Wallace. llvm-svn: 96580
* Remove terminating dot in description. Inconsistency pointedDuncan Sands2010-02-181-1/+1
| | | | | | out by Russell Wallace. llvm-svn: 96579
* Some dag combiner goodness:Evan Cheng2010-02-182-6/+70
| | | | | | | | Transform br (xor (x, y)) -> br (x != y) Transform br (xor (xor (x,y), 1)) -> br (x == y) Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm" llvm-svn: 96556
* Make the non-temporal bit "significant" in MemSDNodes so they aren'tDavid Greene2010-02-171-8/+17
| | | | | | CSE'd or otherwise combined with temporal MemSDNodes. llvm-svn: 96505
* Dead code elimination.Jakob Stoklund Olesen2010-02-172-38/+0
| | | | llvm-svn: 96496
* move isOnlyReachableByFallthrough out of MachineBasicBlock into AsmPrinter,Chris Lattner2010-02-172-31/+34
| | | | | | | and add a sparc implementation that knows about delay slots. Patch by Nathan Keynes! llvm-svn: 96492
* sink special case "cannotyetselect" for intrinsics out of the Chris Lattner2010-02-171-0/+5
| | | | | | tblgen splatted code into the implementation. llvm-svn: 96460
* Removed an early out which was causing the PBQP allocator to not compute ↵Lang Hames2010-02-171-4/+0
| | | | | | live-in sets or run the rewriter. llvm-svn: 96450
* Before setting scope end marker, pay attention to scope begin marker and ↵Devang Patel2010-02-171-1/+12
| | | | | | existing scope end marker, if any. Scope must begin before it ends and nested inlined scope do not truncate surrounding scope. llvm-svn: 96445
* There are two ways of checking for a given type, for example isa<PointerType>(T)Duncan Sands2010-02-163-11/+11
| | | | | | | and T->isPointerTy(). Convert most instances of the first form to the second form. Requested by Chris. llvm-svn: 96344
* Handle DBG_VALUE mixed with labels when doing PHIDale Johannesen2010-02-161-1/+18
| | | | | | | elimination. Before a DBG_VALUE could affect codegen. The solution here is imperfect and not final. llvm-svn: 96318
* Reapply 96294; now that I've gotten around to lookingDale Johannesen2010-02-161-4/+26
| | | | | | | at older buildbot messages, I see the failure predates this patch. llvm-svn: 96307
* Something broke. Hard to believe it was this patchDale Johannesen2010-02-161-26/+4
| | | | | | | but it's harder to believe it's the other candidate, so reverting. Temporarily I hope. llvm-svn: 96303
* Fix a memory leak. Patch by Nicolas Geoffray.Evan Cheng2010-02-151-0/+1
| | | | llvm-svn: 96295
* More handling of DBG_VALUE.Dale Johannesen2010-02-151-4/+26
| | | | llvm-svn: 96294
* Add missed entry to cmake build list fileAnton Korobeynikov2010-02-151-0/+1
| | | | llvm-svn: 96292
* Use ttype encoding consistentlyAnton Korobeynikov2010-02-151-1/+1
| | | | llvm-svn: 96290
* Move TLOF implementations to libCodegen to resolve layering violation.Anton Korobeynikov2010-02-151-0/+874
| | | | llvm-svn: 96288
* It turns out that we emitted completely wrong common EH frame since the ↵Anton Korobeynikov2010-02-151-7/+9
| | | | | | early beginning! The "z" CIE augmentation mark indicates that there is an extra word containing the size of augmentation section. However, even for frames w/o any augmentation data we emitted size uleb! (this is the case of "unwinding through C code"). Thus frame moves information was emitterd completely wrong. llvm-svn: 96287
* Preliminary patch to improve dwarf EH generation - Hooks to return ↵Anton Korobeynikov2010-02-155-93/+109
| | | | | | Personality / FDE / LSDA / TType encoding depending on target / options (e.g. code model / relocation model) - MCIzation of Dwarf EH printer to use encoding information - Stub generation for ELF target (needed for indirect references) - Some other small changes here and there llvm-svn: 96285
* Fix PR6300.Jakob Stoklund Olesen2010-02-151-3/+2
| | | | | | | A virtual register can be used before it is defined in the same MBB if the MBB is part of a loop. Teach the implicit-def pass about this case. llvm-svn: 96279
* Split SelectionDAGISel::IsLegalAndProfitableToFold toEvan Cheng2010-02-151-8/+13
| | | | | | | | IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use. This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses. llvm-svn: 96255
* Add non-temporal flags and remove an assumption of default arguments.David Greene2010-02-1510-174/+295
| | | | llvm-svn: 96240
* Add non-temporal flags to MachineMemOperand.David Greene2010-02-151-2/+3
| | | | llvm-svn: 96226
* Uniformize the names of type predicates: rather than having isFloatTy andDuncan Sands2010-02-153-8/+8
| | | | | | isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris! llvm-svn: 96223
* Ignore DBG_VALUE in a couple more places.Dale Johannesen2010-02-151-1/+4
| | | | llvm-svn: 96207
* Fix PR6283.Jakob Stoklund Olesen2010-02-132-19/+38
| | | | | | | | | | | When coalescing with a physreg, remember to add imp-def and imp-kill when dealing with sub-registers. Also fix a related bug in VirtRegRewriter where substitutePhysReg may reallocate the operand list on an instruction and invalidate the reg_iterator. This can happen when a register is mentioned twice on the same instruction. llvm-svn: 96072
* Teach MachineFrameInfo to track maximum alignment while stack objects are beingEvan Cheng2010-02-131-13/+2
| | | | | | | | | | created. This ensures it's updated at all time. It means targets which perform dynamic stack alignment would know whether it is required and whether frame pointer register cannot be made available register allocation. This is a fix for rdar://7625239. Sorry, I can't create a reasonably sized test case. llvm-svn: 96069
* Besides removing phi cycles that reduce to a single value, also remove deadBob Wilson2010-02-132-21/+72
| | | | | | | | phi cycles. Adjust a few tests to keep dead instructions from being optimized away. This (together with my previous change for phi cycles) fixes Apple radar 7627077. llvm-svn: 96057
* give MCCodeEmitters access to the current MCContext.Chris Lattner2010-02-121-1/+1
| | | | llvm-svn: 96038
* Rewrite handling of DBG_VALUE; previous algorithmDale Johannesen2010-02-121-16/+24
| | | | | | | | | | | didn't handle X = Y<dead> = use X DBG_VALUE(X) I was hoping to avoid this approach as it's slower, but I don't think it can be done. llvm-svn: 95996
* Reapply the new LoopStrengthReduction code, with compile time andDan Gohman2010-02-121-0/+4
| | | | | | | | | | bug fixes, and with improved heuristics for analyzing foreign-loop addrecs. This change also flattens IVUsers, eliminating the stride-oriented groupings, which makes it easier to work with. llvm-svn: 95975
* * Updated the cost matrix normalization proceedure to better handle infinite ↵Lang Hames2010-02-122-13/+21
| | | | | | | | | | costs. * Enabled R1/R2 application for nodes with infinite spill costs in the Briggs heuristic (made safe by the changes to the normalization proceedure). * Removed a redundant header. llvm-svn: 95973
* Add a new pass on machine instructions to optimize away PHI cycles that Bob Wilson2010-02-123-0/+143
| | | | | | | | | | | reduce down to a single value. InstCombine already does this transformation but DAG legalization may introduce new opportunities. This has turned out to be important for ARM where 64-bit values are split up during type legalization: InstCombine is not able to remove the PHI cycles on the 64-bit values but the separate 32-bit values can be optimized. I measured the compile time impact of this (running llc on 176.gcc) and it was not significant. llvm-svn: 95951
* Reapply coalescer fix for better cross-class coalescing.Jakob Stoklund Olesen2010-02-111-1/+1
| | | | | | This time with fixed test cases. llvm-svn: 95938
* Revert functional change. This broke a bunch of tests.Jakob Stoklund Olesen2010-02-111-1/+1
| | | | llvm-svn: 95921
* It is always good to do a cross-class join when the large register has a ↵Jakob Stoklund Olesen2010-02-111-6/+11
| | | | | | | | tiny interval. Also avoid division by zero. llvm-svn: 95917
* Allow for more than one DBG_VALUE targeting theDale Johannesen2010-02-111-4/+4
| | | | | | same dead instruction. llvm-svn: 95890
* Don't allow DBG_VALUE to affect codegen.Dale Johannesen2010-02-111-0/+3
| | | | llvm-svn: 95889
* Use array_pod_sort instead of std::sort for improved code size.Jakob Stoklund Olesen2010-02-111-2/+2
| | | | | | | Use SmallVector instead of std::vector for better speed when indirectbr has few successors. llvm-svn: 95879
* Use .empty() instead of .size().Bill Wendling2010-02-111-2/+2
| | | | llvm-svn: 95871
* Fix to get it to compile.Bill Wendling2010-02-111-1/+1
| | | | llvm-svn: 95840
* Don't print out a default newline when emitting the section offset. There areBill Wendling2010-02-112-2/+1
| | | | | | almost always comments afterwards that need printing. llvm-svn: 95839
* Reuse operand location when updating PHI instructions.Jakob Stoklund Olesen2010-02-111-7/+26
| | | | | | | | Calling RemoveOperand is very expensive on huge PHI instructions. This makes early tail duplication run twice as fast on the Firefox JavaScript interpreter. llvm-svn: 95832
* Remove duplicate successors from indirectbr instructions before building the ↵Jakob Stoklund Olesen2010-02-111-2/+8
| | | | | | | | | machine CFG. This makes early tail duplication run 60 times faster when compiling the Firefox JavaScript interpreter, see PR6186. llvm-svn: 95831
* The previous fix of widening divides that trap was too fragile as it depends ↵Mon P Wang2010-02-102-3/+107
| | | | | | | | | | | on custom lowering and requires that certain types exist in ValueTypes.h. Modified widening to check if an op can trap and if so, the widening algorithm will apply only the op on the defined elements. It is safer to do this in widening because the optimizer can't guarantee removing unused ops in some cases. llvm-svn: 95823
* Ignore debug info one more place during coalescing.Dale Johannesen2010-02-101-0/+2
| | | | llvm-svn: 95819
* Delete dead PHI machine instructions. These can be created due to typeBob Wilson2010-02-101-1/+1
| | | | | | | | | legalization even when the IR-level optimizer has removed dead phis, such as when the high half of an i64 value is unused on a 32-bit target. I had to adjust a few test cases that had dead phis. This is a partial fix for Radar 7627077. llvm-svn: 95816
* Skip debug info in a couple of places.Dale Johannesen2010-02-101-3/+7
| | | | llvm-svn: 95814
OpenPOWER on IntegriCloud