summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Turn on LegalizeTypes, the new type legalizationDuncan Sands2008-10-271-2/+2
| | | | | | | codegen infrastructure, by default. Please report any breakage to the mailing lists. llvm-svn: 58232
* Fix an obvious copy/pasto.Nick Lewycky2008-10-271-4/+4
| | | | llvm-svn: 58231
* For now, don't split live intervals around x87 stack register barriers. ↵Evan Cheng2008-10-274-0/+19
| | | | | | FpGET_ST0_80 must be right after a call instruction (and ADJCALLSTACKUP) so we need to find a way to prevent reload of x87 registers between them. llvm-svn: 58230
* Rewrite all the 'PromoteLocallyUsedAlloca[s]' logic. With the power ofChris Lattner2008-10-271-175/+97
| | | | | | | | | | | | | | | | LargeBlockInfo, we can now dramatically simplify their implementation and speed them up at the same time. Now the code has time proportional to the number of uses of the alloca, not the size of the block. This also eliminates code that tried to batch up different allocas which are used in the same blocks, and eliminates the 'retry list' logic which was baroque and no unneccesary. In addition to being a speedup for crazy cases, this is also a nice cleanup: PromoteMemoryToRegister.cpp | 270 +++++++++++++++----------------------------- 1 file changed, 96 insertions(+), 174 deletions(-) llvm-svn: 58229
* Add a new LargeBlockInfo helper, which is just a wrapper aroundChris Lattner2008-10-271-57/+123
| | | | | | | | | a trivial dense map. Use this in RewriteSingleStoreAlloca to avoid aggressively rescanning blocks over and over again. This fixes PR2925, speeding up mem2reg on the testcase in that bug from 4.56s to 0.02s in a debug build on my machine. llvm-svn: 58227
* Increase default setting of tail-merge-threshold toDale Johannesen2008-10-271-1/+1
| | | | | | 150, based on llvm-test measurements. llvm-svn: 58225
* fix PR2953, an off-by-one error handling formatted i/o. Chris Lattner2008-10-261-1/+1
| | | | | | Thanks to Török Edwin for the awesome reduced testcase. llvm-svn: 58199
* Do not shrink wrap live interval in a mbb if it's livein any of its ↵Evan Cheng2008-10-261-6/+21
| | | | | | successor blocks. The mbb can be revisited again after all of the successors are processed. llvm-svn: 58184
* Fix type-o in ExprMapKeyType::operator ==(). The "&&" was missing.Bill Wendling2008-10-261-1/+1
| | | | | | Patch by Frits van Bommel! llvm-svn: 58175
* Handle cases where there aren't uses in the barrier mbb.Evan Cheng2008-10-251-1/+5
| | | | llvm-svn: 58174
* Make comments and code for QuietWarnings and QuietErrorsDan Gohman2008-10-251-1/+1
| | | | | | actually correspond to what their names suggest. llvm-svn: 58146
* SDNodes may have at most one Flag result. Update this commentDan Gohman2008-10-251-2/+2
| | | | | | to reflect that. llvm-svn: 58145
* Move the code that adds the DeadMachineInstructionElimPass fromDan Gohman2008-10-252-4/+5
| | | | | | | | | | | | target-independent code to target-specific code. This prevents it from running on targets that aren't using fast-isel. In addition to saving compile time, this addresses the problem that not all targets are prepared for it. In order to use this pass, all instructions must declare all their fixed uses and defs of physical registers. llvm-svn: 58144
* Related to PR2911, reject as invalid non-pointer GC roots.Gordon Henriksen2008-10-251-2/+4
| | | | llvm-svn: 58143
* Support for allocation of TLS variables in the JIT. Allocation of a globalNicolas Geoffray2008-10-255-14/+61
| | | | | | | | variable is moved to the execution engine. The JIT calls the TargetJITInfo to allocate thread local storage. Currently, only linux/x86 knows how to allocate thread local global variables. llvm-svn: 58142
* Generate code for TLS instructions.Nicolas Geoffray2008-10-253-4/+27
| | | | llvm-svn: 58141
* CMake: lib/Target/ARM/AsmPrinter/CMakeLists.txt added.Oscar Fuentes2008-10-251-0/+9
| | | | llvm-svn: 58133
* CMake: Cross-platform support for using pre-generated llvmAsmParser.cpp and ↵Oscar Fuentes2008-10-251-25/+18
| | | | | | llvmAsmParser.h. llvm-svn: 58130
* If val# def is ~0U, meaning it's defined by a PHI, and it's previously ↵Evan Cheng2008-10-251-9/+11
| | | | | | split, spill before the barrier because it's impossible to determine if all the defs are spilled in the same spill slot. llvm-svn: 58129
* Mark MFCR as reading all condition code registers.Dale Johannesen2008-10-241-0/+2
| | | | | | | Prevents some more overzealous deletions (mostly in AltiVec code). llvm-svn: 58121
* Rewrite logic to figure out whether LR needs toDale Johannesen2008-10-242-32/+34
| | | | | | | | be saved/restored in the prolog/epilog. We need to do this iff something in the function stores into it. llvm-svn: 58116
* move the note to the correct READMETorok Edwin2008-10-242-95/+97
| | | | llvm-svn: 58104
* add note about va_arg code on x86 and x86-64Torok Edwin2008-10-241-0/+94
| | | | llvm-svn: 58103
* Fix a pasto.Evan Cheng2008-10-241-1/+1
| | | | llvm-svn: 58102
* Fix translateX86CC: if SetCCOpcode is SETULE andDuncan Sands2008-10-241-13/+10
| | | | | | | | | | | | | | LHS is a foldable load, then LHS and RHS are swapped and SetCCOpcode is changed to SETUGT. But the later code is expecting operands to be the wrong way round for SETUGT, but they are not in this case, resulting in an inverted compare. The solution is to move the load normalization before the correction for SETUGT. This bug was tickled by LegalizeTypes which happened to legalize the testcase slightly differently to LegalizeDAG. llvm-svn: 58092
* Modify the cmake build system so that if it doesn't find bison, it will use ↵Cedric Venet2008-10-241-1/+25
| | | | | | the pregenerated file in from the svn (.cvs). Work only for windows for the moment. Tested on Vista64 with MSVC2008express. llvm-svn: 58090
* Don't try to create a mask when we don't need one. Fixes a crash.Nick Lewycky2008-10-241-4/+6
| | | | llvm-svn: 58075
* Fix a end() dereference; remove an abort() that wasn't meant to be left in.Evan Cheng2008-10-241-5/+4
| | | | llvm-svn: 58072
* Add value range analyzing of Add and Sub.Nick Lewycky2008-10-241-9/+73
| | | | | | Understand that mul %x, 1 = %x. llvm-svn: 58069
* Avoid splitting an interval multiple times; avoid splitting ↵Evan Cheng2008-10-242-51/+115
| | | | | | re-materializable val# (for now). llvm-svn: 58068
* Fix constant-offset emission for x86-64 absolute addresses. ThisDan Gohman2008-10-242-11/+22
| | | | | | | fixes a bunch of test-suite JIT failures on x86-64 in -relocation-model=static mode. llvm-svn: 58066
* Initialize uninitialized variable.Dale Johannesen2008-10-241-1/+1
| | | | llvm-svn: 58057
* Added raw_fd_ostream::close().Ted Kremenek2008-10-231-3/+14
| | | | llvm-svn: 58052
* Committing a good chunk of the pre-register allocation live interval ↵Evan Cheng2008-10-232-12/+578
| | | | | | splitting pass. It's handling simple cases and appear to do good things. Next: avoid splitting an interval multiple times; renumber registers when possible; record stack slot live intervals for coloring; rematerialize defs when possible. llvm-svn: 58044
* Mark defs and uses of CTR and LR correctly.Dale Johannesen2008-10-232-11/+30
| | | | | | | | Prevents DeadMachineInstructionElim from thinking things like MTCTR are dead (fixes massive testsuite breakage at -O0). llvm-svn: 58043
* Make sure to set stdout to binary when writing bitcode files viaDaniel Dunbar2008-10-231-0/+3
| | | | | | std::ostream API. llvm-svn: 58042
* Fix thinko - the operand number has nothing to doDuncan Sands2008-10-232-3/+3
| | | | | | with the result number. llvm-svn: 58041
* Change create*Pass factory functions to return Pass* instead ofDaniel Dunbar2008-10-229-9/+9
| | | | | | | | | | | LoopPass*. - Although less precise, this means they can be used in clients without RTTI (who would otherwise need to include LoopPass.h, which eventually includes things using dynamic_cast). This was the simplest solution that presented itself, but I am happy to use a better one if available. llvm-svn: 58010
* remove extraneous #ifdef'sJim Grosbach2008-10-221-4/+0
| | | | llvm-svn: 58006
* Add raw_ostream versions of WriteBitcodeToFile and BitcodeWriterPass.Daniel Dunbar2008-10-222-5/+26
| | | | | | | - The old versions are still hanging around, but should be migrated away from. llvm-svn: 57989
* Remove allocation of unused stack slot.Dale Johannesen2008-10-221-6/+0
| | | | llvm-svn: 57987
* Fix for PR2881: fix a small leak exposed by valgrind, using a ManagedStatic.Julien Lerouge2008-10-221-6/+5
| | | | llvm-svn: 57984
* LegalizeTypes soft-float support for fpow.Duncan Sands2008-10-222-1/+15
| | | | llvm-svn: 57973
* Get this working with LegalizeTypes: (1) don'tDuncan Sands2008-10-221-5/+9
| | | | | | | | | assume that i64 has been turned into a BUILD_PAIR node (when called from LegalizeTypes this hasn't happened yet) and don't use a vector shuffle mask with an illegal element type. llvm-svn: 57972
* Be nice to CellSPU: for this target getSetCCResultTypeDuncan Sands2008-10-221-2/+8
| | | | | | | | | | | | may return i8, which can result in SELECT nodes for which the type of the condition is i8, but there are no patterns for select with i8 condition. Tweak the LegalizeTypes logic to avoid this as much as possible. This isn't a real fix because it is still perfectly possible to end up with such select nodes - CellSPU needs to be fixed IMHO. llvm-svn: 57968
* Port from LegalizeDAG the logic to only generateDuncan Sands2008-10-221-8/+44
| | | | | | ADDC/ADDE/SUBC/SUBE if the target supports it. llvm-svn: 57967
* Add some comments explaining the meaning of a booleanDuncan Sands2008-10-221-4/+2
| | | | | | | | that is not of type MVT::i1 in SELECT and SETCC nodes. Relax the LegalizeTypes SELECT condition promotion sanity checks to allow other condition types than i1. llvm-svn: 57966
* Temporarily allow the operands of a BUILD_VECTORDuncan Sands2008-10-221-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | to have a different type to the vector element type. This should be fairly harmless because in the past guys like this were being built all over the place (and were cleaned up when I added this check). The reason for relaxing this check is that it helps LegalizeTypes legalize vector shuffles: the mask is a BUILD_VECTOR that it is *not always possible* to legalize while keeping it a BUILD_VECTOR (vector_shuffle requires the mask to be a BUILD_VECTOR, as opposed to a vector with the right vector type). With this check it is even harder to legalize the mask - turning the check off means that LegalizeTypes manages to legalize almost all vector shuffles encountered in practice. The correct solution is to change vector_shuffle to be a variadic node with the mask built into it as operands. While waiting for that change, this hack stops the problem with vector_shuffle from blocking the turning on of LegalizeTypes. llvm-svn: 57965
* Fix PR2907 by digging through constant expressions to find FP constants thatChris Lattner2008-10-221-42/+63
| | | | | | are their operands. llvm-svn: 57956
* Move Print*Pass to use raw_ostream.Daniel Dunbar2008-10-222-13/+18
| | | | llvm-svn: 57946
OpenPOWER on IntegriCloud