summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [LegalizeVectorOps] Improve the placement of ANDs in the ExpandLoad path for ↵Craig Topper2019-02-223-136/+181
| | | | | | | | | | | | non-byte-sized loads. When we need to merge two adjacent loads the AND mask for the low piece was still sized for the full src element size. But we didn't have that many bits. The upper bits are already zero due to the SRL. So we can skip the AND if we're going to combine with the high bits. We do need an AND to clear out any bits from the high part. We were anding the high part before combining with the low part, but it looks like ANDing after the OR gets better results. So we can just emit the final AND after the optional concatentation is done. That will handling skipping before the OR and get rid of extra high bits after the OR. llvm-svn: 354655
* [LegalizeVectorOps] Simplify the non-byte sized load handling ↵Craig Topper2019-02-221-11/+8
| | | | | | | | VectorLegalizer::ExpandLoad. NFCI Remove an if that should always be true. Merge the body of another into the only block that could make the if true. llvm-svn: 354654
* [X86] Add test cases to cover the path in VectorLegalizer::ExpandLoad for ↵Craig Topper2019-02-224-0/+518
| | | | | | | | | | non-byte sized loads where bits from two loads need to be concatenated. If the scalar type doesn't divide evenly into the WideVT then the code will need to take some bits from adjacent scalar loads and combine them. But most of our testing is for i1 element type which always divides evenly. llvm-svn: 354653
* [DTU] Deprecate insertEdge*/deleteEdge*Chijun Sima2019-02-229-33/+49
| | | | | | | | | | | | | | | | Summary: This patch converts all existing `insertEdge*/deleteEdge*` to `applyUpdates` and marks `insertEdge*/deleteEdge*` as deprecated. Reviewers: kuhar, brzycki Reviewed By: kuhar, brzycki Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58443 llvm-svn: 354652
* revert r354615: [HIP] change kernel stub nameYaxun Liu2019-02-222-8/+1
| | | | | | | | It caused regressions. Differential Revision: https://reviews.llvm.org/D58518 llvm-svn: 354651
* Fix a think-o in the disable-kaleidoscope-tests-on-windows predicate of r354646.Lang Hames2019-02-221-1/+1
| | | | llvm-svn: 354650
* DAG: Add helper for creating shifts with correct typeMatt Arsenault2019-02-223-1/+11
| | | | llvm-svn: 354649
* [X86] Add a DAG combine for (aext_vector_inreg (aext_vector_inreg X)) -> ↵Craig Topper2019-02-222-4/+24
| | | | | | | | (aext_vector_inreg X) to fix a regression from my previous commit. Type legalization is causing two nodes to be created here, but we can use a single node to extend from v8i16 to v2i64. llvm-svn: 354648
* [LegalizeTypes] When promoting the result of EXTRACT_SUBVECTOR, also check ↵Craig Topper2019-02-224-21/+20
| | | | | | | | | | | | | | if the input needs to be promoted. Use that to determine the element type to extract. Otherwise we end up creating extract_vector_elts that then each need to have their input promoted. This can lead to truncates needing to be emitted for each of those. But we already emitted any_extends when we legalized the extract_subvector. So now we have pairs of any_extend+trunc that partially cancel. But depending on how DAGCombiner visits them we can get weird results. By promoting the input at the same time we can create only a single any_extend or truncate. There's one regression in the vector-narrow-binop.ll case, but that looks easy to fix with a follow up patch. llvm-svn: 354647
* Add 'Windows' to the disabled platforms list for the Kaleidoscope tests.Lang Hames2019-02-221-1/+1
| | | | | | Expands on the check from r354645. llvm-svn: 354646
* Disable Kaleidoscope tests on Win32 -- looks like they're still failing there.Lang Hames2019-02-221-1/+1
| | | | | | | | The Kaleidoscope tests were re-enabled in r354630, but are still failing on Windows. This patch disables them on that platform until the failure can be investigated. llvm-svn: 354645
* [analyzer] MIGChecker: Enable by default as `osx.MIG'.Artem Dergachev2019-02-222-10/+6
| | | | | | | | | | With r354643, the checker is feature-rich and polished enough. rdar://problem/35380337 Differential Revision: https://reviews.llvm.org/D58397 llvm-svn: 354644
* [analyzer] MIGChecker: Add support for more APIs.Artem Dergachev2019-02-222-18/+166
| | | | | | | | | | | | | | | Add more "consuming" functions. For now only vm_deallocate() was supported. Add a non-zero value that isn't an error; this value is -305 ("MIG_NO_REPLY") and it's fine to deallocate data when you are returning this error. Make sure that the mig_server_routine annotation is inherited. rdar://problem/35380337 Differential Revision: https://reviews.llvm.org/D58397 llvm-svn: 354643
* [analyzer] MIGChecker: Fix an FN when the object is released in a destructor.Artem Dergachev2019-02-222-3/+43
| | | | | | | | | | | | | | | | | When a MIG server routine argument is released in an automatic destructor, the Static Analyzer thinks that this happens after the return statement, and so the violation of the MIG convention doesn't happen. Of course, it doesn't quite work that way, so this is a false negative. Add a hack that makes the checker double-check at the end of function that no argument was released when the routine fails with an error. rdar://problem/35380337 Differential Revision: https://reviews.llvm.org/D58392 llvm-svn: 354642
* [analyzer] MIGChecker: Improve intermediate diagnostic notes.Artem Dergachev2019-02-222-12/+71
| | | | | | | | | | | | | | | | | | Add a BugReporterVisitor for highlighting the events of deallocating a parameter. All such events are relevant to the emitted report (as long as the report is indeed emitted), so all of them will get highlighted. Add a trackExpressionValue visitor for highlighting where does the error return code come from. Do not add a trackExpressionValue visitor for highlighting how the deallocated argument(s) was(were) copied around. This still remains to be implemented. rdar://problem/35380337 Differential Revision: https://reviews.llvm.org/D58368 llvm-svn: 354641
* [X86] Fix some copy/paste mistakes that caused a VR128 to be used as the ↵Craig Topper2019-02-222-4/+21
| | | | | | | | | | address of a load in an isel pattern This was introduced in r354511. Fixes PR40811. llvm-svn: 354640
* Revert "[xcodeproj] Add SBReproducer to LLDB.framework"Jonas Devlieghere2019-02-221-9/+0
| | | | | | This was bogus. llvm-svn: 354639
* [analyzer] MIGChecker: Take advantage of the mig_server_routine annotation.Artem Dergachev2019-02-222-15/+70
| | | | | | | | | | | | | | | | r354530 has added a new function/block/message attribute "mig_server_routine" that attracts compiler's attention to functions that need to follow the MIG server routine convention with respect to deallocating out-of-line data that was passed to them as an argument. Teach the checker to identify MIG routines by looking at this attribute, rather than by making heuristic-based guesses. rdar://problem/35380337 Differential Revision: https://reviews.llvm.org/58366 llvm-svn: 354638
* [xcodeproj] Add SBReproducer to LLDB.frameworkJonas Devlieghere2019-02-211-0/+9
| | | | llvm-svn: 354637
* [gn] Add LLVM_BUILD_EXAMPLES.Evgeniy Stepanov2019-02-211-0/+1
| | | | llvm-svn: 354636
* [analyzer] MIGChecker: A checker for Mach Interface Generator conventions.Artem Dergachev2019-02-214-0/+190
| | | | | | | | | | | | | | | | | This checker detects use-after-free bugs in (various forks of) the Mach kernel that are caused by errors in MIG server routines - functions called remotely by MIG clients. The MIG convention forces the server to only deallocate objects it receives from the client when the routine is executed successfully. Otherwise, if the server routine exits with an error, the client assumes that it needs to deallocate the out-of-line data it passed to the server manually. This means that deallocating such data within the MIG routine and then returning a non-zero error code is always a dangerous use-after-free bug. rdar://problem/35380337 Differential Revision: https://reviews.llvm.org/D57558 llvm-svn: 354635
* AMDGPU: Remove debugger related subtarget featuresMatt Arsenault2019-02-2121-563/+14
| | | | | | As far as I know these aren't needed anymore. llvm-svn: 354634
* Use _Q as MS ABI mangling for char8_t.Richard Smith2019-02-212-7/+12
| | | | | | Thanks to Yuriy Solodkyy for letting us know the mangling here. llvm-svn: 354633
* [sanitizer] Common macro for .note.GNU-stack directives (NFC)Evgeniy Stepanov2019-02-215-15/+15
| | | | llvm-svn: 354632
* [Reproducers] Initialize reproducers before initializing the debugger.Jonas Devlieghere2019-02-2130-191/+86
| | | | | | | | | | | | | | | | As per the discussion on the mailing list: http://lists.llvm.org/pipermail/lldb-commits/Week-of-Mon-20190218/048007.html This commit implements option (3): > Go back to initializing the reproducer before the rest of the debugger. > The method wouldn't be instrumented and guarantee no other SB methods are > called or SB objects are constructed. The initialization then becomes part > of the replay. Differential revision: https://reviews.llvm.org/D58410 llvm-svn: 354631
* [Kaleidoscope] Re-enable Kaleidoscope tests.Lang Hames2019-02-213-1/+4
| | | | | | | | These were disabled in r246267 (back in 2015). I suspect that the Win32 issues that caused them to be disabled at the time have been resovlved, but if not we can disable them again while we sort those out. llvm-svn: 354630
* Revert "[asan] Fix vfork handling.", +1Evgeniy Stepanov2019-02-2119-195/+0
| | | | | | Revert r354625, r354627 - multiple build failures. llvm-svn: 354629
* [X86] Remove hasSideEffects=1 from the X87 pseudos with folded load.Craig Topper2019-02-212-3/+5
| | | | | | This was done in r321424 to prevent scheduling from reordering things. But now that we model FPCW as a dependency, I don't think the same scheduling we were trying to prevent can occur. llvm-svn: 354628
* [asan] Fix vfork handling.Evgeniy Stepanov2019-02-212-6/+4
| | | | | | | | __asan_handle_vfork was unpoisoning the wrong part of the stack. Adjust the test to catch this reliably (current failure is non-deterministic). llvm-svn: 354627
* [clang-cl] Whitelist -fbracket-depth=123 in clang-clReid Kleckner2019-02-212-1/+2
| | | | | | | | Users apparently need it when expanding large quantities of macros. Fixes PR38685 llvm-svn: 354626
* [hwasan,asan] Intercept vfork.Evgeniy Stepanov2019-02-2119-0/+197
| | | | | | | | | | | | | | Summary: AArch64 only for now. Reviewers: vitalybuka, pcc Subscribers: srhines, kubamracek, mgorny, javed.absar, krytarowski, kristof.beyls, jdoerfert, #sanitizers, llvm-commits, kcc Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D58313 llvm-svn: 354625
* AMDGPU: Don't emit debugger subtarget featuresMatt Arsenault2019-02-212-10/+3
| | | | | | Keep the flag around for compatability. llvm-svn: 354624
* [MemorySSA & LoopPassManager] Update MemorySSA in formDedicatedExitBlocks.Alina Sbirlea2019-02-216-11/+129
| | | | | | | MemorySSA is now updated when forming dedicated exit blocks. Resolves PR40037. llvm-svn: 354623
* [Driver] Fix float ABI default for Android ARMv8.Dan Albert2019-02-212-1/+11
| | | | | | | | | | | | | | | | Summary: Android doesn't regress back to soft float after ARMv7 :) Reviewers: srhines, pirama Reviewed By: srhines, pirama Subscribers: javed.absar, kristof.beyls, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D58477 llvm-svn: 354622
* [Fixed Point Arithmetic] Fixed Point ComparisonsLeonard Chan2019-02-213-12/+428
| | | | | | | | | This patch implements fixed point comparisons with other fixed point types and integers. This also provides constant expression evaluation for them. Differential Revision: https://reviews.llvm.org/D57219 llvm-svn: 354621
* AMDGPU/NFC: Cleanup subtarget predicatesKonstantin Zhuravlyov2019-02-2114-138/+137
| | | | | | Differential Revision: https://reviews.llvm.org/D58522 llvm-svn: 354620
* [x86] vectorize more cast ops in lowering to avoid register file transfersSanjay Patel2019-02-213-36/+90
| | | | | | | | | | | | | | | | This is a follow-up to D56864. If we're extracting from a non-zero index before casting to FP, then shuffle the vector and optionally narrow the vector before doing the cast: cast (extelt V, C) --> extelt (cast (extract_subv (shuffle V, [C...]))), 0 This might be enough to close PR39974: https://bugs.llvm.org/show_bug.cgi?id=39974 Differential Revision: https://reviews.llvm.org/D58197 llvm-svn: 354619
* [gn] Add target flags to asmflags.Evgeniy Stepanov2019-02-211-0/+1
| | | | | | | | | | | | Reviewers: pcc, thakis Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58483 llvm-svn: 354618
* [lldb] [test] Do not link -ldl on NetBSDMichal Gorny2019-02-213-2/+12
| | | | | | | | | | | | | | | | Fix the load_* using test Makefiles not to link -ldl on NetBSD. There is no such a library on NetBSD, and dlopen() is available without a library. Quoting the manpage: (These functions are not in a library. They are included in every dynamically linked program automatically.) To resolve this portably, introduce a new USE_LIBDL option. If it set to 1, Makefile.rules automatically appends -ldl on platforms needing it. Differential Revision: https://reviews.llvm.org/D58517 llvm-svn: 354617
* Re-land "[AArch64][GlobalISel] Implement partial support for G_SHUFFLE_VECTOR""Amara Emerson2019-02-215-1/+358
| | | | | | | Thanks to Richard Trieu for pointing out that the failures were due to a use-after-free of an ArrayRef. llvm-svn: 354616
* [HIP] change kernel stub nameYaxun Liu2019-02-212-1/+8
| | | | | | | | | | Add .stub to kernel stub function name so that it is different from kernel name in device code. This is necessary to let debugger find correct symbol for kernel Differential Revision: https://reviews.llvm.org/D58518 llvm-svn: 354615
* [llvm] Fix typo: 's/ ot / to /' [NFC]Mandeep Singh Grang2019-02-213-3/+3
| | | | llvm-svn: 354614
* [LoopSimplifyCFG] Update MemorySSA after r353911.Alina Sbirlea2019-02-216-37/+43
| | | | | | | | | | | | | | | | | Summary: MemorySSA is not properly updated in LoopSimplifyCFG after recent changes. Use SplitBlock utility to resolve that and clear all updates once handleDeadExits is finished. All updates that follow are removal of edges which are safe to handle via the removeEdge() API. Also, deleting dead blocks is done correctly as is, i.e. delete from MemorySSA before updating the CFG and DT. Reviewers: mkazantsev, rtereshin Subscribers: sanjoy, jlebar, Prazek, george.burgess.iv, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58524 llvm-svn: 354613
* [EarlyCSE] Cleanup deadcode. [NFCI]Alina Sbirlea2019-02-211-5/+1
| | | | | | | | | | | | | | Summary: Cleanup nop assignments. Reviewers: george.burgess.iv, davide Subscribers: sanjoy, jlebar, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58308 llvm-svn: 354612
* [Hexagon] Use misaligned load instead of trap0(#0) for __builtin_trapKrzysztof Parzyszek2019-02-215-2/+61
| | | | | | | | | The trap instruction is intercepted by various runtime environments, and instead of a crash it creates confusion. This reapplies r354606 with a fix. llvm-svn: 354611
* [CodeGen] Fix string literal address space casting.Michael Liao2019-02-212-3/+11
| | | | | | | | | | | | | | | | Summary: - If a string literal is reused directly, need to add necessary address space casting if the target requires that. Reviewers: yaxunl Subscribers: jvesely, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D58509 llvm-svn: 354610
* Revert r354606, it breaks asan testsKrzysztof Parzyszek2019-02-215-61/+2
| | | | llvm-svn: 354609
* [test] Fix typo: 's/ ot / to /' [NFC]Mandeep Singh Grang2019-02-211-1/+1
| | | | llvm-svn: 354608
* ELF: Remove dead code. NFCI.Peter Collingbourne2019-02-211-3/+2
| | | | | | | | | RelocationBaseSection is not used in -r links, so Config->Relocatable will always be false. Differential Revision: https://reviews.llvm.org/D58489 llvm-svn: 354607
* [Hexagon] Use misaligned load instead of trap0(#0) for __builtin_trapKrzysztof Parzyszek2019-02-215-2/+61
| | | | | | | The trap instruction is intercepted by various runtime environments, and instead of a crash it creates confusion. llvm-svn: 354606
OpenPOWER on IntegriCloud