summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Propagate LeftDistributes and RightDistributes into their only uses.Duncan Sands2010-11-231-6/+4
| | | | | | Stylistic improvement suggested by Frits van Bommel. llvm-svn: 120026
* Fix typo pointed out by Frits van Bommel and Marius Wachtler.Duncan Sands2010-11-231-1/+1
| | | | llvm-svn: 120025
* Exploit distributive laws (eg: And distributes over Or, Mul over Add, etc) in aDuncan Sands2010-11-234-42/+133
| | | | | | | | | | | | fairly systematic way in instcombine. Some of these cases were already dealt with, in which case I removed the existing code. The case of Add has a bunch of funky logic which covers some of this plus a few variants (considers shifts to be a form of multiplication), which I didn't touch. The simplification performed is: A*B+A*C -> A*(B+C). The improvement is to do this in cases that were not already handled [such as A*B-A*C -> A*(B-C), which was reported on the mailing list], and also to do it more often by not checking for "only one use" if "B+C" simplifies. llvm-svn: 120024
* Division by pow-of-2 is not cheap on SPU, do it with Kalle Raiskila2010-11-231-2/+0
| | | | | | shifts. llvm-svn: 120022
* Implement the rex64 prefix.Rafael Espindola2010-11-232-1/+5
| | | | llvm-svn: 120017
* Expand a little on the description of what InstructionSimplify does.Duncan Sands2010-11-231-2/+4
| | | | llvm-svn: 120016
* Clarify that constant folding of instructions applies when all operandsDuncan Sands2010-11-231-10/+11
| | | | | | | | are constant. There was in fact one exception to this (phi nodes) - so remove that exception (InstructionSimplify handles this so there should be no loss). llvm-svn: 120015
* Invalidate the layout on any relaxation, not just Instructions. Bug found by ↵Rafael Espindola2010-11-231-9/+11
| | | | | | | | David Meyer. While here, remove unused argument and rename UpdateForSlide to Invalidate. llvm-svn: 120009
* Produce a relocation for pcrel absolute values. Based on a patch by David Meyer.Rafael Espindola2010-11-231-8/+12
| | | | llvm-svn: 120006
* Revert functionality doug added in r98575 that was neverChris Lattner2010-11-231-15/+11
| | | | | | documented and only used by some clang stuff I just removed. llvm-svn: 120002
* Reuse data fragments while lowering. Patch by David Meyer.Rafael Espindola2010-11-231-26/+77
| | | | llvm-svn: 119999
* Renaming ISD::BIT_CONVERT to ISD::BITCAST to better reflect the LLVM IR concept.Wesley Peck2010-11-2327-1123/+1120
| | | | llvm-svn: 119990
* add a 'LLVMConstIntOfArbitraryPrecision' api to the C api,Chris Lattner2010-11-231-0/+8
| | | | | | patch by Greg Pfeil! llvm-svn: 119989
* duncan's spider sense was right, I completely reversed the conditionChris Lattner2010-11-231-8/+8
| | | | | | on this instcombine xform. This fixes a miscompilation of 403.gcc. llvm-svn: 119988
* Fixed some style issues (no _, no spc after !)Jason W Kim2010-11-221-6/+6
| | | | llvm-svn: 119986
* Remove duplicated constants. Thanks to Jason for noticing it.Rafael Espindola2010-11-222-42/+26
| | | | llvm-svn: 119985
* InstCombine: Implement X - A*-B -> X + A*B.Benjamin Kramer2010-11-222-16/+9
| | | | llvm-svn: 119984
* Make the <ARCH>ELFObjectWriter statics privateJason W Kim2010-11-221-0/+3
| | | | llvm-svn: 119982
* Fix misplaced statics.Jason W Kim2010-11-221-6/+5
| | | | llvm-svn: 119981
* Kill trailing whitespaceJason W Kim2010-11-221-3/+3
| | | | llvm-svn: 119979
* Refactor the ELFRelocationEntry (pull up) and move the arch-specific statics ↵Jason W Kim2010-11-221-46/+54
| | | | | | | | | | to inside the class where it belongs. Next step is to rationally break apart the RecordRelocation() Probably the step will be to have 1 member function for ech slot of the ELFRelocationEntry() llvm-svn: 119978
* Fix epilogue codegen to avoid leaving the stack pointer in an invalidEvan Cheng2010-11-223-23/+50
| | | | | | | | | | | | | | | | | state. Previously Thumb2 would restore sp from fp like this: mov sp, r7 sub, sp, #4 If an interrupt is taken after the 'mov' but before the 'sub', callee-saved registers might be clobbered by the interrupt handler. Instead, try restoring directly from sp: add sp, #4 Or, if necessary (with VLA, etc.) use a scratch register to compute sp and then restore it: sub.w r4, r7, #8 mov sp, r7 rdar://8465407 llvm-svn: 119977
* If a GEP index simply advances by multiples of a type of zero size,Duncan Sands2010-11-222-15/+25
| | | | | | then replace the index with zero. llvm-svn: 119974
* Fix a bug with extractelement on SPU.Kalle Raiskila2010-11-221-1/+1
| | | | | | | In the attached testcase, the element was never extracted (missing rotate). llvm-svn: 119973
* Add basic CFI methods to the streamer interface.Rafael Espindola2010-11-223-7/+125
| | | | llvm-svn: 119972
* Move the "gep undef" -> "undef" transform from instcombine toDuncan Sands2010-11-222-7/+11
| | | | | | InstructionSimplify. llvm-svn: 119970
* Remove some #includes.Rafael Espindola2010-11-221-0/+1
| | | | llvm-svn: 119967
* Implement the "if (X == 6 || X == 4)" -> "if ((X|2) == 6)" optimization.Benjamin Kramer2010-11-222-11/+47
| | | | | | | This currently only catches the most basic case, a two-case switch, but can be extended later. llvm-svn: 119964
* Don't keep track of inserted phis in PromoteMemoryToRegister: the informationDuncan Sands2010-11-221-8/+3
| | | | | | is never used. Patch by Cameron Zwarich. llvm-svn: 119963
* Fix a compiler warning about Kind being used uninitializedDuncan Sands2010-11-221-1/+1
| | | | | | when assertions are disabled. llvm-svn: 119962
* Pseudos default to 4byte size, let the instruction size field noticeEric Christopher2010-11-211-1/+3
| | | | | | that branch tables are special. llvm-svn: 119954
* Implement ELF object file writing support for the MBlaze backend. Its not ↵Wesley Peck2010-11-216-113/+244
| | | | | | perfect yet, but it works for many tests. llvm-svn: 119952
* Implement branch analysis in the MBlaze backend.Wesley Peck2010-11-212-46/+201
| | | | llvm-svn: 119951
* Make it a little bit more explicit that the MBlaze backend only supports uptoWesley Peck2010-11-212-3/+3
| | | | | | 32-bit immediate values. llvm-svn: 119950
* Fix an error in the MBlaze delay slot filler where instructions that alreadyWesley Peck2010-11-211-16/+29
| | | | | | fill a delay slot are moved to fill a different delay slot. llvm-svn: 119949
* fix commentChris Lattner2010-11-211-1/+0
| | | | llvm-svn: 119948
* apparently tailcalls are better on darwin/x86-64 than on linux?Chris Lattner2010-11-211-0/+18
| | | | llvm-svn: 119947
* Initialize MemDep's TD member so buildbots don't trip over an uninitialized ↵Benjamin Kramer2010-11-211-0/+2
| | | | | | | | pointer (TD is passed to PHITransAddr). I wonder why this didn't explode earlier. llvm-svn: 119944
* Add a rather pointless InstructionSimplify transform, inspired by recent ↵Duncan Sands2010-11-211-2/+10
| | | | | | | | | | constant folding improvements: if P points to a type of size zero, turn "gep P, N" into "P". More generally, if a gep index type has size zero, instcombine could replace the index with zero, but that is not done here. llvm-svn: 119942
* Fix spelling.Duncan Sands2010-11-211-2/+2
| | | | llvm-svn: 119941
* More Thumb encodings.Bill Wendling2010-11-211-25/+82
| | | | llvm-svn: 119940
* Add encoding for ARM "trap" instruction.Bill Wendling2010-11-211-4/+1
| | | | llvm-svn: 119938
* The "trap" instruction is one of this which doesn't have a condition code. HackBill Wendling2010-11-211-2/+5
| | | | | | the code to not add a "condition code" if it's trap. llvm-svn: 119937
* - Give "trap" the correct encoding, at least according to Darwin's assembler.Bill Wendling2010-11-211-3/+10
| | | | | | - Add comments saying where the encodings for other instructions came from. llvm-svn: 119936
* apply Dan's fix for PR8268 which allows constant folding to handle indexes overChris Lattner2010-11-211-7/+15
| | | | | | | | | | | zero sized elements. This allows us to compile: #include <string> void foo() { std::string s; } into an empty function. llvm-svn: 119933
* implement PR8524, apparently mainline gas accepts movq as an alias for movdChris Lattner2010-11-211-0/+4
| | | | | | when transfering between i64 gprs and mmx regs. llvm-svn: 119931
* rework some DSE paths to use the newly-public "getPointerDependencyFrom"Chris Lattner2010-11-211-46/+37
| | | | | | | method in MemDep instead of inserting an instruction, doing a query, then removing it. Neither operation is effectively cached. llvm-svn: 119930
* add "getLocation" method to AliasAnalysis for getting the source andChris Lattner2010-11-211-0/+23
| | | | | | | | destination location of a memcpy/memmove. I'm not clear about whether TBAA works on these, so I'm leaving it out for now. Dan, please revisit this when convenient. llvm-svn: 119928
* implement PR8576, deleting dead stores with intervening may-alias stores.Chris Lattner2010-11-212-5/+24
| | | | llvm-svn: 119927
* add some random notes.Chris Lattner2010-11-211-2/+33
| | | | llvm-svn: 119925
OpenPOWER on IntegriCloud