summaryrefslogtreecommitdiffstats
path: root/llvm/unittests
Commit message (Collapse)AuthorAgeFilesLines
* ADT: remove MinGW32 and Cygwin OSType enumSaleem Abdulrasool2014-08-093-4/+1
| | | | | | | | | | | Remove the MinGW32 and Cygwin types from the OSType enumeration. These values are represented via environments of Windows. It is a source of confusion and needlessly clutters the code. The cost of doing this is that we must sink the check for them into the normalization code path along with the spelling. Addresses PR20592. llvm-svn: 215303
* Fix expected windows result.Rafael Espindola2014-08-091-1/+1
| | | | llvm-svn: 215267
* Remove dead code. Fixes pr20544.Rafael Espindola2014-08-081-6/+6
| | | | llvm-svn: 215243
* Fix bug 20125 - clang-format segfaults on bad config.Rafael Espindola2014-08-081-0/+7
| | | | | | | The problem was in unchecked dyn_cast inside of Input::createHNodes. Patch by Roman Kashitsyn! llvm-svn: 215205
* Temporarily Revert "Nuke the old JIT." as it's not quite ready toEric Christopher2014-08-0717-3/+2072
| | | | | | | | | | | be deleted. This will be reapplied as soon as possible and before the 3.6 branch date at any rate. Approved by Jim Grosbach, Lang Hames, Rafael Espindola. This reverts commits r215111, 215115, 215116, 215117, 215136. llvm-svn: 215154
* fix configure+make buildRafael Espindola2014-08-072-2/+2
| | | | llvm-svn: 215116
* Nuke the old JIT.Rafael Espindola2014-08-0715-2070/+1
| | | | | | | | | I am sure we will be finding bits and pieces of dead code for years to come, but this is a good start. Thanks to Lang Hames for making MCJIT a good replacement! llvm-svn: 215111
* Fix SmallDenseMap assignment operator.Andrew Trick2014-08-041-0/+5
| | | | | | Self assignment would lead to buckets of garbage, causing quadratic probing to hang. llvm-svn: 214790
* Path: Stop claiming path::const_iterator is bidirectionalJustin Bogner2014-08-041-3/+3
| | | | | | | | | | | | | | | | | | | | | | path::const_iterator claims that it's a bidirectional iterator, but it doesn't satisfy all of the contracts for a bidirectional iterator. For example, n3376 24.2.5 p6 says "If a and b are both dereferenceable, then a == b if and only if *a and *b are bound to the same object", but this doesn't work with how we stash and recreate Components. This means that our use of reverse_iterator on this type is invalid and leads to many of the valgrind errors we're hitting, as explained by Tilmann Scheller here: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20140728/228654.html Instead, we admit that path::const_iterator is only an input_iterator, and implement a second input_iterator for path::reverse_iterator (by changing const_iterator::operator-- to reverse_iterator::operator++). All of the uses of this just traverse once over the path in one direction or the other anyway. llvm-svn: 214737
* BitcodeTests: Fix LINK_COMPONENTS.NAKAMURA Takumi2014-08-022-2/+3
| | | | llvm-svn: 214598
* IR: Add Value::reverseUseList()Duncan P. N. Exon Smith2014-08-011-0/+43
| | | | | | I'm going to use this to improve `verify-uselistorder`. Part of PR5680. llvm-svn: 214594
* BitcodeReader: Fix some BlockAddress forward reference corner casesDuncan P. N. Exon Smith2014-08-011-0/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | `BlockAddress`es are interesting in that they can reference basic blocks from *outside* the block's function. Since basic blocks are not global values, this presents particular challenges for lazy parsing. One corner case was found in PR11677 and fixed in r147425. In that case, a global variable references a block address. It's necessary to load the relevant function to resolve the forward reference before doing anything with the module. By inspection, I found (and have fixed here) two other cases: - An instruction from one function references a block address from another function, and only the first function is lazily loaded. I fixed this the same way as PR11677: by eagerly loading the referenced function. - A function whose block address is taken is dematerialized, leaving invalid references to it. I fixed this by refusing to dematerialize functions whose block addresses are taken (if you have to load it, you can't unload it). llvm-svn: 214559
* Try to fix configure+make after r214556Duncan P. N. Exon Smith2014-08-011-1/+1
| | | | llvm-svn: 214558
* Rewrite BitReaderTest, NFCDuncan P. N. Exon Smith2014-08-012-32/+40
| | | | | | | | | | | | | | Rewrite the single unit test in `BitReaderTest` so that it's easier to add more tests. - Parse from an assembly string rather than using API. - Use more helper functions. - Use a separate context for the module on the other side. Aside from relying on the assembly parser, there's no functionality change intended. llvm-svn: 214556
* [Debug Info] add DISubroutineType and its creation takes DITypeArray. Manman Ren2014-07-281-1/+1
| | | | | | | | | | | DITypeArray is an array of DITypeRef, at its creation, we will create DITypeRef (i.e use the identifier if the type node has an identifier). This is the last patch to unique the type array of a subroutine type. rdar://17628609 llvm-svn: 214132
* [ADT] Add a remarkbly useful little helper routine to ArrayRef forChandler Carruth2014-07-271-0/+22
| | | | | | | | | | | | | | | | checking whether the ArrayRef is equal to an explicit list of arguments. This is particularly easy to implement even without variadic templates because ArrayRef happens to be homogeneously typed. As a consequence we can use a "clever" wrapper type and default arguments to capture in a single method many arguments as well as *how many* arguments the user specified. Thanks to Dave Blaikie for helping me pull together this little helper. Suggestions for how to improve or generalize it are of course welcome. I'll be using it immediately in my follow-up patch. =D llvm-svn: 214041
* IR/UseTest.cpp: Avoid std::to_string() to appease mingw32 bot.NAKAMURA Takumi2014-07-261-5/+10
| | | | llvm-svn: 213994
* Fix r213824 on windowsDuncan P. N. Exon Smith2014-07-241-0/+2
| | | | llvm-svn: 213866
* AA metadata refactoring (introduce AAMDNodes)Hal Finkel2014-07-241-1/+1
| | | | | | | | | | | | | | | | | | | | In order to enable the preservation of noalias function parameter information after inlining, and the representation of block-level __restrict__ pointer information (etc.), additional kinds of aliasing metadata will be introduced. This metadata needs to be carried around in AliasAnalysis::Location objects (and MMOs at the SDAG level), and so we need to generalize the current scheme (which is hard-coded to just one TBAA MDNode*). This commit introduces only the necessary refactoring to allow for the introduction of other aliasing metadata types, but does not actually introduce any (that will come in a follow-up commit). What it does introduce is a new AAMDNodes structure to hold all of the aliasing metadata nodes associated with a particular memory-accessing instruction, and uses that structure instead of the raw MDNode* in AliasAnalysis::Location, etc. No functionality change intended. llvm-svn: 213859
* [CMake] LineEditorTests: Add Support to link_components.NAKAMURA Takumi2014-07-241-0/+1
| | | | | | Even if LLVMSupport is added in add_unittests, LLVMSupport may be here as consistency. llvm-svn: 213854
* IR: Add Value::sortUseList()Duncan P. N. Exon Smith2014-07-242-0/+63
| | | | | | | | | | | Add `Value::sortUseList()`, templated on the comparison function to use. The sort is an iterative merge sort that uses a binomial vector of already-merged lists to limit the size overhead to `O(1)`. This is part of PR5680. llvm-svn: 213824
* unittests: Actually test reverse iterators in Path testsJustin Bogner2014-07-161-5/+5
| | | | | | | | | | | | | | | | | | | | This re-enables some #if 0'd code (since 2010) in the Path unittests and makes at least a weak effort at testing sys::path's rbegin/rend. This change was inspired by some test failures near uses of rbegin and rend here: http://lab.llvm.org:8011/builders/clang-x86_64-linux-vg/builds/3209 The "valgrind was whining" comment looked promising in terms of a simpler to debug case of the same errors. However, it appears that the valgrind complaints the comment was referring to are distinct from the ones in the frontend, since this updated test isn't complaining for me under valgrind. In any case, the disabled tests weren't helping anybody. llvm-svn: 213125
* ADT: Add MapVector::remove_ifDuncan P. N. Exon Smith2014-07-151-0/+21
| | | | | | | Add a `MapVector::remove_if()` that erases items in bulk in linear time, as opposed to quadratic time for repeated calls to `MapVector::erase()`. llvm-svn: 213090
* ADT: Fix MapVector::erase()Duncan P. N. Exon Smith2014-07-151-0/+15
| | | | | | | | | | | | Actually update the changed indexes in the map portion of `MapVector` when erasing from the middle. Add a unit test that checks for this. Note that `MapVector::erase()` is a linear time operation (it was and still is). I'll commit a new method in a moment called `MapVector::remove_if()` that deletes multiple entries in linear time, which should be slightly less painful. llvm-svn: 213084
* Support: Fix option handling when using cl::Required with aliasoptJustin Bogner2014-07-141-0/+19
| | | | | | | | | | | | | | | | Until now, attempting to create an alias of a required option would complain if the user supplied the alias, because the required option didn't have a value. Similarly, if you said the alias was required, then using the base option would complain that the alias wasn't supplied. Lastly, if you put required on both, *neither* option would work. By changning alias to overload addOccurrence and setting cl::Required on the original option, we can get this to behave in a more useful way. I've also added a test and updated a user that was getting this wrong. llvm-svn: 212986
* [CMake] Update libdeps.NAKAMURA Takumi2014-07-144-0/+5
| | | | llvm-svn: 212920
* Move the API and implementation of clang::driver::getARMCPUForMArch() to ↵Argyrios Kyrtzidis2014-07-111-0/+12
| | | | | | | | llvm::Triple::getARMCPUForArch(). Suggested by Eric Christopher. llvm-svn: 212846
* Decouple llvm::SpecialCaseList text representation and its LLVM IR semantics.Alexey Samsonov2014-07-094-233/+127
| | | | | | | | | | | | | | | | Turn llvm::SpecialCaseList into a simple class that parses text files in a specified format and knows nothing about LLVM IR. Move this class into LLVMSupport library. Implement two users of this class: * DFSanABIList in DFSan instrumentation pass. * SanitizerBlacklist in Clang CodeGen library. The latter will be modified to use actual source-level information from frontend (source file names) instead of unstable LLVM IR things (LLVM Module identifier). Remove dependency edge from ClangCodeGen/ClangDriver to LLVMTransformUtils. No functionality change. llvm-svn: 212643
* These should be EXPECT_TRUE, not EXPECT_FALSE. Amends r212415.Aaron Ballman2014-07-061-2/+2
| | | | llvm-svn: 212419
* Fixing compile errors related to changes with MemoryBuffer::getFile.Aaron Ballman2014-07-061-6/+6
| | | | llvm-svn: 212415
* Update the MemoryBuffer API to use ErrorOr.Rafael Espindola2014-07-061-7/+8
| | | | llvm-svn: 212405
* ADT: Add a drop_back() helper to ArrayRefDavid Majnemer2014-07-051-0/+7
| | | | | | | | The slice(N, M) interface is powerful but not concise when wanting to drop a few elements off of an ArrayRef, fix this by adding a drop_back method. llvm-svn: 212370
* Invert the MC -> Object dependency.Rafael Espindola2014-07-037-29/+6
| | | | | | | | | Now that we have a lib/MC/MCAnalysis, the dependency was there just because of two helper classes. Move the two over to MC. This will allow IRObjectFile to parse inline assembly. llvm-svn: 212248
* Move CFG building code to a new lib/MC/MCAnalysis library.Rafael Espindola2014-07-023-9/+5
| | | | | | | The new library is 150KB on a Release+Asserts build, so it is quiet a bit of code that regular users of MC don't need to link with now. llvm-svn: 212209
* Remove unused typedef. GCC warns about this.Benjamin Kramer2014-07-011-3/+0
| | | | llvm-svn: 212105
* Reverting r211950 -- it did not help resolve the -Wcomment warnings ↵Aaron Ballman2014-06-271-4/+4
| | | | | | triggered in GCC. llvm-svn: 211953
* Adding some trailing whitespace after a comment previously ending with \ to ↵Aaron Ballman2014-06-271-4/+4
| | | | | | ensure that it isn't lexed as a multiline comment. This silences some -Wcomment warnings. llvm-svn: 211950
* Re-apply r211287: Remove support for LLVM runtime multi-threading.Chandler Carruth2014-06-271-2/+0
| | | | | | | I'll fix the problems in libclang and other projects in ways that don't require <mutex> until we sort out the cygwin situation. llvm-svn: 211900
* Revert "Introduce a string_ostream string builder facilty"Alp Toker2014-06-261-6/+7
| | | | | | Temporarily back out commits r211749, r211752 and r211754. llvm-svn: 211814
* Introduce a string_ostream string builder faciltyAlp Toker2014-06-261-7/+6
| | | | | | | | | | | | | | | | | | | | string_ostream is a safe and efficient string builder that combines opaque stack storage with a built-in ostream interface. small_string_ostream<bytes> additionally permits an explicit stack storage size other than the default 128 bytes to be provided. Beyond that, storage is transferred to the heap. This convenient class can be used in most places an std::string+raw_string_ostream pair or SmallString<>+raw_svector_ostream pair would previously have been used, in order to guarantee consistent access without byte truncation. The patch also converts much of LLVM to use the new facility. These changes include several probable bug fixes for truncated output, a programming error that's no longer possible with the new interface. llvm-svn: 211749
* Revert r211287, "Remove support for LLVM runtime multi-threading."NAKAMURA Takumi2014-06-241-0/+2
| | | | | | libclang still requires it on cygming, lack of incomplete <mutex>. llvm-svn: 211592
* Support: Return ScaledNumbers::MaxScale from getQuotient()Duncan P. N. Exon Smith2014-06-241-4/+4
| | | | | | Return MaxScale now that it's available. llvm-svn: 211559
* Support: Extract ScaledNumbers::getSum() and getDifference()Duncan P. N. Exon Smith2014-06-231-0/+150
| | | | llvm-svn: 211553
* Support: Return scale from ScaledNumbers::matchScales()Duncan P. N. Exon Smith2014-06-231-1/+1
| | | | | | This will be convenient when extracting `ScaledNumbers::getSum()`. llvm-svn: 211552
* Support: Extract ScaledNumbers::matchScale()Duncan P. N. Exon Smith2014-06-231-0/+64
| | | | llvm-svn: 211531
* Recommit 211309 (StringMap::insert), reverted in 211328 due to issues with ↵David Blaikie2014-06-231-2/+40
| | | | | | | | | | | | private, but non-deleted, move members. Certain versions of GCC (~4.7) couldn't handle the SFINAE on access control, but with "= delete" (hidden behind a macro for portability) this issue is worked around/addressed. Patch by Agustín Bergé llvm-svn: 211525
* Cleanup r211507Duncan P. N. Exon Smith2014-06-231-1/+1
| | | | llvm-svn: 211521
* Support: Extract ScaledNumbers::compare()Duncan P. N. Exon Smith2014-06-231-0/+37
| | | | llvm-svn: 211507
* Support: ScaledNumber: Fix inconsistent test namesDuncan P. N. Exon Smith2014-06-201-6/+6
| | | | llvm-svn: 211414
* Support: Write ScaledNumbers::getLg{,Floor,Ceiling}()Duncan P. N. Exon Smith2014-06-201-0/+94
| | | | llvm-svn: 211413
OpenPOWER on IntegriCloud