summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Add a preverifier pass to check that every basic block ends in a terminator, ↵Owen Anderson2007-10-311-1/+20
| | | | | | so that we don't segfault when verifying invalid code. llvm-svn: 43578
* Implemented deserialization of references. References are handledTed Kremenek2007-10-311-1/+13
| | | | | | | | | | | | | just like pointers, except that they cannot be backpatched. This means that references are essentially non-owning pointers where the referred object must be deserialized prior to the reference being deserialized. Because of the nature of references, this ordering of objects is always possible. Fixed a bug in backpatching code (returning the backpatched pointer would accidentally include a bit flag). llvm-svn: 43570
* Added Serializer::EmitRef to deal with emitting arbitrary references.Ted Kremenek2007-10-311-1/+1
| | | | | | Modified Serializer::EmitPtr to handle const pointers. llvm-svn: 43565
* Make ARM and X86 LowerMEMCPY identical by moving the isThumb check into ↵Rafael Espindola2007-10-314-23/+16
| | | | | | | | | | getMaxInlineSizeThreshold and by restructuring the X86 version. New I just have to move this to a common place :-) llvm-svn: 43554
* Fix a typo in a comment.Dan Gohman2007-10-311-1/+1
| | | | llvm-svn: 43553
* Make ARM an X86 memcpy expansion more similar to each other.Rafael Espindola2007-10-315-11/+11
| | | | | | | | Now both subtarget define getMaxInlineSizeThreshold and the expansion uses it. This should not change generated code. llvm-svn: 43552
* Promotion of sdiv/srem/udiv/urem.Duncan Sands2007-10-311-0/+32
| | | | llvm-svn: 43551
* Add a newline at the end of the file.Duncan Sands2007-10-312-2/+2
| | | | llvm-svn: 43550
* Add the skeleton of a better PHI elimination pass.Owen Anderson2007-10-311-0/+112
| | | | llvm-svn: 43542
* Some fixes to get MachineDomTree working better.Owen Anderson2007-10-311-0/+24
| | | | llvm-svn: 43541
* Make i64=expand_vector_elt(v2i64) work in 32-bit mode.Dale Johannesen2007-10-312-1/+7
| | | | llvm-svn: 43535
* At end of LSR, replace uses of now constant (as result of SplitCriticalEdge) ↵Evan Cheng2007-10-301-9/+33
| | | | | | PHI node with the constant value. llvm-svn: 43533
* It's not safe to tell SplitCriticalEdge to merge identical edges. It may ↵Evan Cheng2007-10-301-11/+9
| | | | | | delete the phi instruction that's being processed. llvm-svn: 43524
* Add missing SSE builtins: CVTPD2PI, CVTPS2PI,Dale Johannesen2007-10-301-0/+51
| | | | | | CVTTPD2PI, CVTTPS2PI, CVTPI2PD, CVTPI2PS. llvm-svn: 43523
* Typo.Evan Cheng2007-10-301-1/+1
| | | | llvm-svn: 43511
* Add support for folding binary operators with vector zero operands.Dan Gohman2007-10-301-19/+29
| | | | llvm-svn: 43510
* Fix for visibility warnings generated by gcc-4.2.Duncan Sands2007-10-302-2/+2
| | | | llvm-svn: 43500
* Add support for expanding trunc stores. ConsiderDuncan Sands2007-10-301-62/+126
| | | | | | | | | | | | | | | | | storing an i170 on a 32 bit machine. This is first promoted to a trunc-i170 store of an i256. On a little-endian machine this expands to a store of an i128 and a trunc-i42 store of an i128. The trunc-i42 store is further expanded to a trunc-i42 store of an i64, then to a store of an i32 and a trunc-i10 store of an i32. At this point the operand type is legal (i32) and expansion stops (legalization of the trunc-i10 needs to be handled in LegalizeDAG.cpp). On big-endian machines the high bits are stored first, and some bit-fiddling is needed in order to generate aligned stores. llvm-svn: 43499
* If a call to getTruncStore is for a normal store,Duncan Sands2007-10-301-3/+5
| | | | | | | | offload to getStore rather than trying to handle both cases at once (the assertions for example assume the store really is truncating). llvm-svn: 43498
* Add missing MMX PSUBQ.Dale Johannesen2007-10-301-0/+1
| | | | llvm-svn: 43488
* - Bug fixes.Evan Cheng2007-10-291-10/+38
| | | | | | - Allow icmp rewrite using an iv / stride of a smaller integer type. llvm-svn: 43480
* Fix a DAGCombiner abort on a bitcast from a scalar to a vector.Dan Gohman2007-10-291-1/+2
| | | | llvm-svn: 43470
* Don't bitcast from pointer-to-vector to pointer-to-array whenDan Gohman2007-10-291-20/+4
| | | | | | lowering load and store instructions. llvm-svn: 43468
* Use an array instead of a fixed-length std::vector.Dan Gohman2007-10-291-6/+8
| | | | llvm-svn: 43467
* Do a real assert if there is an unhandled vector instruction insteadDan Gohman2007-10-291-3/+3
| | | | | | of just printing to cerr. llvm-svn: 43466
* Enable more fold (sext (load x)) -> (sext (truncate (sextload x)))Evan Cheng2007-10-293-24/+145
| | | | | | | | transformation. Previously, it's restricted by ensuring the number of load uses is one. Now the restriction is loosened up by allowing setcc uses to be "extended" (e.g. setcc x, c, eq -> setcc sext(x), sext(c), eq). llvm-svn: 43465
* Add explicit keywords.Dan Gohman2007-10-292-2/+2
| | | | llvm-svn: 43464
* Update a comment to reflect the current code.Dan Gohman2007-10-291-2/+2
| | | | llvm-svn: 43463
* Remove an unused function argument.Dan Gohman2007-10-291-6/+6
| | | | llvm-svn: 43462
* Fix a typo in a comment.Dan Gohman2007-10-291-1/+1
| | | | llvm-svn: 43461
* Avoid calling ValidStride when not all uses are addresses.Dan Gohman2007-10-291-6/+5
| | | | llvm-svn: 43460
* Fixed warning concerning implicit conversion from a NULL pointerTed Kremenek2007-10-291-1/+1
| | | | | | constant to an unsigned int. We now just directly assign the literal 0. llvm-svn: 43459
* Avoid doing something dumb like rewriting using a 64-bit iv in 32-bit mode.Evan Cheng2007-10-291-1/+5
| | | | llvm-svn: 43446
* add a note.Chris Lattner2007-10-291-0/+33
| | | | llvm-svn: 43444
* I am not sure this is a good idea to be an option, but rename the option forChris Lattner2007-10-291-1/+1
| | | | | | now. It conflicts with clang's -pedantic flag. llvm-svn: 43431
* Add support for the x86-64 'q' regigster modifier, and add support for theChris Lattner2007-10-291-2/+18
| | | | | | | b/h/w/k/q inline asm memory modifiers, which are just ignored. This fixes PR1748 and CodeGen/X86/2007-10-28-inlineasm-q-modifier.ll llvm-svn: 43430
* Fix PR1749 and InstCombine/2007-10-28-EmptyField.ll by handlingChris Lattner2007-10-291-1/+7
| | | | | | zero-length fields better. llvm-svn: 43427
* Fix PR1752 and LoopSimplify/2007-10-28-InvokeCrash.ll: terminators Chris Lattner2007-10-291-4/+6
| | | | | | can have uses too. Wouldn't it be nice if invoke didn't exist? :) llvm-svn: 43426
* Fixed assertion in Deserializer::~Deserializer that checks forTed Kremenek2007-10-281-2/+6
| | | | | | pointers that were not backpatched (previously checked the wrong invariant). llvm-svn: 43425
* Add 'pedantic' mode to verifier rejecting syntactically valid, but 'bad' due ↵Anton Korobeynikov2007-10-281-3/+14
| | | | | | to other reasons code llvm-svn: 43424
* Updated backpatching logic during object deserialization to performTed Kremenek2007-10-281-24/+38
| | | | | | | | eager backpatching instead of waithing until all objects have been deserialized. This allows us to reduce the memory footprint needed for backpatching. llvm-svn: 43422
* The guaranteed alignment of ptr+offset is only the minimum ofDuncan Sands2007-10-283-23/+27
| | | | | | | | | | | | | | | | | | | of offset and the alignment of ptr if these are both powers of 2. While the ptr alignment is guaranteed to be a power of 2, there is no reason to think that offset is. For example, if offset is 12 (the size of a long double on x86-32 linux) and the alignment of ptr is 8, then the alignment of ptr+offset will in general be 4, not 8. Introduce a function MinAlign, lifted from gcc, for computing the minimum guaranteed alignment. I've tried to fix up everywhere under lib/CodeGen/SelectionDAG/. I also changed some places that weren't wrong (because both values were a power of 2), as a defensive change against people copying and pasting the code. Hopefully someone who cares about alignment will review the rest of LLVM and fix up the remaining places. Since I'm on x86 I'm not very motivated to do this myself... llvm-svn: 43421
* New entry.Evan Cheng2007-10-281-0/+62
| | | | llvm-svn: 43420
* A number of LSR fixes:Evan Cheng2007-10-261-21/+32
| | | | | | | | | - ChangeCompareStride only reuse stride that is larger than current stride. It will let the general reuse mechanism to try to reuse a smaller stride. - Watch out for multiplication overflow in ChangeCompareStride. - Replace std::set with SmallPtrSet. llvm-svn: 43408
* Added serialization support for APInt.Ted Kremenek2007-10-262-0/+64
| | | | llvm-svn: 43405
* - Remove the hacky code that forces a memcpy. Alignment is taken care of in theBill Wendling2007-10-261-11/+3
| | | | | | | | | FE. - Explicitly pass in the alignment of the load & store. - XFAIL 2007-10-23-UnalignedMemcpy.ll because llc has a bug that crashes on unaligned pointers. llvm-svn: 43398
* Fix a crash. Make sure TLI is not null.Evan Cheng2007-10-261-1/+1
| | | | llvm-svn: 43384
* Fix off-by-one stack offset computations (dwarf information) for callee-savedAnton Korobeynikov2007-10-261-1/+2
| | | | | | | | registers in case, when FP pointer was eliminated. This should fixes misc. random EH-related crahses, when stuff is compiled with -fomit-frame-pointer. Thanks Duncan for nailing this bug! llvm-svn: 43381
* clo/clz aren't supported on mips I. Keep them around for when we'llEric Christopher2007-10-261-105/+107
| | | | | | want them later (mips32/64). llvm-svn: 43380
* Make a comment better.Owen Anderson2007-10-261-1/+3
| | | | llvm-svn: 43379
OpenPOWER on IntegriCloud