summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Fix some more places where dbg_value affected codegen.Dale Johannesen2010-03-054-4/+22
| | | | llvm-svn: 97765
* Stop leaking MDStrings.Jeffrey Yasskin2010-03-041-0/+5
| | | | llvm-svn: 97763
* Drop the ".w" qualifier for t2UXTB16* instructions as there is no 16-bit versionJohnny Chen2010-03-041-1/+27
| | | | | | of either sxtb16 or uxtb16, and the unified syntax does not specify ".w". llvm-svn: 97760
* Fix memcheck-found leaks: one false positive from using new[], and one trueJeffrey Yasskin2010-03-041-9/+28
| | | | | | positive where pointers would be leaked on llvm_shutdown. llvm-svn: 97759
* For SJLJ exception handling, make sure that all calls that are not markedJim Grosbach2010-03-041-31/+36
| | | | | | | | as nounwind are marked with a -1 call-site value. This is necessary to, for example, correctly process exceptions thrown from within an "unexpected" execption handler (see SingleSource/Regression/C++/EH/expection_spec_test.cpp). llvm-svn: 97757
* pr6478: The frame pointer spill frame index is only defined when there is aBob Wilson2010-03-041-1/+3
| | | | | | frame pointer. llvm-svn: 97755
* Run machine licm before machine cse to avoid messing up licm opportunities.Evan Cheng2010-03-041-2/+2
| | | | llvm-svn: 97752
* Avoid cse load instructions unless they are known to be invariant loads.Evan Cheng2010-03-041-10/+36
| | | | llvm-svn: 97747
* pr6480: Don't try producing ld/st-multiple instructions when the address isBob Wilson2010-03-041-0/+5
| | | | | | | | an undef value. This is only going to come up for bugpoint-reduced tests -- correct programs will not access memory at undefined addresses -- so it's not worth the effort of doing anything more aggressive. llvm-svn: 97745
* Rewrite makefiles to explicitly reference DESTDIR to fix bug 3153.Erick Tryzelaar2010-03-041-2/+2
| | | | | | We need this so can not bake DESTDIR into the O'Caml symlinks. llvm-svn: 97743
* Fix the remaining MUL8 and DIV8 to define AX instead of AL,AH.Jakob Stoklund Olesen2010-03-041-8/+11
| | | | | | | | | These instructions technically define AL,AH, but a trick in X86ISelDAGToDAG reads AX in order to avoid reading AH with a REX instruction. Fix PR6489. llvm-svn: 97742
* Fix recognition of 16-bit bswap for C front-ends which emit theDan Gohman2010-03-041-3/+12
| | | | | | clobber registers in a different order. llvm-svn: 97741
* not committing what you test = bad.Chris Lattner2010-03-041-1/+2
| | | | llvm-svn: 97740
* make gep matching in fastisel match the base of the gep as aChris Lattner2010-03-041-1/+8
| | | | | | | register if it isn't possible to match the indexes *and* the base. This fixes some fast isel rejects of load instructions on oggenc. llvm-svn: 97739
* add a statistic for # times fastisel fails.Chris Lattner2010-03-041-0/+6
| | | | llvm-svn: 97738
* Fix PR6360. It's easy for a stub's address to escape to user code, so we can'tJeffrey Yasskin2010-03-041-115/+4
| | | | | | | | | just count references to it from JIT output to decide when to destroy it. This patch waits to destroy the JIT's memory of a stub until the Function it refers to is destroyed. External function stubs and GVIndirectSyms aren't destroyed until the JIT itself is. llvm-svn: 97737
* Fix a typo Duncan noticed.Dan Gohman2010-03-041-1/+1
| | | | llvm-svn: 97735
* Added 32-bit Thumb instructions for Preload Data (PLD, PLDW) and PreloadJohnny Chen2010-03-041-1/+71
| | | | | | | | | | Instruction (PLI) for disassembly only. According to A8.6.120 PLI (immediate, literal), for example, different instructions are generated for "pli [pc, #0]" and "pli [pc, #-0"]. The disassembler solves it by mapping -0 (negative zero) to -1, -1 to -2, ..., etc. llvm-svn: 97731
* Make the 'icmp pred trunc(ext(X)), CST --> icmp pred X, ext(trunc(CST))'Nick Lewycky2010-03-041-24/+5
| | | | | | | | | | transformation much more careful. Truncating binary '01' to '1' sounds like it's safe until you realize that it switched from positive to negative under a signed interpretation, and that depends on the icmp predicate. Also a few miscellaneous cleanups. llvm-svn: 97721
* Fix PR5291, in which a SmallPtrSet iterator was held across an insertion intoJeffrey Yasskin2010-03-041-24/+38
| | | | | | the set. llvm-svn: 97720
* Rename -machine-cse to -enable-machine-cse.Evan Cheng2010-03-041-1/+1
| | | | llvm-svn: 97713
* add a comment.Chris Lattner2010-03-041-0/+1
| | | | llvm-svn: 97709
* Look ahead a bit to determine if a physical register def that is not marked ↵Evan Cheng2010-03-041-6/+61
| | | | | | dead is really alive. This is necessary to catch a lot of common cse opportunities for targets like x86. llvm-svn: 97706
* change the new isel matcher to emit ComplexPattern matchesChris Lattner2010-03-041-3/+7
| | | | | | | | | | as the very last thing before node emission. This should dramatically reduce the number of times we do 'MatchAddress' on X86, speeding up compile time. This also improves comments in the tables and shrinks the table a bit, now down to 80506 bytes for x86. llvm-svn: 97703
* Make sure JITResolvers don't leave any stubs behind. When a JITResolver wasJeffrey Yasskin2010-03-041-59/+105
| | | | | | | destroyed, it could leave stubs in the StubToResolverMap, which would confuse the lookup for subsequent lazy compilations. llvm-svn: 97698
* Fix more code to work properly with vector operands. Based onDan Gohman2010-03-041-5/+5
| | | | | | a patch my Micah Villmow for PR6465. llvm-svn: 97692
* Teach the pic16 target to recognize pic16-*-* triples.John McCall2010-03-041-1/+2
| | | | llvm-svn: 97691
* inline CannotYetSelectIntrinsic into CannotYetSelect and simplify.Chris Lattner2010-03-041-19/+16
| | | | llvm-svn: 97690
* Fix a logic error. An instruction that has a live physical register def ↵Evan Cheng2010-03-031-2/+5
| | | | | | cannot be CSE'ed, but it *can* be used to replace a common subexpression. llvm-svn: 97688
* Remove PHINodeTraits and use MachineInstrExpressionTrait instead.Evan Cheng2010-03-032-39/+2
| | | | llvm-svn: 97687
* Move MachineInstrExpressionTrait::getHashValue() out of line so it can skip ↵Evan Cheng2010-03-031-0/+45
| | | | | | over only virtual register defs. This matches what isEqual() is doing. llvm-svn: 97680
* Re-apply r97667 but with a little bit of thought put into the patch. This ↵Evan Cheng2010-03-031-65/+3
| | | | | | implements a special DenseMapInfo trait for DenseMap<MachineInstr*> that compare the value of the MachineInstr rather than the pointer value. Since the hashing and equality test functions ignore defs it's useful for doing CSE kind optimization. llvm-svn: 97678
* Modified the asm string of 16-bit Thumb MUL instruction so that it prints:Johnny Chen2010-03-031-1/+1
| | | | | | | | MULS <Rdm>, <Rn>, <Rdm> according to A8.6.105 MUL Encoding T1. llvm-svn: 97675
* Revert 97667. It broke a bunch of tests.Dan Gohman2010-03-031-0/+63
| | | | llvm-svn: 97673
* Fix funky indentation and add comments.Evan Cheng2010-03-031-17/+24
| | | | llvm-svn: 97670
* Move DenseMapInfo for MachineInstr* to MachineInstr.hEvan Cheng2010-03-031-63/+0
| | | | llvm-svn: 97667
* Fix a bug in SelectionDAG's ReplaceAllUsesWith in the case whereDan Gohman2010-03-031-4/+45
| | | | | | | | | | CSE and recursive RAUW calls delete a node from the use list, invalidating the use list iterator. There's currently no known way to reproduce this in an unmodified LLVM, however there's no fundamental reason why a SelectionDAG couldn't be formed which would trigger this case. llvm-svn: 97665
* Machine CSE work in progress. It's doing some CSE now. But implicit def of ↵Evan Cheng2010-03-031-24/+61
| | | | | | physical registers are getting in the way. llvm-svn: 97664
* Add MachineRegisterInfo::hasOneUse and hasOneNonDBGUse.Evan Cheng2010-03-032-6/+16
| | | | llvm-svn: 97663
* Fix PR6444, note still doesn't compile libgcc2 all the way, but fixes that ↵Andrew Lenharth2010-03-031-1/+2
| | | | | | error. May not fix it in an ABI complient way. It wasn't clear what gcc does llvm-svn: 97660
* fix incorrect folding of icmp with undef, PR6481.Chris Lattner2010-03-032-5/+4
| | | | llvm-svn: 97659
* Revert...Bill Wendling2010-03-031-3/+3
| | | | | | | --- Reverse-merging r97592 into '.': U lib/CodeGen/TargetLoweringObjectFileImpl.cpp llvm-svn: 97657
* Added 32-bit Thumb instructions LDRT, LDRBT, LDRHT,,LDRSBT, LDRSHT, STRT, STRBT,Johnny Chen2010-03-031-0/+41
| | | | | | and STRHT for disassembly only. llvm-svn: 97655
* add some of the more obscure predicate types to the Chris Lattner2010-03-031-56/+99
| | | | | | Scope accelerator. llvm-svn: 97652
* speed up scope node processing: if the first element of a scopeChris Lattner2010-03-031-38/+141
| | | | | | | | | | | | | entry we're about to process is obviously going to fail, don't bother pushing a scope only to have it immediately be popped. This avoids a lot of scope stack traffic in common cases. Unfortunately, this requires duplicating some of the predicate dispatch. To avoid duplicating the actual logic I pulled each predicate out to its own static function which gets used in both places. llvm-svn: 97651
* introduce a new SwitchTypeMatcher node (which is analogous toChris Lattner2010-03-031-3/+34
| | | | | | | | SwitchOpcodeMatcher) and have DAGISelMatcherOpt form it. This speeds up selection, particularly for X86 which has lots of variants of instructions with only type differences. llvm-svn: 97645
* Make SCEVExpander and LSR more aggressive about hoisting expressions outDan Gohman2010-03-032-51/+248
| | | | | | of loops. llvm-svn: 97642
* Revert r97580; that's not the right way to fix this.Dan Gohman2010-03-031-121/+31
| | | | llvm-svn: 97639
* Work in progress. Finding some cse now.Evan Cheng2010-03-031-4/+88
| | | | llvm-svn: 97635
* remove nvload and two patterns that use it which are Chris Lattner2010-03-031-23/+0
| | | | | | better done by dag combine. llvm-svn: 97633
OpenPOWER on IntegriCloud