summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Move MaximumAlignment to be a member of the Value class.Dan Gohman2010-07-302-2/+3
| | | | llvm-svn: 109891
* Revert my last two patches to LVI, which recent changes have exposed a ↵Owen Anderson2010-07-301-56/+94
| | | | | | miscompilation in. llvm-svn: 109889
* Add missing newline to debug statement.Nick Lewycky2010-07-301-1/+1
| | | | llvm-svn: 109886
* Add the __TEXT,__StaticInit section to the list of sections emitted at theBob Wilson2010-07-301-0/+6
| | | | | | | beginning on ARM Darwin assembly files so that it won't be placed after debug sections. Radar 8252813. llvm-svn: 109879
* Support all 128-bit AVX vector intrinsics. Most part of them I alreadyBruno Cardoso Lopes2010-07-303-232/+240
| | | | | | | | | | | declared during the addition of the assembler support, the additional changes are: - Add missing intrinsics - Move all SSE conversion instructions in X86InstInfo64.td to the SSE.td file. - Duplicate some patterns to AVX mode. - Step into PCMPEST/PCMPIST custom inserter and add AVX versions. llvm-svn: 109878
* Fix typo!Bruno Cardoso Lopes2010-07-301-8/+8
| | | | llvm-svn: 109877
* MC: Initialize MCFragment::Offset, noticed by Cameron Esfahani.Daniel Dunbar2010-07-301-1/+2
| | | | llvm-svn: 109875
* Fix -Wmissing-field-initializers warnings.Daniel Dunbar2010-07-301-15/+5
| | | | llvm-svn: 109872
* Fix for bug reported by Evzen Muller on llvm-commits: make sure to correctlyEli Friedman2010-07-301-6/+3
| | | | | | | check the range of the constant when optimizing a comparison between a constant and a sign_extend_inreg node. llvm-svn: 109854
* Many Thumb2 instructions can reference the full ARM register set (i.e.,Jim Grosbach2010-07-306-331/+465
| | | | | | | | | | | | | | | | | | | | | | | | have 4 bits per register in the operand encoding), but have undefined behavior when the operand value is 13 or 15 (SP and PC, respectively). The trivial coalescer in linear scan sometimes will merge a copy from SP into a subsequent instruction which uses the copy, and if that instruction cannot legally reference SP, we get bad code such as: mls r0,r9,r0,sp instead of: mov r2, sp mls r0, r9, r0, r2 This patch adds a new register class for use by Thumb2 that excludes the problematic registers (SP and PC) and is used instead of GPR for those operands which cannot legally reference PC or SP. The trivial coalescer explicitly requires that the register class of the destination for the COPY instruction contain the source register for the COPY to be considered for coalescing. This prevents errant instructions like that above. PR7499 llvm-svn: 109842
* Add builtins for ssat/usat, similar to RealView's __ssat and __usat intrinsics.Nate Begeman2010-07-292-0/+6
| | | | llvm-svn: 109813
* Refactor ARM-specific DAG combining in preparation for adding some moreBob Wilson2010-07-291-12/+25
| | | | | | transformations. llvm-svn: 109800
* Implement vector constants which are splat ofDale Johannesen2010-07-291-8/+62
| | | | | | | | | integers with mov + vdup. 8003375. This is currently disabled by default because LICM will not hoist a VDUP, so it pessimizes the code if the construct occurs inside a loop (8248029). llvm-svn: 109799
* Don't assert on an unrecognized BrMiscFrm instruction.Bob Wilson2010-07-291-1/+0
| | | | | | PR7745. llvm-svn: 109788
* PR7750: !CExpr->isNullValue() only properly computes whether CExpr is nonnullEli Friedman2010-07-291-1/+1
| | | | | | if CExpr is a ConstantInt. llvm-svn: 109773
* Add intrinsics __builtin_arm_qadd & __builtin_arm_qsub to allow access to ↵Nate Begeman2010-07-292-9/+14
| | | | | | | | the QADD & QSUB instructions. Behave identically to __qadd & __qsub RealView instruction intrinsics. llvm-svn: 109770
* Plug the remaining MC leaks by giving MCObjectStreamer/MCAsmStreamer ↵Benjamin Kramer2010-07-293-5/+5
| | | | | | ownership of the TargetAsmBackend and the MCCodeEmitter. llvm-svn: 109767
* Comment typo.Dale Johannesen2010-07-291-1/+1
| | | | llvm-svn: 109765
* Revert r109652, and remove the offending assert in loadRegFromStackSlot instead.Jakob Stoklund Olesen2010-07-292-6/+1
| | | | | | | | | | | | We do sometimes load from a too small stack slot when dealing with x86 arguments (varargs and smaller-than-32-bit args). It looks like we know what we are doing in those cases, so I am going to remove the assert instead of artifically enlarging stack slot sizes. The assert in storeRegToStackSlot stays in. We don't want to write beyond the bounds of a stack slot. llvm-svn: 109764
* CrashRecovery: Use ThreadLocal::erase() instead of set(0).Daniel Dunbar2010-07-291-1/+1
| | | | llvm-svn: 109752
* Stop leaking std::strings in GetDwarfFile.Benjamin Kramer2010-07-291-8/+8
| | | | llvm-svn: 109746
* COFFObjectWriter: Don't leak COFFSymbols and COFFSections.Benjamin Kramer2010-07-291-0/+8
| | | | llvm-svn: 109745
* Make sure to include config.h, to pickup LLVM_ON_WIN32.Daniel Dunbar2010-07-291-0/+1
| | | | llvm-svn: 109721
* MC: Destroy Macro instances.Daniel Dunbar2010-07-291-0/+7
| | | | llvm-svn: 109720
* Speculatively revert r109705 since it seems to be causing some build botEric Christopher2010-07-291-45/+29
| | | | | | angst. llvm-svn: 109718
* CrashRecoveryContext: Add a simple POSIX implementation.Daniel Dunbar2010-07-291-1/+102
| | | | | | | | - This works, but won't handle crashes on stack overflow, or signals delivered to a thread other than the one that crashed. The latter is particular annoying on Darwin, because SIGABRT tends to go to the main thread. llvm-svn: 109717
* Fix a bug in the -regalloc=fast handling of exotic two-address instruction withJakob Stoklund Olesen2010-07-291-3/+11
| | | | | | | | | | | | | | | | | multiple defs, like t2LDRSB_POST. The first def could accidentally steal the physreg that the second, tied def was required to be allocated to. Now, the tied use-def is treated more like an early clobber, and the physreg is reserved before allocating the other defs. This would never be a problem when the tied def was the only def which is the usual case. This fixes MallocBench/gs for thumb2 -O0. llvm-svn: 109715
* Factor out some of the code for updating old SCEVUnknown values, andDan Gohman2010-07-291-29/+45
| | | | | | | | | extend it to handle the case where multiple RAUWs affect a single SCEVUnknown. Add a ScalarEvolution unittest to test for this situation. llvm-svn: 109705
* Pass the queried value by argument rather than in a member, in preparation ↵Owen Anderson2010-07-281-36/+25
| | | | | | for supporting PHI translation. llvm-svn: 109701
* ARM mode version of r109693. Remove incorrect substitution pattern for ↵Jim Grosbach2010-07-281-2/+6
| | | | | | UXTB16. It wrongly assumed the input shift was actually a rotate. rdar://8240138 llvm-svn: 109696
* Remove incorrect substitution pattern for UXTB16. It wrongly assumed the ↵Jim Grosbach2010-07-281-2/+6
| | | | | | input shift was actually a rotate. rdar://8240138 llvm-svn: 109693
* Remove dead prototypeJim Grosbach2010-07-281-1/+0
| | | | llvm-svn: 109691
* simplify by using CallSite constructors; virtually eliminates CallSite::get ↵Gabor Greif2010-07-288-24/+24
| | | | | | from the tree llvm-svn: 109687
* Add an erase() method to llvm::ThreadLocal.Owen Anderson2010-07-283-0/+9
| | | | llvm-svn: 109686
* Get rid of LVIQuery as a distinct data structure, so that we don't have to ↵Owen Anderson2010-07-281-93/+66
| | | | | | initialize a new set of maps on every query. llvm-svn: 109679
* Make GlobalValue alignment consistent with load, store, and allocaDan Gohman2010-07-281-1/+8
| | | | | | alignment, fixing silent truncation of alignment values. llvm-svn: 109653
* Create a fixed stack object for varargs that is as large as any register.Jakob Stoklund Olesen2010-07-281-1/+4
| | | | | | | | | | The size of this object isn't used for anything - technically it is of variable size. This avoids a false positive from the assert in X86InstrInfo::loadRegFromStackSlot, and fixes PR7735. llvm-svn: 109652
* Added first bit of support for the dwarf .file directive. This patch collectsKevin Enderby2010-07-284-1/+99
| | | | | | | the info from the .file directive and makes file and directory tables that will eventually be put out as part of the dwarf info in the output file. llvm-svn: 109651
* RegionInfo: Make sure to free cached nodes; Tobias, please check!Daniel Dunbar2010-07-281-0/+5
| | | | llvm-svn: 109650
* MC: Put back the MCFragment vtable, so subclasses are destroyed properly (duh).Daniel Dunbar2010-07-281-0/+3
| | | | llvm-svn: 109649
* Define a maximum supported alignment value for load, store, andDan Gohman2010-07-283-1/+16
| | | | | | | | | alloca instructions (constrained by their internal encoding), and add error checking for it. Fix an instcombine bug which generated huge alignment values (null is infinitely aligned). This fixes undefined behavior noticed by John Regehr. llvm-svn: 109643
* Print out the regclass of any virtual registers used by a machine instruction.Jakob Stoklund Olesen2010-07-281-0/+31
| | | | llvm-svn: 109608
* Unbreak my CMake build, say you'll compile for me again...Douglas Gregor2010-07-281-0/+1
| | | | llvm-svn: 109598
* Fix this code to avoid decrementing an iterator past the beginningDan Gohman2010-07-281-5/+2
| | | | | | of a std::vector. llvm-svn: 109597
* When user code intentionally dereferences null, the alignment of theDan Gohman2010-07-281-2/+7
| | | | | | | dereference is theoretically infinite. Put a cap on the computed alignment to avoid overflow, noticed by John Regehr. llvm-svn: 109596
* Do GEP offset calculations with unsigned math rather than signed mathDan Gohman2010-07-281-1/+1
| | | | | | to avoid undefined behavior on overflow, noticed by John Regehr. llvm-svn: 109594
* simplifyGabor Greif2010-07-281-2/+2
| | | | llvm-svn: 109589
* Support: Add CrashRecoveryContext helper object.Daniel Dunbar2010-07-281-0/+88
| | | | | | | | | - Designed as a simple wrapper to allow clients to attempt to catch crashes (memory errors, assertion violations, etc.) and do some kind of recovery. - Currently doesn't actually attempt to catch crashes. llvm-svn: 109586
* simplifyGabor Greif2010-07-281-4/+2
| | | | llvm-svn: 109585
* use Value* constructor of CallSite to create potentially improper site, and ↵Gabor Greif2010-07-281-2/+1
| | | | | | test that llvm-svn: 109581
OpenPOWER on IntegriCloud