summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [asan] Fix test broken by r290540Vitaly Buka2016-12-271-12/+14
| | | | | | | | | | Reviewers: ahatanak, eugenis, myatsina Subscribers: kubabrecka, zizhar, llvm-commits Differential Revision: https://reviews.llvm.org/D28128 llvm-svn: 290621
* [PM] Teach MemDep to invalidate its result object when its cachedChandler Carruth2016-12-273-0/+98
| | | | | | | | analysis handles become invalid. Add a test case for its invalidation logic. llvm-svn: 290620
* [DOXYGEN] Improved doxygen comments for xmmintrin.h intrinsics.Ekaterina Romanova2016-12-271-105/+171
| | | | | | | | Added \n commands to insert a line breaks where necessary, since one long line of documentation is nearly unreadable. Formatted comments to fit into 80 chars. In some cases added \a command in front of the parameter names to display them in italics. llvm-svn: 290619
* DebugInfo: add explicit casts for -Wqual-castSaleem Abdulrasool2016-12-271-2/+4
| | | | | | | Fix a warning detected by gcc 6: warning: cast from type 'const void*' to type 'uint8_t* {aka unsigned char*}' casts away qualifiers [-Wcast-qual] llvm-svn: 290618
* ASMParser: use range-based for loops (NFC)Saleem Abdulrasool2016-12-271-8/+5
| | | | | | | Convert the verify method to use a few more range based for loops, converting to const iterators in the process. llvm-svn: 290617
* test: modernise ARM CodeGen testsSaleem Abdulrasool2016-12-2714-1535/+1609
| | | | | | | | Replace the use of grep with FileCheck. Tidy up some of the tests. A few of the tests have been left as weak as previously, though some have been made more stringent. llvm-svn: 290616
* [NewGVN] Simplify a bit removing else after return. NFCI.Davide Italiano2016-12-271-3/+3
| | | | llvm-svn: 290615
* [PM] Remove a pointless optimization.Chandler Carruth2016-12-272-6/+0
| | | | | | | | There is no need to do this within an analysis. That method shouldn't even be reached if this predicate holds as the actual useful optimization is in the analysis manager itself. llvm-svn: 290614
* Attempt to make the Windows bots green after r290609.Chad Rosier2016-12-271-1/+1
| | | | llvm-svn: 290613
* [PM] Add more dedicated testing to cover the invalidation logic added toChandler Carruth2016-12-271-0/+47
| | | | | | | | | | | | | | | | BasicAA in r290603. I've kept the basic testing in the new PM test file as that also covers the AAManager invalidation logic. If/when there is a good place for broader AA testing it could move there. This test is somewhat unsatisfying as I can't get it to fail even with ASan outside of explicit checks of the invalidation. Apparently we don't yet have any test coverage of the BasicAA code paths using either the domtree or loopinfo -- I made both of them always be null and check-llvm passed. llvm-svn: 290612
* [MemCpyOpt] Don't sink LoadInst below possible clobber.Bryant Wong2016-12-272-5/+47
| | | | | | Differential Revision: https://reviews.llvm.org/D26811 llvm-svn: 290611
* [ThinLTO] Fix "||" vs "|" mixup.Teresa Johnson2016-12-273-9/+55
| | | | | | | | | | | | | | The effect of the bug was that we would incorrectly create summaries for global and weak values defined in module asm (since we were essentially testing for bit 1 which is SF_Undefined, and the RecordStreamer ignores local undefined references). This would have resulted in conservatively disabling importing of anything referencing globals and weaks defined in module asm. Added these cases to the test which now fails without this bug fix. Fixes PR31459. llvm-svn: 290610
* [AArch64][AsmParser] Add support for parsing shift/extend operands with symbols.Chad Rosier2016-12-272-3/+47
| | | | | | Differential Revision: https://reviews.llvm.org/D27953 llvm-svn: 290609
* [AMDGPU][llvm-mc] Predefined symbols to access register counts ↵Artem Tamazov2016-12-273-7/+115
| | | | | | | | | | | | | | | | | | | | | | | (.kernel.{v|s}gpr_count) The feature allows for conditional assembly, filling the entries of .amd_kernel_code_t etc. Symbols are defined with value 0 at the beginning of each kernel scope. After each register usage, the respective symbol is set to: value = max( value, ( register index + 1 ) ) Thus, at the end of scope the value represents a count of used registers. Kernel scopes begin at .amdgpu_hsa_kernel directive, end at the next .amdgpu_hsa_kernel (or EOF, whichever comes first). There is also dummy scope that lies from the beginning of source file til the first .amdgpu_hsa_kernel. Test added. Differential Revision: https://reviews.llvm.org/D27859 llvm-svn: 290608
* [MemDep] Operand visited twice bugfixPiotr Padlewski2016-12-271-0/+1
| | | | | | | | Because operand was not marked as seen it was visited twice. It doesn't change behavior of optimization, it just saves redudant visit, so no test changes. llvm-svn: 290607
* RuntimeDyldELF: refactor AArch64 relocations. NFC.Eugene Leviant2016-12-271-106/+44
| | | | llvm-svn: 290606
* Attempt to fix non-determinism in tests.Gabor Horvath2016-12-271-1/+1
| | | | llvm-svn: 290605
* Fix unit test in NDEBUG buildEugene Leviant2016-12-271-0/+2
| | | | llvm-svn: 290604
* [PM] Teach BasicAA how to invalidate its result object.Chandler Carruth2016-12-273-4/+28
| | | | | | | | | | | | | | | This requires custom handling because BasicAA caches handles to other analyses and so it needs to trigger indirect invalidation. This fixes one of the common crashes when using the new PM in real pipelines. I've also tweaked a regression test to check that we are at least handling the most immediate case. I'm going to work at re-structuring this test some to both scale better (rather than all being in one file) and check more invalidation paths in a follow-up commit, but I wanted to get the basic bug fix in place. llvm-svn: 290603
* Attempt to fix build bot after r290597Eugene Leviant2016-12-271-0/+3
| | | | llvm-svn: 290602
* [PM] Disable more of the loop passes -- LCSSA and LoopSimplify are alsoChandler Carruth2016-12-272-6/+9
| | | | | | | | | | | | | not really wired into the loop pass manager in a way that will let us productively use these passes yet. This lets the new PM get farther in basic testing which is useful for establishing a good baseline of "doesn't explode". There are still plenty of crashers in basic testing though, this just gets rid of some noise that is well understood and not representing a specific or narrow bug. llvm-svn: 290601
* [clang-tidy] Add enum misuse check.Gabor Horvath2016-12-278-0/+526
| | | | | | | | | | | The checker detects various cases when an enum is probably misused (as a bitmask). Patch by: Peter Szecsi! Differential Revision: https://reviews.llvm.org/D22507 llvm-svn: 290600
* [AMDGPU] Assembler: support SDWA and DPP for VOP2b instructionsSam Kolton2016-12-275-7/+85
| | | | | | | | | | Reviewers: nhaustov, artem.tamazov, vpykhtin, tstellarAMD Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye Differential Revision: https://reviews.llvm.org/D28051 llvm-svn: 290599
* RuntimeDyldELF: add R_AARCH64_ADD_ABS_LO12_NC relocEugene Leviant2016-12-272-0/+16
| | | | | | Differential revision: https://reviews.llvm.org/D28115 llvm-svn: 290598
* Allow setting multiple debug typesEugene Leviant2016-12-274-2/+46
| | | | | | Differential revision: https://reviews.llvm.org/D28109 llvm-svn: 290597
* Change a std::vector to SmallVector in NewGVNDaniel Berlin2016-12-271-1/+1
| | | | llvm-svn: 290596
* [PM] Teach the AAManager and AAResults layer (the worst offender forChandler Carruth2016-12-274-15/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | inter-analysis dependencies) to use the new invalidation infrastructure. This teaches it to invalidate itself when any of the peer function AA results that it uses become invalid. We do this by just tracking the originating IDs. I've kept it in a somewhat clunky API since some users of AAResults are outside the new PM right now. We can clean this API up if/when those users go away. Secondly, it uses the registration on the outer analysis manager proxy to trigger deferred invalidation when a module analysis result becomes invalid. I've included test cases that specifically try to trigger use-after-free in both of these cases and they would crash or hang pretty horribly for me even without ASan. Now they work nicely. The `InvalidateAnalysis` utility pass required some tweaking to be useful in this context and it still is pretty garbage. I'd like to switch it back to the previous implementation and teach the explicit invalidate method on the AnalysisManager to take care of correctly triggering indirect invalidation, but I wanted to go ahead and send this out so folks could see how all of this stuff works together in practice. And, you know, that it does actually work. =] Differential Revision: https://reviews.llvm.org/D27205 llvm-svn: 290595
* [PM] Introduce the facilities for registering cross-IR-unit dependenciesChandler Carruth2016-12-279-125/+944
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | that require deferred invalidation. This handles the other real-world invalidation scenario that we have cases of: a function analysis which caches references to a module analysis. We currently do this in the AA aggregation layer and might well do this in other places as well. Since this is relative rare, the technique is somewhat more cumbersome. Analyses need to register themselves when accessing the outer analysis manager's proxy. This proxy is already necessarily present to allow access to the outer IR unit's analyses. By registering here we can track and trigger invalidation when that outer analysis goes away. To make this work we need to enhance the PreservedAnalyses infrastructure to support a (slightly) more explicit model for "sets" of analyses, and allow abandoning a single specific analyses even when a set covering that analysis is preserved. That allows us to describe the scenario of preserving all Function analyses *except* for the one where deferred invalidation has triggered. We also need to teach the invalidator API to support direct ID calls instead of always going through a template to dispatch so that we can just record the ID mapping. I've introduced testing of all of this both for simple module<->function cases as well as for more complex cases involving a CGSCC layer. Much like the previous patch I've not tried to fully update the loop pass management layer because that layer is due to be heavily reworked to use similar techniques to the CGSCC to handle updates. As that happens, we'll have a better testing basis for adding support like this. Many thanks to both Justin and Sean for the extensive reviews on this to help bring the API design and documentation into a better state. Differential Revision: https://reviews.llvm.org/D27198 llvm-svn: 290594
* DR1495: A partial specialization is ill-formed if it is not (strictly) moreRichard Smith2016-12-2711-32/+257
| | | | | | | | specialized than the primary template. (Put another way, if we imagine there were a partial specialization matching the primary template, we should never select it if some other partial specialization also matches.) llvm-svn: 290593
* [PM] Turn on the new PM's inliner in addition to the current one forChandler Carruth2016-12-2760-5/+63
| | | | | | | | | | | | | | | most of the inliner test cases. The inliner involves a bunch of interesting code and tends to be where most of the issues I've seen experimenting with the new PM lie. All of these test cases pass, but I'd like to keep some more thorough coverage here so doing a fairly blanket enabling. There are a handful of interesting tests I've not enabled yet because they're focused on the always inliner, or on functionality that doesn't (yet) exist in the inliner. llvm-svn: 290592
* [AVX-512] Add all forms of VPALIGNR, VALIGND, and VALIGNQ to the load ↵Craig Topper2016-12-273-2/+196
| | | | | | folding tables. llvm-svn: 290591
* [PM] Add one of the features left out of the initial inliner patch:Chandler Carruth2016-12-272-7/+24
| | | | | | | | | | | | | | | | | skipping indirectly recursive inline chains. To do this, we implicitly build an inline stack for each callsite and check prior to inlining that doing so would not form a cycle. This uses the exact same technique and even shares some code with the legacy PM inliner. This solution remains deeply unsatisfying to me because it means we cannot actually iterate the inliner externally. Doing so would not be able to easily detect and avoid such cycles. Some day I would very much like to have a solution that works without this internal state to detect cycles, but this is not that day. llvm-svn: 290590
* [PM] Wire up another test to the new pass manager.Chandler Carruth2016-12-271-6/+8
| | | | | | | | Nothing really interesting here, but I had to improve the test to use variables rather than hard coding value names as we happen to end up with different value names in the new PM. llvm-svn: 290589
* [Analysis] Ignore `nobuiltin` on `allocsize` function calls.George Burgess IV2016-12-272-10/+28
| | | | | | | | | We currently ignore the `allocsize` attribute on functions calls with the `nobuiltin` attribute when trying to lower `@llvm.objectsize`. We shouldn't care about `nobuiltin` here: `allocsize` is explicitly added by the user, not inferred based on a function's symbol. llvm-svn: 290588
* Add reference/non-reference mismatch test.Richard Smith2016-12-271-1/+6
| | | | llvm-svn: 290587
* Work around a standard defect: template argument deduction for non-typeRichard Smith2016-12-274-8/+50
| | | | | | | | | template parameters of reference type basically doesn't work, because we're always deducing from an argument expression of non-reference type, so the type of the deduced expression never matches. Instead, compare the type of an expression naming the parameter to the type of the argument. llvm-svn: 290586
* [Analysis] Refactor as promised in r290397.George Burgess IV2016-12-271-16/+22
| | | | | | | | This also makes us no longer check for `allocsize` on intrinsic calls. This shouldn't matter, since intrinsics should provide the information we get from `allocsize` on their own. llvm-svn: 290585
* Emit CCEDiags when evaluating a const variable.George Burgess IV2016-12-273-10/+16
| | | | | | This addresses post-review feedback from r290577. llvm-svn: 290584
* [AVX-512] Remove masked pmuldq and pmuludq intrinsics and autoupgrade them ↵Craig Topper2016-12-275-244/+239
| | | | | | to unmasked intrinsics plus a select. llvm-svn: 290583
* [InstCombine][X86] Add DemandedElts support for 512-bit PMULDQ/PMULUDQ ↵Craig Topper2016-12-273-2/+35
| | | | | | | | | | instructions PMULDQ/PMULUDQ vXi64 instructions only use the even numbered v2Xi32 input elements which SimplifyDemandedVectorElts should try and use. This builds on r290554 which added supported for 128 and 256-bit. llvm-svn: 290582
* [LCG] Teach the LazyCallGraph to handle visiting the blockaddressChandler Carruth2016-12-272-0/+41
| | | | | | | | | constant expression and to correctly form function reference edges through them without crashing because one of the operands (the `BasicBlock` isn't actually a constant despite being an operand of a constant). llvm-svn: 290581
* [AVX-512] Replace masked 512-bit pmuldq and pmuludq builtins with the newly ↵Craig Topper2016-12-273-36/+40
| | | | | | added unmasked versions and selects. llvm-svn: 290580
* Revert r290574 "foo"Craig Topper2016-12-272-20/+32
| | | | | | This was supposed to be merged with another commit with a real commit message. Sorry. llvm-svn: 290579
* Revert r290575 "[AVX-512] Replace masked 512-bit pmuldq and pmuludq builtins ↵Craig Topper2016-12-272-24/+8
| | | | | | | | with the newly added unmasked versions and selects." I failed to merge this with r290574. llvm-svn: 290578
* Add a test for `const` folding introduced by r290297. NFC.George Burgess IV2016-12-271-0/+17
| | | | | | | AFAICT, we didn't add a test targeted at the new "const can sometimes act as constexpr" behavior introduced by r290297. llvm-svn: 290577
* Factor out repeated code for deducing a non-type template parameter as a givenRichard Smith2016-12-271-81/+38
| | | | | | argument value. No functionality change intended. llvm-svn: 290576
* [AVX-512] Replace masked 512-bit pmuldq and pmuludq builtins with the newly ↵Craig Topper2016-12-272-8/+24
| | | | | | added unmasked versions and selects. llvm-svn: 290575
* fooCraig Topper2016-12-272-32/+20
| | | | llvm-svn: 290574
* [AVX-512] Add 512-bit unmasked intrinsics for pmuldq and pmuludq so we can ↵Craig Topper2016-12-273-0/+244
| | | | | | | | add them to InstCombine with the 128 and 256 bit versions. The 128 and 256 bit masked intrinsics are currently unused by clang. The sse and avx2 unmasked intrinsics are used instead. The new 512-bit intrinsic will be used to do the same. Then all masked versions will removed and autoupgraded. llvm-svn: 290573
* [PM] Teach the inliner in the new PM to merge attributes after inlining.Chandler Carruth2016-12-272-1/+5
| | | | | | | Also enable the new PM in the attributes test case which caught this issue. llvm-svn: 290572
OpenPOWER on IntegriCloud