summaryrefslogtreecommitdiffstats
path: root/llvm/utils
Commit message (Collapse)AuthorAgeFilesLines
* [globalisel] Fix an unused variable warning when NDEBUG is defined.Daniel Sanders2017-01-201-1/+1
| | | | llvm-svn: 292653
* [lit] Limit parallelism of sanitizer tests on Darwin [llvm part, take 2]Kuba Mracek2017-01-204-5/+23
| | | | | | | | | | Running lit tests and unit tests of ASan and TSan on macOS has very bad performance when running with a high number of threads. This is caused by xnu (the macOS kernel), which currently doesn't handle mapping and unmapping of sanitizer shadow regions (reserved VM which are several terabytes large) very well. The situation is so bad that increasing the number of threads actually makes the total testing time larger. The macOS buildbots are affected by this. Note that we can't easily limit the number of sanitizer testing threads without affecting the rest of the tests. This patch adds a special "group" into lit, and limits the number of concurrently running tests in this group. This helps solve the contention problem, while still allowing other tests to run in full, that means running lit with -j8 will still with 8 threads, and parallelism is only limited in sanitizer tests. Differential Revision: https://reviews.llvm.org/D28420 llvm-svn: 292548
* Re-commit: [globalisel] Tablegen-erate current Register Bank InformationDaniel Sanders2017-01-194-1/+320
| | | | | | | | | | | | | | | | | | | | | Summary: Adds a RegisterBank tablegen class that can be used to declare the register banks and an associated tablegen pass to generate the necessary code. Changes since first commit attempt: * Added missing guards * Added more missing guards * Found and fixed a use-after-free bug involving Twine locals Reviewers: t.p.northover, ab, rovka, qcolombet Reviewed By: qcolombet Subscribers: aditya_nandakumar, rengolin, kristof.beyls, vkalintiris, mgorny, dberris, llvm-commits, rovka Differential Revision: https://reviews.llvm.org/D27338 llvm-svn: 292478
* [lit] Support sharding testsuites, for parallel execution.Graydon Hoare2017-01-182-0/+121
| | | | | | | | | | | | | | | | | | | | | | | Summary: This change equips lit.py with two new options, --num-shards=M and --run-shard=N (set by default from env vars LIT_NUM_SHARDS and LIT_RUN_SHARD). The options must be used together, and N must be in 1..M. Together these options effect only test selection: they partition the testsuite into M equal-sized "shards", then select only the Nth shard. They can be used in a cluster of test machines to achieve a very crude (static) form of parallelism, with minimal configuration work. Reviewers: modocache, ddunbar Reviewed By: ddunbar Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28789 llvm-svn: 292417
* Re-revert: [globalisel] Tablegen-erate current Register Bank InformationDaniel Sanders2017-01-184-317/+1
| | | | | | | More missing guards. My build didn't notice it due to a stale file left over from a Global ISel build. llvm-svn: 292369
* Re-commit: [globalisel] Tablegen-erate current Register Bank InformationDaniel Sanders2017-01-184-1/+317
| | | | | | | | | | | | | | | | | | | | | | | Summary: Adds a RegisterBank tablegen class that can be used to declare the register banks and an associated tablegen pass to generate the necessary code. Changes since last commit: The new tablegen pass is now correctly guarded by LLVM_BUILD_GLOBAL_ISEL and this should fix the buildbots however it may not be the whole fix. The previous buildbot failures suggest there may be a memory bug lurking that I'm unable to reproduce (including when using asan) or spot in the source. If they re-occur on this commit then I'll need assistance from the bot owners to track it down. Reviewers: t.p.northover, ab, rovka, qcolombet Reviewed By: qcolombet Subscribers: aditya_nandakumar, rengolin, kristof.beyls, vkalintiris, mgorny, dberris, llvm-commits, rovka Differential Revision: https://reviews.llvm.org/D27338 llvm-svn: 292367
* [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefixMarina Yatsina2017-01-181-0/+4
| | | | | | | | | | | This patch fixes bugzilla 31576 (https://llvm.org/bugs/show_bug.cgi?id=31576). "data32" instruction prefix was not defined in the llvm. An exception had to be added to the X86 tablegen and AsmPrinter because both "data16" and "data32" are encoded to 0x66 (but in different modes). Differential Revision: https://reviews.llvm.org/D28468 llvm-svn: 292352
* [test-release.sh] Add Polly to the list of projectsPengxuan Zheng2017-01-181-1/+13
| | | | | | | | | | | | Reviewers: zinob, hans, grosser Reviewed By: hans, grosser Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28712 llvm-svn: 292323
* [LIT] Make util.executeCommand python3 friendlyEric Fiselier2017-01-181-0/+4
| | | | | | | | | | | | | | Summary: The parameter `input` to `subprocess.Popen.communicate(...)` must be an object of type `bytes` . This is strictly enforced in python3. This patch (1) allows `to_bytes` to be safely called redundantly. (2) Explicitly convert `input` within `executeCommand`. This allows for usages like `executeCommand(['clang++', '-'], input='int main() {}\n')`. Reviewers: ddunbar, BinaryKhaos, modocache, dim, EricWF Reviewed By: EricWF Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28736 llvm-svn: 292308
* Revert r292231.Kuba Mracek2017-01-174-28/+4
| | | | llvm-svn: 292237
* [lit] Limit parallelism of sanitizer tests on Darwin [llvm part]Kuba Mracek2017-01-174-4/+28
| | | | | | | | | | Running lit tests and unit tests of ASan and TSan on macOS has very bad performance when running with a high number of threads. This is caused by xnu (the macOS kernel), which currently doesn't handle mapping and unmapping of sanitizer shadow regions (reserved VM which are several terabytes large) very well. The situation is so bad that increasing the number of threads actually makes the total testing time larger. The macOS buildbots are affected by this. Note that we can't easily limit the number of sanitizer testing threads without affecting the rest of the tests. This patch adds a special "group" into lit, and limits the number of concurrently running tests in this group. This helps solve the contention problem, while still allowing other tests to run in full, that means running lit with -j8 will still with 8 threads, and parallelism is only limited in sanitizer tests. Differential Revision: https://reviews.llvm.org/D28420 llvm-svn: 292231
* [utils] Add libc++ and libc++abi config to llvm-litShoaib Meenai2017-01-171-0/+10
| | | | | | | | | | This allows us to use bin/llvm-lit to run individual libc++ and libc++abi tests without having to explicitly specify the site config paths, similar to other projects. Differential Revision: https://reviews.llvm.org/D28733 llvm-svn: 292203
* Revert r292132: [globalisel] Tablegen-erate current Register Bank ↵Daniel Sanders2017-01-164-317/+1
| | | | | | | | | Information'... Several buildbots encountered a crash in tablegen when building this commit. Reverting while I investigate the cause. llvm-svn: 292136
* [globalisel] Tablegen-erate current Register Bank InformationDaniel Sanders2017-01-164-1/+317
| | | | | | | | | | | | | | Summary: Adds a RegisterBank tablegen class that can be used to declare the register banks and an associated tablegen pass to generate the necessary code. Reviewers: t.p.northover, ab, rovka, qcolombet Subscribers: aditya_nandakumar, rengolin, kristof.beyls, vkalintiris, mgorny, dberris, llvm-commits, rovka Differential Revision: https://reviews.llvm.org/D27338 llvm-svn: 292132
* [X86] Merge the disassemblers handling of the different TYPE_RELs by getting ↵Craig Topper2017-01-161-6/+6
| | | | | | the size information from the ENCODING field. NFCI llvm-svn: 292096
* [X86] Reduce the number of operand 'types' the disassembler needs to deal ↵Craig Topper2017-01-161-87/+86
| | | | | | | | | with. NFCI We were frequently checking for a list of types and the different types conveyed no real information. So lump them together explicitly. llvm-svn: 292095
* [AVX-512] Begin giving the disassembler a way to recognize that VSIB is a ↵Craig Topper2017-01-161-15/+17
| | | | | | | | different encoding than regular addressing modes. This part first teaches it not to check error if EVEX.V2 is used by a VSIB instruction. llvm-svn: 292093
* [AVX-512] Correct memory operand size for VPGATHERQPS and VPGATHERQDCraig Topper2017-01-161-0/+2
| | | | | | | | | with ZMM index. Similar for SCATTER and the prefetch gather and scatter instructions. Fixes PR31618. llvm-svn: 292088
* Update update_test_checks so that . is a valid identifier character in ↵Daniel Berlin2017-01-151-1/+1
| | | | | | addition to _ llvm-svn: 292056
* [utils] Improve extraction of check prefixes from RUN linesNikolai Bozhenov2017-01-142-6/+6
| | | | | | | | | | | | Correct handling of the following FileCheck options is implemented in update_llc_test_checks.py and update_test_checks.py scripts: 1) -check-prefix (with a single dash) 2) -check-prefixes (with multiple prefixes) Differential Revision: https://reviews.llvm.org/D28572 llvm-svn: 292008
* Fix update_test_checks not to accidentally believe type names are variable namesDaniel Berlin2017-01-131-1/+1
| | | | llvm-svn: 291980
* Fix UBSan bots by blacklisting bits/stl_tree.h.Ivan Krasin2017-01-131-0/+7
| | | | | | | | | | | | | | | | Summary: libstdc++ has some undefined behavior in bits/stl_tree.h that has recently became excercised by some of the LLVM code. Given that fixing libstdc++ will take years, adding the file into a blacklist to fix bots seems like a necessity. Reviewers: vitalybuka Subscribers: llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D28686 llvm-svn: 291918
* Bump trunk version to 5.0.0svnHans Wennborg2017-01-121-2/+2
| | | | llvm-svn: 291815
* build_llvm_package.bat: Add note about what SWIG version to useHans Wennborg2017-01-111-0/+4
| | | | llvm-svn: 291682
* [gmock] Teach gmock ElementsAre and BeginEndDistanceIs matchers toChandler Carruth2017-01-111-12/+28
| | | | | | | | | | | | | | | | | | handle generic ranges by using std::begin and std::end rather than requiring things to look exactly like an STL container. Much of the credit for this goes to Dave Blaikie who helped me figure out the right incantations. This will probably be re-designed when I send this to the maintainers of gmock, so I've instead structured it to change is little as possible while it is a local patch. That makes it somewhat ugly, but I think a focused change is better for getting this to work for LLVM today and letting the upstream maintainers figure out the correct long-term pattern. Differential Revision: https://reviews.llvm.org/D28288 llvm-svn: 291623
* Add the 'googlemock' component of Google Test to LLVM's unittest libraries.Chandler Carruth2017-01-1027-2/+16952
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have two immediate motivations for adding this: 1) It makes writing expectations in tests *dramatically* easier. A quick example that is a taste of what is possible: std::vector<int> v = ...; EXPECT_THAT(v, UnorderedElementsAre(1, 2, 3)); This checks that v contains '1', '2', and '3' in some order. There are a wealth of other helpful matchers like this. They tend to be highly generic and STL-friendly so they will in almost all cases work out of the box even on custom LLVM data structures. I actually find the matcher syntax substantially easier to read even for simple assertions: EXPECT_THAT(a, Eq(b)); EXPECT_THAT(b, Ne(c)); Both of these make it clear what is being *tested* and what is being *expected*. With `EXPECT_EQ` this is implicit (the LHS is expected, the RHS is tested) and often confusing. With `EXPECT_NE` it is just not clear. Even the failure error messages are superior with the matcher based expectations. 2) When testing any kind of generic code, you are continually defining dummy types with interfaces and then trying to check that the interfaces are manipulated in a particular way. This is actually what mocks are *good* for -- testing *interface interactions*. With generic code, there is often no "fake" or other object that can be used. For a concrete example of where this is currently causing significant pain, look at the pass manager unittests which are riddled with counters incremented when methods are called. All of these could be replaced with mocks. The result would be more effective at testing the code by having tighter constraints. It would be substantially more readable and maintainable when updating the code. And the error messages on failure would have substantially more information as mocks automatically record stack traces and other information *when the API is misused* instead of trying to diagnose it after the fact. I expect that #1 will be the overwhelming majority of the uses of gmock, but I think that is sufficient to justify having it. I would actually like to update the coding standards to encourage the use of matchers rather than any other form of `EXPECT_...` macros as they are IMO a strict superset in terms of functionality and readability. I think that #2 is relatively rarely useful, but there *are* cases where it is useful. Historically, I think misuse of actual mocking as described in #2 has led to resistance towards this framework. I am actually sympathetic to this -- mocking can easily be overused. However I think this is not a significant concern in LLVM. First and foremost, LLVM has very careful and rare exposure of abstract interfaces or dependency injection, which are the most prone to abuse with mocks. So there are few opportunities to abuse them. Second, a large fraction of LLVM's unittests are testing *generic code* where mocks actually make tremendous sense. And gmock is well suited to building interfaces that exercise generic libraries. Finally, I still think we should be willing to have testing utilities in tree even if they should be used rarely. We can use code review to help guide the usage here. For a longer and more complete discussion of this, see the llvm-dev thread here: http://lists.llvm.org/pipermail/llvm-dev/2017-January/108672.html The general consensus seems that this is a reasonable direction to start down, but that doesn't mean we should race ahead and use this everywhere. I have one test that is blocked on this to land and that was specifically used as an example. Before widespread adoption, I'm going to work up some (brief) guidelines as some of these facilities should be used sparingly and carefully. Differential Revision: https://reviews.llvm.org/D28156 llvm-svn: 291606
* Fix function regex in update_tests so it can handle {}'s in function argsDaniel Berlin2017-01-091-1/+1
| | | | llvm-svn: 291467
* Update update_test_checks to work properly with phi nodes and other fun things.Daniel Berlin2017-01-071-23/+26
| | | | | | | | | | | | | | | | | | | | | | Summary: Prior to this change, phi nodes were never considered defs, and so we ended up with undefined variables for any loop. Now, instead of trying to find just defs, we iterate over each actual IR value in the line, and replace them one by one with either a definition or a use. We also don't try to match anything in the comment portions of the line. I've tested it even on things like function pointer calls, etc, and against existing test cases uses update_test_checks With this change, we are able to use update_tests on the cyclic cases in newgvn. The only case i'm aware of that will misfire is if you have a string with which contains a valid token. However, this is the same as it is now, with a slightly larger set of strings that may misfire. Prior to this change, a test with the string " %a =" would be replaced. Reviewers: spatel, chandlerc Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28384 llvm-svn: 291357
* [gtest] Detect warning flags using the positive spelling.Chandler Carruth2017-01-061-2/+2
| | | | | | | | | | | | | | | | | | | | | Some GCC versions will accept any warning flag name after a '-Wno-', which would cause us to try to disable warnings with names GCC didn't understand. This will silently succeed unless there is some other output from GCC in which case we get weird cc1plus warnings about the warning name being bogus. There is still the issue that gtest sets warning flags for building gtest-all.cc using weird 'add_definitions' and the fact that there is a GCC version which warns on the variadic macro usage in gtest under -pedantic, but has no flag analogous to Clang's -Wgnu-zero-variadic-macro-argumnets to suppress this warning. I haven't been able to come up with any good solution here. The closest is to turn off -pedantic for those versions of GCC, but that seems really nasty. For now, those versinos of GCC aren't warning clean. If anyone is broken by this, I'll work on CMake logic to detect and disable -pedantic in these cases. llvm-svn: 291299
* [gtest] Work around broken installs of libc++ where we don't haveChandler Carruth2017-01-051-1/+7
| | | | | | | | | | | | | | | | | | | a cxxabi.h in the include search paths. This comes up when libc++ is installed with some other abi library. At some points in time in history we have had CMake hackery to try and get a cxxabi.h installed that would work, but there are lots of examples lacking this. Also, the just-built tree with libc++ seems to not quite get this right. To let folks make progress, we can easily work around this by detecting that the header is missing and disabling the relevant parts of gtest. This should fix the last remainging build bot failures. While these failures are typically indicative of a questionable install, I don't think gtest should be the thing that surfaces those issues and I don't want folks blocked on this. llvm-svn: 291063
* Patch gtest to move GTEST_IS_THREADSAFE out of unrelated GTEST_HAS_SEH ifdefReid Kleckner2017-01-051-2/+2
| | | | | | | Fixes the sanitizer Windows build, which happens to set -DGTEST_HAS_SEH=0. llvm-svn: 291038
* [gtest] Upgrade googletest to version 1.8.0, minimizing local changes.Chandler Carruth2017-01-0434-2462/+5444
| | | | | | | | | This required re-working the streaming support and lit's support for '--gtest_list_tests' but otherwise seems to be a clean upgrade. Differential Revision: https://reviews.llvm.org/D28154 llvm-svn: 291029
* Fix indentation in r290716.Bryant Wong2016-12-292-8/+8
| | | | | | Use two-space indentation like the rest of the file. llvm-svn: 290722
* Correctly handle multi-lined RUN lines.Bryant Wong2016-12-292-2/+16
| | | | | | | | | | `utils/update_{llc_test,test}_checks` ought to be able to handle RUN commands that span multiple lines, as shown in the example at http://llvm.org/docs/CommandGuide/FileCheck.html#the-filecheck-check-prefix-option Differential Revision: https://reviews.llvm.org/D26523 llvm-svn: 290716
* Mark comparator call operator as constEric Fiselier2016-12-271-1/+1
| | | | llvm-svn: 290636
* Fix `update_test_checks.py` bug that incorrectly truncates IR body.Bryant Wong2016-12-251-1/+1
| | | | | | Differential Revision: https://reviews.llvm.org/D26619 llvm-svn: 290529
* KillTheDoctor.cpp: Appease cases on case-senstitive host, like mingw on linux.NAKAMURA Takumi2016-12-231-3/+3
| | | | llvm-svn: 290402
* KillTheDoctor: Add a required system lib, psapi. KillTheDoctor itself uses ↵NAKAMURA Takumi2016-12-231-1/+4
| | | | | | Win32 API directly. llvm-svn: 290401
* [PowerPC] Add ppc support to update_llc_test_checks.py, and ppc tests. NFC.Tim Shen2016-12-221-17/+72
| | | | | | | | | | Reviewers: chandlerc, hfinkel, echristo, iteratee Subscribers: mehdi_amini, nemanjai, llvm-commits Differential Revision: https://reviews.llvm.org/D28036 llvm-svn: 290370
* Build KillTheDoctor with mingw-w64Reid Kleckner2016-12-221-1/+1
| | | | | | compiler-rt uses it in its lit tests. llvm-svn: 290357
* [GlobalISel] Add basic Selector-emitter tblgen backend.Ahmed Bougacha2016-12-215-1/+399
| | | | | | | | | | | | | | | | | This adds a basic tablegen backend that analyzes the SelectionDAG patterns to find simple ones that are eligible for GlobalISel-emission. That's similar to FastISel, with one notable difference: we're not fed ISD opcodes, so we need to map the SDNode operators to generic opcodes. That's done using GINodeEquiv in TargetGlobalISel.td. Otherwise, this is mostly boilerplate, and lots of filtering of any kind of "complicated" pattern. On AArch64, this is sufficient to match G_ADD up to s64 (to ADDWrr/ADDXrr) and G_BR (to B). Differential Revision: https://reviews.llvm.org/D26878 llvm-svn: 290284
* Improve natvis for llvm::SmallString so that it correctly displays only the ↵Antonio Maiorano2016-12-211-2/+2
| | | | | | | | | | valid portion of the string The usual method, and the one employed before my change, of displaying strings in natvis is to make use of the "<variable>,s" format specifier; however, this method only works for null-terminated strings. My fix here is to use the "<pointer>,[size]" format specifier to display a bounded array, and then cast it to "const char*", which in the MSVC debugger has the desired effect of rendering the character array as a string. Differential Revision: https://reviews.llvm.org/D27972 llvm-svn: 290224
* Remove extraneous space.Rui Ueyama2016-12-201-1/+1
| | | | llvm-svn: 290165
* Add ARM support to update_llc_test_checks.pyEli Friedman2016-12-191-9/+34
| | | | | | | | | | Just the minimal support to get it working at the moment. Includes checks for test/CodeGen/ARM/vzip.ll as an example. Differential Revision: https://reviews.llvm.org/D27829 llvm-svn: 290144
* [TableGen] Use 'unsigned' instead of 'bool' in a place where the code ↵Craig Topper2016-12-191-1/+1
| | | | | | conditionally assigns numeric values. They happen to be 0 and 1 so this is NFC. llvm-svn: 290088
* [FileCheck] Fix --strict-whitespace --match-full-linesTom de Vries2016-12-181-5/+7
| | | | | | | Make sure FileCheck --strict-whitespace --match-full-lines translates 'CHECK: bla ' into pattern '^ bla $' instead of pattern '^bla$'. llvm-svn: 290069
* [FileCheck] Fix comment in ReadCheckFileTom de Vries2016-12-181-1/+1
| | | | | | | The comment in ReadCheckFile claims that both leading and trailing whitespace are removed, but the associated statement only removes leading whitespace. llvm-svn: 290061
* GDB pretty printers: Basic DenseMap supportDavid Blaikie2016-12-161-0/+64
| | | | | | | | | | | | Still prints the empty/tombstone keys (which some people would prefer, but I find pretty noisy) because I haven't yet found a reliable way to skip them (it requires calling into the running process to do so, which isn't ideal for a pretty printer (doesn't work on a core file, for example) - and gdb's ability to do so (or my ability to figure out how to get gdb to do so) is limited) left some breadcrumbs for the next person who might try to address that. llvm-svn: 290011
* GDB pretty printer for llvm::OptionalDavid Blaikie2016-12-161-0/+29
| | | | | | | | | | (some other implementations of an optional pretty printer print the full name of the optional type (including template parameter) - but seems if the template parameter isn't printed for std::vector, not sure why it would be printed for optional, so erring on the side of consistency in that direction here - compact, etc, as well) llvm-svn: 289976
* Implement LaneBitmask::any(), use it to replace !none(), NFCIKrzysztof Parzyszek2016-12-162-5/+5
| | | | llvm-svn: 289974
OpenPOWER on IntegriCloud