summaryrefslogtreecommitdiffstats
path: root/llvm/unittests
Commit message (Collapse)AuthorAgeFilesLines
* Disable JITTest.FunctionIsRecompiledAndRelinked on ARM where it's notJeffrey Yasskin2009-12-231-0/+4
| | | | | | implemented. llvm-svn: 91963
* Partially revert r91626. Materializing extra functions to determine whetherJeffrey Yasskin2009-12-222-7/+97
| | | | | | | | | | | they're available_externally broke VMKit, which was relying on the fact that functions would only be materialized when they were first called. We'll have to wait for http://llvm.org/PR5737 to really fix this. I also added a test for one of the F->isDeclaration() calls which wasn't covered by anything else in the test suite. llvm-svn: 91943
* Fix a crash in JIT::recompileAndRelinkFunction(). It doesn't pass the MCIJeffrey Yasskin2009-12-221-0/+31
| | | | | | | | | argument to runJITOnFunction(), which caused a null pointer dereference at every call. Patch by Gianluca Guida! llvm-svn: 91939
* Change StringRef::startswith and StringRef::endswith to versions which are aEli Friedman2009-12-211-0/+8
| | | | | | bit more verbose, but optimize to much shorter code. llvm-svn: 91817
* Catch more cases of a pointer being marked garbage twice. This helps whenRafael Espindola2009-12-181-0/+29
| | | | | | debugging some leaks (PR5770 in particular). llvm-svn: 91713
* Don't codegen available_externally functions. Fixes http://llvm.org/PR5735.Jeffrey Yasskin2009-12-171-0/+29
| | | | llvm-svn: 91626
* This fixes a memory leak in OpaqueType found by Google's internal heapchecker.Jeffrey Yasskin2009-12-171-0/+31
| | | | llvm-svn: 91611
* Reinstate r91208 to fix available_externally linkage for globals, withJeffrey Yasskin2009-12-132-0/+28
| | | | | | | nlewycky's fix to add -rdynamic so the JIT can look symbols up in Linux builds of the JITTests binary. llvm-svn: 91250
* Revert r91208. Something on Linux prevents the JIT from looking up a symbolJeffrey Yasskin2009-12-121-25/+0
| | | | | | defined in the test, and I don't have time tonight to figure it out. llvm-svn: 91209
* Fix available_externally linkage for globals. It's probably still notJeffrey Yasskin2009-12-121-0/+25
| | | | | | supported by emitGlobals, but I don't have a test case for that. llvm-svn: 91208
* Add an implementation of the delta debugging algorithm.Daniel Dunbar2009-12-031-0/+96
| | | | | | | - This is a pretty slow / memory intensive implementation, and I will likely change it to an iterative model, but it works. llvm-svn: 90447
* Oops. Re-disable JITTest.NoStubs on ARM and PPC since they still use stubs toJeffrey Yasskin2009-11-241-0/+5
| | | | | | make far calls work. llvm-svn: 89733
* * Move stub allocation inside the JITEmitter, instead of exposing aJeffrey Yasskin2009-11-231-3/+34
| | | | | | | | | | | | | | way for each TargetJITInfo subclass to allocate its own stubs. This means stubs aren't as exactly-sized anymore, but it lets us get rid of TargetJITInfo::emitFunctionStubAtAddr(), which lets ARM and PPC support the eager JIT, fixing http://llvm.org/PR4816. * Rename the JITEmitter's stub creation functions to describe the kind of stub they create. So far, all of them create lazy-compilation stubs, but they sometimes get used when far-call stubs are needed. Fixing http://llvm.org/PR5201 will involve fixing this. llvm-svn: 89715
* Only run this mutex test if threading is enabled. ThisDuncan Sands2009-11-191-0/+3
| | | | | | fixes PR5395. llvm-svn: 89385
* Reenable Split2 StringRef test with Apple gcc.Benjamin Kramer2009-11-191-6/+0
| | | | llvm-svn: 89357
* "XFAIL" the Split2 StringReft test with Apple gcc, which miscompiles it.Daniel Dunbar2009-11-171-0/+6
| | | | | | | - I plan on fixing/workarounding this, but until then I'd like the bots to stay green. llvm-svn: 89077
* Revert the test from r88984. It relies on being able to mmap 16GB ofJeffrey Yasskin2009-11-161-151/+6
| | | | | | | | | | address space (though it only uses a small fraction of that), and the buildbots disallow that. Also add a comment to the Makefile's ulimit line warning future developers that changing it won't work. llvm-svn: 88994
* Make X86-64 in the Large model always emit 64-bit calls.Jeffrey Yasskin2009-11-161-6/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The large code model is documented at http://www.x86-64.org/documentation/abi.pdf and says that calls should assume their target doesn't live within the 32-bit pc-relative offset that fits in the call instruction. To do this, we turn off the global-address->target-global-address conversion in X86TargetLowering::LowerCall(). The first attempt at this broke the lazy JIT because it can separate the movabs(imm->reg) from the actual call instruction. The lazy JIT receives the address of the movabs as a relocation and needs to record the return address from the call; and then when that call happens, it needs to patch the movabs with the newly-compiled target. We could thread the call instruction into the relocation and record the movabs<->call mapping explicitly, but that seems to require at least as much new complication in the code generator as this change. To fix this, we make lazy functions _always_ go through a call stub. You'd think we'd only have to force lazy calls through a stub on difficult platforms, but that turns out to break indirect calls through a function pointer. The right fix for that is to distinguish between calls and address-of operations on uncompiled functions, but that's complex enough to leave for someone else to do. Another attempt at this defined a new CALL64i pseudo-instruction, which expanded to a 2-instruction sequence in the assembly output and was special-cased in the X86CodeEmitter's emitInstruction() function. That broke indirect calls in the same way as above. This patch also removes a hack forcing Darwin to the small code model. Without far-call-stubs, the small code model requires things of the JITMemoryManager that the DefaultJITMemoryManager can't provide. Thanks to echristo for lots of testing! llvm-svn: 88984
* This test doesn't work on arm either.Benjamin Kramer2009-11-141-3/+1
| | | | llvm-svn: 88794
* Disable the JITTest.NoStubs test for Darwin PPC. It apparently doesn't implementBill Wendling2009-11-131-0/+4
| | | | | | emitFunctionStubAtAddr. llvm-svn: 88708
* Distinguish "a," from "a". The first one splits into "a" + "" and the second ↵Rafael Espindola2009-11-131-0/+5
| | | | | | | | one into "a" + 0. llvm-svn: 87084
* Switch to smallvector. Also fix issue with using unsigend for MaxSplit.Rafael Espindola2009-11-131-2/+3
| | | | llvm-svn: 87068
* Add a new split method to StringRef that puts the substrings in a vector.Rafael Espindola2009-11-131-0/+75
| | | | llvm-svn: 87058
* Use stubs when we have them, otherwise use code we already have,Eric Christopher2009-11-121-0/+41
| | | | | | | | otherwise create a stub. Add a test to make sure we don't create extraneous stubs. llvm-svn: 86941
* Fix JITTest.ModuleDeletion in -Asserts mode (which turns off JITEmitDebugInfoJeffrey Yasskin2009-11-111-1/+7
| | | | | | by default). llvm-svn: 86807
* Add From arguments to StringRef search functions, and tweak doxyments.Daniel Dunbar2009-11-111-0/+10
| | | | | | Also, add unittests for find_first_of and find_first_not_of. llvm-svn: 86770
* Fix DenseMap iterator constness.Jeffrey Yasskin2009-11-101-0/+12
| | | | | | | | | | | | | | | | | | | This patch forbids implicit conversion of DenseMap::const_iterator to DenseMap::iterator which was possible because DenseMapIterator inherited (publicly) from DenseMapConstIterator. Conversion the other way around is now allowed as one may expect. The template DenseMapConstIterator is removed and the template parameter IsConst which specifies whether the iterator is constant is added to DenseMapIterator. Actually IsConst parameter is not necessary since the constness can be determined from KeyT but this is not relevant to the fix and can be addressed later. Patch by Victor Zverovich! llvm-svn: 86636
* Remove dlsym stubs, with Nate Begeman's permission.Jeffrey Yasskin2009-11-091-3/+0
| | | | llvm-svn: 86606
* Fix the ModuleDeletion test on PPC and ARM.Jeffrey Yasskin2009-10-281-0/+1
| | | | llvm-svn: 85352
* Revert the API changes from r85295 to make it easier for people to buildJeffrey Yasskin2009-10-271-3/+3
| | | | | | against both 2.6 and HEAD. The default is still changed to eager jitting. llvm-svn: 85330
* Factor out redundancy from clone() implementations.Devang Patel2009-10-271-28/+28
| | | | llvm-svn: 85327
* Change the JIT to compile eagerly by default as agreed inJeffrey Yasskin2009-10-271-3/+3
| | | | | | | http://llvm.org/PR5184, and beef up the comments to describe what both options do and the risks of lazy compilation in the presence of threads. llvm-svn: 85295
* Type.h doesn't need to #include LLVMContext.hChris Lattner2009-10-275-1/+5
| | | | llvm-svn: 85254
* Automatically do the equivalent of freeMachineCodeForFunction(F) when F isJeffrey Yasskin2009-10-272-9/+162
| | | | | | | | | | | | | being destroyed. This allows users to run global optimizations like globaldce even after some functions have been jitted. This patch also removes the Function* parameter to JITEventListener::NotifyFreeingMachineCode() since it can cause that to be called when the Function is partially destroyed. This change will be even more helpful later when I think we'll want to allow machine code to actually outlive its Function. llvm-svn: 85182
* Remove / use flags that are now set in the Makefile.config.Julien Lerouge2009-10-261-1/+1
| | | | llvm-svn: 85149
* Move DataTypes.h to include/llvm/System, update all users. This breaks the lastChandler Carruth2009-10-261-1/+1
| | | | | | direct inclusion edge from System to Support. llvm-svn: 85086
* Fix http://llvm.org/PR4822: allow module deletion after a function has beenJeffrey Yasskin2009-10-232-3/+30
| | | | | | | | | | | | | | compiled. When functions are compiled, they accumulate references in the JITResolver's stub maps. This patch removes those references when the functions are destroyed. It's illegal to destroy a Function when any thread may still try to call its machine code. This patch also updates r83987 to use ValueMap instead of explicit CallbackVHs and fixes a couple "do stuff inside assert()" bugs from r84522. llvm-svn: 84975
* Fix stylistic and documentation problems in ValueMap found by Nick Lewycky andJeffrey Yasskin2009-10-231-3/+3
| | | | | | Evan Cheng. llvm-svn: 84967
* Try r84890 again (adding ValueMap<>), now that I've tested the compile onJeffrey Yasskin2009-10-221-0/+291
| | | | | | gcc-4.4. llvm-svn: 84902
* Revert r84890, which broke the linux build.Jeffrey Yasskin2009-10-221-291/+0
| | | | llvm-svn: 84892
* Add a ValueMap<ValueOrSubclass*, T> type. ValueMap<Value*, T> is safe to useJeffrey Yasskin2009-10-221-0/+291
| | | | | | | | | | | | even when keys get RAUWed and deleted during its lifetime. By default the keys act like WeakVHs, but users can pass a third template parameter to configure how updates work and whether to do anything beyond updating the map on each action. It's also possible to automatically acquire a lock around ValueMap updates triggered by RAUWs and deletes, to support the ExecutionEngine. llvm-svn: 84890
* Move the Function*->allocated blocks map from the JITMemoryManager to theJeffrey Yasskin2009-10-201-38/+39
| | | | | | | | | | | | | | | JITEmitter. I'm gradually making Functions auto-remove themselves from the JIT when they're destroyed. In this case, the Function needs to be removed from the JITEmitter, but the map recording which Functions need to be removed lived behind the JITMemoryManager interface, which made things difficult. This patch replaces the deallocateMemForFunction(Function*) method with a pair of methods deallocateFunctionBody(void *) and deallocateExceptionTable(void *) corresponding to the two startFoo/endFoo pairs. llvm-svn: 84651
* PowerPC ifdef'ing considered more complicated than one might like.Daniel Dunbar2009-10-201-1/+1
| | | | llvm-svn: 84603
* Correct test for PowerPC.Nick Lewycky2009-10-201-1/+1
| | | | llvm-svn: 84595
* Also check for __POWERPC__ when skipping these tests.Daniel Dunbar2009-10-191-1/+1
| | | | llvm-svn: 84482
* Add raw_ostream::write_escaped, for writing escaped strings.Daniel Dunbar2009-10-171-0/+16
| | | | llvm-svn: 84355
* Disable another unittest that doesn't work on arm and ppc.Benjamin Kramer2009-10-151-1/+1
| | | | llvm-svn: 84186
* The ARM and PowerPC jits are broken in this regard.Nick Lewycky2009-10-141-0/+2
| | | | llvm-svn: 84128
* Keep track of stubs that are created. This fixes PR5162 and probably PR4822 andJeffrey Yasskin2009-10-131-0/+96
| | | | | | 4406. Patch by Nick Lewycky! llvm-svn: 84032
* Make the ExecutionEngine automatically remove global mappings on when theirJeffrey Yasskin2009-10-131-0/+13
| | | | | | | GlobalValue is destroyed. Function destruction still leaks machine code and can crash on leaked stubs, but this is some progress. llvm-svn: 83987
OpenPOWER on IntegriCloud