summaryrefslogtreecommitdiffstats
path: root/llvm/unittests
Commit message (Collapse)AuthorAgeFilesLines
* llvm/unittests/ExecutionEngine/JIT/CMakeLists.txt: Unbreak build.NAKAMURA Takumi2012-06-211-1/+1
| | | | llvm-svn: 158914
* Add a pragma to supress an MSVC warning on some of the absurd code I'mChandler Carruth2012-06-211-0/+6
| | | | | | | | using to test the alignment support library. Patch from Nikola on IRC. llvm-svn: 158912
* Add some missing dependencies here that I missed in my first passChandler Carruth2012-06-211-1/+4
| | | | | | through. Also sort them. llvm-svn: 158911
* Completely refactor the structuring of unittest CMake files to match theChandler Carruth2012-06-2110-148/+185
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Makefiles, the CMake files in every other part of the LLVM tree, and sanity. This should also restore the output tree structure of all the unit tests, sorry for breaking that, and thanks for letting me know. The fundamental change is to put a CMakeLists.txt file in the unittest directory, with a single test binary produced from it. This has several advantages: - No more weird directory stripping in the unittest macro, allowing it to be used more readily in other projects. - No more directory prefixes on all the source files. - Allows correct and precise use of LLVM's per-directory dependency system. - Allows use of the checking logic for source files that have not been added to the CMake build. This uncovered a file being skipped with CMake in LLVM and one in Clang's unit tests. - Makes Specifying conditional compilation or other custom logic for JIT tests easier. It did require adding the concept of an explicit 'optional' source file to the CMake build so that the missing-file check can skip cases where the file is *supposed* to be missing. =] This is another chunk of refactoring the CMake build in order to make it usable for other clients like CompilerRT / ASan / TSan. Note that this is interdependent with a Clang CMake change. llvm-svn: 158909
* Factor the logic for setting up a GoogleTest unit test executable intoChandler Carruth2012-06-211-45/+3
| | | | | | | a helper function in CMake. This will allow us to share all of this logic with Clang, and eventually CompilerRT. llvm-svn: 158896
* Simplify the naming pattern in the unittests' CMake fileChandler Carruth2012-06-211-12/+16
| | | | llvm-svn: 158893
* Remove one of the LLVM-specific CMake hacks in favor of standard CMakeChandler Carruth2012-06-211-6/+7
| | | | | | | | | | facilities. This was only used in one place in LLVM, and was used pervasively (but with different code!) in Clang. It has no advantages over the standard CMake facilities and in some cases disadvantages. llvm-svn: 158889
* Fix inappropriate use of anonymous namespaces in unittests.Chandler Carruth2012-06-202-2/+6
| | | | | | | | | | | The TEST_F macros actually declare *subclasses* of the test fixtures. Even if they didn't we don't want them to declare external functions. The entire unit test, including both the fixture class and the fixture test cases should be wrapped in the anonymous namespace. This issue was caught by the new '-Winternal-linkage-in-inline' warning. llvm-svn: 158798
* Add permissions(), map_file_pages(), and unmap_file_pages() to llvm::sys::fs ↵Nick Kledzik2012-06-201-0/+65
| | | | | | and add unit test. Unix is implemented. Windows side needs to be implemented. llvm-svn: 158770
* Fix PR13148, an inf-loop in StringMap.Chandler Carruth2012-06-191-0/+22
| | | | | | | | | | | | | | | StringMap suffered from the same bug as DenseMap: when you explicitly construct it with a small number of buckets, you can arrange for the tombstone-based growth path to be followed when the number of buckets was less than '8'. In that case, even with a full map, it would compare '0' as not less than '0', and refuse to grow the table, leading to inf-loops trying to find an empty bucket on the next insertion. The fix is very simple: use '<=' as the comparison. The same fix was applied to DenseMap as well during its recent refactoring. Thanks to Alex Bolz for the great report and test case. =] llvm-svn: 158725
* Remove some superfluous SCOPED_TRACEs from this unit test.Chandler Carruth2012-06-191-6/+0
| | | | | | | GoogleTest already prints errors with all the information about which test case contained the error. llvm-svn: 158724
* For reasons I can't fathom MSVC supports ULL but not LLU suffixes on long ↵Benjamin Kramer2012-06-171-1/+1
| | | | | | long integer literals. llvm-svn: 158648
* Add missing unittest files to the cmake build.Benjamin Kramer2012-06-171-1/+9
| | | | llvm-svn: 158647
* Remove SmallMap unittests, unbreaking the build.Benjamin Kramer2012-06-171-162/+0
| | | | | | I don't know how useful these are for SmallDenseMap, I'll leave that decision to Chandler. llvm-svn: 158646
* Bring the return value of SmallVector::insert in line with std::vector::insert.Benjamin Kramer2012-06-171-4/+30
| | | | | | | | It always returns the iterator for the first inserted element, or the passed in iterator if the inserted range was empty. Flesh out the unit test more and fix all the cases it uncovered so far. llvm-svn: 158645
* SmallVector: return a valid iterator for the rare case of inserting an empty ↵Benjamin Kramer2012-06-171-0/+7
| | | | | | | | range into a SmallVector. Patch by Johannes Schaub! llvm-svn: 158643
* Add a unit test for 'swap', and fix a pile of bugs inChandler Carruth2012-06-171-0/+36
| | | | | | | | | | | | | | | SmallDenseMap::swap. First, make it parse cleanly. Yay for uninstantiated methods. Second, make the inline-buckets case work correctly. This is way trickier than it should be due to the uninitialized values in empty and tombstone buckets. Finally fix a few typos that caused construction/destruction mismatches in the counting unittest. llvm-svn: 158641
* Disable a particular assertion on MSVC... I'm deeply disturbed by itsChandler Carruth2012-06-171-0/+5
| | | | | | implementation of the class layout for the V8 type. llvm-svn: 158640
* Add tests for *DenesMap for both key and value types' construction andChandler Carruth2012-06-171-1/+46
| | | | | | | | | | | | | | | | | | | destruction and fix a bug in SmallDenseMap they caught. This is kind of a poor-man's version of the testing that just adds the addresses to a set on construction and removes them on destruction. We check that double construction and double destruction don't occur. Amusingly enough, this is enough to catch a lot of SmallDenseMap issues because we spend a lot of time with fixed stable addresses in the inline buffer. The SmallDenseMap bug fix included makes grow() not double-destroy in some cases. It also fixes a FIXME there, the code was pretty crappy. We now don't have any wasted initialization, but we do move the entries in inline bucket array an extra time. It's probably a better tradeoff, and is much easier to get correct. llvm-svn: 158639
* Introduce a SmallDenseMap container that re-uses the existing DenseMapChandler Carruth2012-06-171-27/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | implementation. This type includes an inline bucket array which is used initially. Once it is exceeded, an array of 64 buckets is allocated on the heap. The bucket count grows from there as needed. Some highlights of this implementation: - The inline buffer is very carefully aligned, and so supports types with alignment constraints. - It works hard to avoid aliasing issues. - Supports types with non-trivial constructors, destructors, copy constructions, etc. It works reasonably hard to minimize copies and unnecessary initialization. The most common initialization is to set keys to the empty key, and so that should be fast if at all possible. This class has a performance / space trade-off. It tries to optimize for relatively small maps, and so packs the inline bucket array densely into the object. It will be marginally slower than a normal DenseMap in a few use patterns, so it isn't appropriate everywhere. The unit tests for DenseMap have been generalized a bit to support running over different map implementations in addition to different key/value types. They've then been automatically extended to cover the new container through the magic of GoogleTest's typed tests. All of this is still a bit rough though. I'm going to be cleaning up some aspects of the implementation, documenting things better, and adding tests which include non-trivial types. As soon as I'm comfortable with the correctness, I plan to switch existing users of SmallMap over to this class as it is already more correct w.r.t. construction and destruction of objects iin the map. Thanks to Benjamin Kramer for all the reviews of this and the lead-up patches. That said, more review on this would really be appreciated. As I've noted a few times, I'm quite surprised how hard it is to get the semantics for a hashtable-based map container with a small buffer optimization correct. =] llvm-svn: 158638
* Add some somewhat exhaustive tests of sizeof properties of this horribleChandler Carruth2012-06-171-0/+60
| | | | | | construct just for my sanity. llvm-svn: 158637
* Update CMake build.Benjamin Kramer2012-06-161-1/+0
| | | | llvm-svn: 158601
* Merge the SmallBitVector and BitVector unit tests with gtest's typed test ↵Benjamin Kramer2012-06-162-212/+25
| | | | | | magic and bring SmallBitVector up to date. llvm-svn: 158600
* Relax one assertion -- long double has strange alignments on lots ofChandler Carruth2012-06-161-1/+6
| | | | | | | | | platforms. Also, remove one assertion on MSVC because it produces a completely preposterous result, claiming something needs 12-byte alignment. llvm-svn: 158599
* Try to reduce the size of the array used for compile-time testing byChandler Carruth2012-06-161-44/+48
| | | | | | making the bounds all '1', and chunking it a bit. llvm-svn: 158598
* Add support to the alignment support header for conjuring a characterChandler Carruth2012-06-162-0/+249
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | array of a suitable size and alignment for any of a number of different types to be stored into the character array. The mechanisms for producing an explicitly aligned type are fairly complex because this operation is poorly supported on all compilers. We've spent a fairly significant amount of time experimenting with different implementations inside of Google, and the one using explicitly expanded templates has been the most robust. Credit goes to Nick Lewycky for writing the first 20 versions or so of this logic we had inside of Google. I based this on the only one to actually survive. In case anyone is worried, yes we are both explicitly re-contributing and re-licensing it for LLVM. =] Once the issues with actually specifying the alignment are finished, it turns out that most compilers don't in turn align anything the way they are instructed. Testing of this logic against both Clang and GCC indicate that the alignment constraints are largely ignored by both compilers! I've come up with and used a work-around by wrapping each alignment-hinted type directly in a struct, and using that struct to align the character array through a union. This elaborate hackery is terrifying, but I've included testing that caught a terrifying number of bugs in every other technique I've tried. All of this in order to implement a poor C++98 programmers emulation of C++11 unrestricted unions in classes such as SmallDenseMap. llvm-svn: 158597
* Work around a bug with MSVC 10 where it fails to recognize a valid useChandler Carruth2012-06-161-0/+9
| | | | | | | | | of typename. GCC and Clang were fine with this, but MSVC won't accept it. Fortunately, it also doesn't need it. Yuck. Thanks to Nakamura for pointing this out in IRC. llvm-svn: 158593
* Type parameterize the DenseMap unit tests.Chandler Carruth2012-06-161-87/+102
| | | | | | | | | | | | These were already trying to be type parameterized over different key/value pairs. I've realized this goal using GoogleTest's typed test functionality. This allows us to easily replicate the tests across different key/value combinations and soon different mapping templates. I've fixed a few bugs in the tests and extended them a bit in the process as many tests were only applying to the int->int mapping. llvm-svn: 158589
* Round 2 of dead private variable removal.Benjamin Kramer2012-06-061-2/+2
| | | | | | | | LLVM is now -Wunused-private-field clean except for - lib/MC/MCDisassembler/Disassembler.h. Not sure why it keeps all those unaccessible fields. - gtest. llvm-svn: 158096
* Fix gtest build issue on Visual Studio 2012 RCJustin Holewinski2012-06-061-0/+6
| | | | llvm-svn: 158046
* IntegersSubsetMapping: added exclude operation, that allows to exclude ↵Stepan Dyatkovskiy2012-06-051-0/+174
| | | | | | subset of integers from current mapping. llvm-svn: 157989
* IntegersSubsetMapping:Stepan Dyatkovskiy2012-06-051-0/+1
| | | | | | | Changed type of Items collection: from std::vector to std::list. Also some small fixes made in IntegersSubset.h, IntegersSubsetMapping.h and IntegersSubsetTest.cpp. llvm-svn: 157987
* Added unittests for IntegersSubset and IntegersSubsetMapping.Stepan Dyatkovskiy2012-06-021-0/+180
| | | | | | | | | | - Fixed IntegersSubsetGeneric copy/assignment behaviour. - Fixed IntegersSubsetGeneric::getSize/getSingleValue methods. - Fixed IntegersSubsetGeneric::verify method. Also IntegersSubset.h and IntegersSubsetMapping.h headers was fixed. llvm-svn: 157887
* Fix typos found by http://github.com/lyda/misspell-checkBenjamin Kramer2012-06-022-2/+2
| | | | llvm-svn: 157885
* Remove the PTX back-end and all of its artifacts (triple, etc.)Justin Holewinski2012-05-241-6/+6
| | | | | | | | This back-end was deprecated in favor of the NVPTX back-end. NV_CONTRIB llvm-svn: 157417
* fix the quotient returned by sdivrem() for the case when LHS is negative and ↵Nuno Lopes2012-05-221-0/+28
| | | | | | | | RHS is positive based on a patch by Preston Briggs, with some modifications llvm-svn: 157231
* fix corner case in ConstantRange::intersectWith().Nuno Lopes2012-05-181-0/+5
| | | | | | this fixes the missed optimization I was seeing in the CorrelatedValuePropagation pass llvm-svn: 157032
* Disable JITTest.FunctionIsRecompiledAndRelinked and JITTest.NoStubsSimon Atanasyan2012-05-161-6/+8
| | | | | | on MIPS where they are not implemented. llvm-svn: 156935
* Remove warning about testing unsigned int with int.Bill Wendling2012-05-151-1/+1
| | | | llvm-svn: 156812
* Fixed one small stupid, but critical bug.Stepan Dyatkovskiy2012-05-151-0/+15
| | | | llvm-svn: 156810
* Remove the expensive BitVector::operator~().Jakob Stoklund Olesen2012-05-141-3/+4
| | | | | | | Returning a temporary BitVector is very expensive. If you must, create the temporary explicitly: Use BitVector(A).flip() instead of ~A. llvm-svn: 156768
* Add BitVector::anyCommon().Jakob Stoklund Olesen2012-05-141-1/+29
| | | | | | The existing operation (A & B).any() is very slow. llvm-svn: 156760
* [Support/StringRef] Add find_last_not_of and {r,l,}trim.Michael J. Spencer2012-05-111-0/+28
| | | | llvm-svn: 156652
* Add unittests for Triple::getMacOSXVersion and Triple::getiOSVersion.Chad Rosier2012-05-091-0/+65
| | | | llvm-svn: 156507
* SmallVector: Don't rely on having an assignment operator around in push_back ↵Benjamin Kramer2012-04-291-0/+13
| | | | | | for POD-like types. llvm-svn: 155791
* Fixed SmallMap test. The order of items is undefined in DenseMap. So being ↵Stepan Dyatkovskiy2012-04-261-10/+24
| | | | | | checking the increment for big mode, we can only check that all items are in map. llvm-svn: 155651
* Reapply the SmallMap patch with a fix.Benjamin Kramer2012-04-251-0/+133
| | | | | | Comparing ~0UL with an unsigned will always return false when long is 64 bits long. llvm-svn: 155568
* Revert "First implementation of:"Eric Christopher2012-04-251-133/+0
| | | | | | | | This reverts commit 76271a3366731d4c372fdebcd8d3437e6e09a61b. as it's breaking the bots. llvm-svn: 155562
* First implementation of:Stepan Dyatkovskiy2012-04-251-0/+133
| | | | | | | | | | | - FlatArrayMap. Very simple map container that uses flat array inside. - MultiImplMap. Map container interface, that has two modes, one for small amount of elements and one for big amount. - SmallMap. SmallMap is DenseMap compatible MultiImplMap. It uses FlatArrayMap for small mode, and DenseMap for big mode. Also added unittests for new classes and update for ProgrammersManual. For more details about new classes see ProgrammersManual and comments in sourcecode. llvm-svn: 155557
* SparseSet: Add support for key-derived indexes and arbitrary key types.Andrew Trick2012-04-201-1/+1
| | | | | | | | | | | | | | | | | | | This nicely handles the most common case of virtual register sets, but also handles anticipated cases where we will map pointers to IDs. The goal is not to develop a completely generic SparseSet template. Instead we want to handle the expected uses within llvm without any template antics in the client code. I'm adding a bit of template nastiness here, and some assumption about expected usage in order to make the client code very clean. The expected common uses cases I'm designing for: - integer keys that need to be reindexed, and may map to additional data - densely numbered objects where we want pointer keys because no number->object map exists. llvm-svn: 155227
OpenPOWER on IntegriCloud