summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Fix sdisel memcpy, memset, memmove lowering:Evan Cheng2010-04-012-108/+156
| | | | | | | | | | | | | 1. Makes it possible to lower with floating point loads and stores. 2. Avoid unaligned loads / stores unless it's fast. 3. Fix some memcpy lowering logic bug related to when to optimize a load from constant string into a constant. 4. Adjust x86 memcpy lowering threshold to make it more sane. 5. Fix x86 target hook so it uses vector and floating point memory ops more effectively. rdar://7774704 llvm-svn: 100090
* Reapply r100056. It doesn't look like it's the one that's causing a failure.Bill Wendling2010-04-011-35/+23
| | | | llvm-svn: 100065
* Revert r100056. It was causing a failure on MSVC.Bill Wendling2010-03-311-23/+35
| | | | llvm-svn: 100062
* Reverting 100048; it broke two Frontend debug info tests.Stuart Hastings2010-03-312-26/+10
| | | | llvm-svn: 100058
* Rewrite CorrectExtraCFGEdges() to make it more understandable.Bill Wendling2010-03-311-35/+23
| | | | | | | | | | * Set the "DestA" and "DestB" according to how they're understood by the method. I.e., if one or both of them should point to the "fall through" block, then point to the fall through block. * Improve the loop that removes superfluous edges to be more understandable. llvm-svn: 100056
* Debug info can now properly represent functions inside classes inside other ↵Stuart Hastings2010-03-312-10/+26
| | | | | | functions. Partial fix for Radar 7424645. llvm-svn: 100048
* Reduce string trashing.Benjamin Kramer2010-03-311-2/+2
| | | | llvm-svn: 100038
* DwarfDebug: Allocate DIEValues with a BumpPtrAllocator. Most of them areBenjamin Kramer2010-03-314-32/+30
| | | | | | | | | POD-like anyway, so we don't even care about calling their d'tors (DIEBlock being the exception). ~6% less mallocs and ~1% compile time improvement on clang -O0 -g oggenc.c llvm-svn: 100035
* reduce indentationChris Lattner2010-03-311-20/+21
| | | | llvm-svn: 99999
* tidy upChris Lattner2010-03-311-7/+8
| | | | llvm-svn: 99998
* MI != 0 is checked in the assert right above this.Chris Lattner2010-03-311-1/+1
| | | | llvm-svn: 99995
* use the isDebugValue() predicate and pop_back_val()Chris Lattner2010-03-311-7/+7
| | | | llvm-svn: 99993
* assert is a function-like macro, not a control flow operator.Chris Lattner2010-03-311-14/+14
| | | | llvm-svn: 99992
* reduce indentation, fit in 80 cols and various other cosmetic cleanups.Chris Lattner2010-03-311-284/+300
| | | | llvm-svn: 99989
* use the optimized debug info apis in sdisel.Chris Lattner2010-03-311-19/+16
| | | | llvm-svn: 99986
* add new apis for getting/setting !dbg metadata on Chris Lattner2010-03-313-7/+7
| | | | | | | | | instructions. In addition to being a convenience, they are faster than the old apis, particularly when not going from an MDKindID like people should be doing. llvm-svn: 99982
* Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots.Bob Wilson2010-03-302-54/+27
| | | | llvm-svn: 99948
* Ignore invalid metadata.Devang Patel2010-03-301-0/+2
| | | | llvm-svn: 99938
* Added support for address spaces and added a isVolatile field to memcpy, ↵Mon P Wang2010-03-302-27/+54
| | | | | | | | | memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) A update of langref will occur in a subsequent checkin. llvm-svn: 99928
* Introduce SpecificBumpPtrAllocator, a wrapper for BumpPtrAllocator which allowsBenjamin Kramer2010-03-304-11/+6
| | | | | | | only a single type of object to be allocated. Use it to make VNInfo destruction typesafe. llvm-svn: 99919
* Rip out the 'is temporary' nonsense from the MCContext interface toChris Lattner2010-03-305-17/+13
| | | | | | | | | create symbols. It is extremely error prone and a source of a lot of the remaining integrated assembler bugs on x86-64. This fixes rdar://7807601. llvm-svn: 99902
* Funky indentation.Evan Cheng2010-03-301-5/+5
| | | | llvm-svn: 99901
* There is no need to fall through after processing DBG_VALUE machine instruction.Devang Patel2010-03-301-0/+1
| | | | llvm-svn: 99899
* Fix -Asserts warning.Daniel Dunbar2010-03-301-4/+0
| | | | llvm-svn: 99895
* Reapply r99881 with some fixes: only call destructor in releaseMemory!Torok Edwin2010-03-302-6/+6
| | | | llvm-svn: 99883
* Revert 99881, it brooke smooshlab's llvm-gcc-i386-darwin9.Torok Edwin2010-03-301-6/+1
| | | | llvm-svn: 99882
* Introduce another Reset() method in BumpPtrAllocator that calls a destructorTorok Edwin2010-03-301-1/+6
| | | | | | | | | | on all objects it has allocated, if they are all of the same size and alignment. Use this to destruct all VNInfos allocated in LiveIntervalAnalysis (PR6653). valnos is not reliable for this purpose, as seen in r99400 (which still leaked, and sometimes caused double frees). llvm-svn: 99881
* Avoid being influenced by the presence of dbg_value instructions.Evan Cheng2010-03-302-8/+28
| | | | llvm-svn: 99879
* Re-add back in the slow way of determining of a clean-up should become aBill Wendling2010-03-291-0/+135
| | | | | | | catch-all. The "dominates" way won't catch all of the selectors which must be changed. llvm-svn: 99850
* A more general (and simpler!) implementation of r99671. It performs a similarBill Wendling2010-03-291-122/+59
| | | | | | | | | | | transform. I.e., if a clean-up eh.selector call dominates the invoke of an _Unwind_Resume_or_Rethrow, then we convert the eh.selector into a catch-all. This patch, however, uses the DominatorTree information, and doesn't go through the whole rigmarole of starting at the eh.exception call, finding the corresponding URoR and eh.selector calls, and trying to trace through any number of instruction types to get to them. llvm-svn: 99846
* Encode start location of debug value, communicated through DBG_VALUE machine ↵Devang Patel2010-03-292-15/+43
| | | | | | instruction, in a variable's DIE. llvm-svn: 99845
* Fix PR4975. Avoid referencing empty vector.Evan Cheng2010-03-291-2/+4
| | | | llvm-svn: 99840
* Pool allocate SDDbgValue nodes.Evan Cheng2010-03-292-11/+29
| | | | llvm-svn: 99836
* use RAII for ExceptionTimer tooChris Lattner2010-03-291-17/+3
| | | | llvm-svn: 99833
* fix a variety of issues were we'd start DebugTimer but Chris Lattner2010-03-291-40/+11
| | | | | | not stop it by using RAII. llvm-svn: 99832
* Refactor code to push DILocation prcessing into DwarfDebug.cpp from ↵Devang Patel2010-03-294-37/+54
| | | | | | | | AsmPrinter.cpp. This is same as r99772 (which was reverted) with just one meaningful difference where two source lines exchanged their positions. llvm-svn: 99816
* Revert 99772.Devang Patel2010-03-284-45/+37
| | | | llvm-svn: 99778
* add a statistic for the # times isel has to backtrack.Chris Lattner2010-03-281-1/+3
| | | | llvm-svn: 99774
* Refactoring. Push DILocation processing in to DwarfDebug from AsmPrinter.Devang Patel2010-03-284-37/+45
| | | | llvm-svn: 99772
* finally remove the immAllOnesV_bc/immAllZerosV_bc patternsChris Lattner2010-03-281-1/+1
| | | | | | | | | | and those derived from them. These are obnoxious because they were written as: PatLeaf<(bitconvert). Not having an argument was foiling adding better type checking for operand count matching up with what was required (in this case, bitconvert always requires an operand!) llvm-svn: 99759
* comply with the wishes of a fixme.Chris Lattner2010-03-281-3/+0
| | | | llvm-svn: 99742
* now that (parallel) is gone and a variety of bugs in targetsChris Lattner2010-03-281-8/+4
| | | | | | are cleaned up, we can remove an old fixme. llvm-svn: 99741
* add an optimized form of OPC_EmitMergeInputChains for the 1, 0 and Chris Lattner2010-03-281-0/+29
| | | | | | | 1, 1 cases which are by-far the most frequent. This shrinks the X86 isel table from 77014 -> 74657 bytes. llvm-svn: 99740
* don't add nodes to the now-dead nodes list multiple times, thisChris Lattner2010-03-281-2/+3
| | | | | | | can cause a crash on crazy situations in msp430 when morph-node-to is disabled. llvm-svn: 99739
* don't add flag nodes with chain results to the NowDeadNodesChris Lattner2010-03-281-2/+3
| | | | | | list multiple times when MorphNodeTo can't be applied. llvm-svn: 99735
* improve -debug-only=isel comments for cases when we don't enter aChris Lattner2010-03-271-4/+8
| | | | | | scope due to obviously false predicate. llvm-svn: 99723
* Forgot the part where we handle the ".llvm.eh.catch.all.value".Bill Wendling2010-03-271-2/+11
| | | | llvm-svn: 99697
* Return if we changed anything or not.Bill Wendling2010-03-271-11/+9
| | | | llvm-svn: 99695
* If a selector has a call to ".llvm.eh.catch.all.value" that we haven'tBill Wendling2010-03-271-8/+38
| | | | | | converted, then use the initializer, since using the name itself won't work. llvm-svn: 99692
* If we mark clean-ups as clean-ups, then it could break when inlining through anBill Wendling2010-03-261-7/+215
| | | | | | | | | | | | | | | | | | | | | | | | | 'invoke' instruction. You will get a situation like this: bb: %ehptr = eh.exception() %sel = eh.selector(%ehptr, @per, 0); ... bb2: invoke _Unwind_Resume_or_Rethrow(%ehptr) %normal unwind to %lpad lpad: ... The unwinder will see the %sel call as a clean-up and, if it doesn't have a catch further up the call stack, it will skip running it. But there *is* another catch up the stack -- the catch for the %lpad. However, we can't see that. This is fixed in code-gen, where we detect this situation, and convert the "clean-up" selector call into a "catch-all" selector call. This gives us the correct semantics. llvm-svn: 99671
OpenPOWER on IntegriCloud