- Oct 02, 2020
-
-
Kamil Rytarowski authored
Use __lwp_gettcb_fast() and __lwp_getprivate_fast(), as _lwp_getprivate() can be a biased pointer and invalid for use in this function on all CPUs.
-
LLVM GN Syncbot authored
-
Paul C. Anagnostopoulos authored
Pertinent lints are fixed.
-
Yaxun (Sam) Liu authored
Also fix the issue of multiple -m[no-]wavefrontsize64 options to make the last one wins. Differential Revision: https://reviews.llvm.org/D88370
-
Haojian Wu authored
several changes: - return a structure result in rename API; - prepareRename now returns more information (main-file occurrences); - remove the duplicated detecting-touch-identifier code in prepareRename (which is implemented in rename API); Differential Revision: https://reviews.llvm.org/D88634
-
Simon Pilgrim authored
Use standard APIntOps::smax/smin helpers instead.
-
Alexandre Ganea authored
-
Alexandre Ganea authored
This adds the following two new lines to /summary: 21351 Input OBJ files (expanded from all cmd-line inputs) 61 PDB type server dependencies 38 Precomp OBJ dependencies 1420669231 Input type records <<<< 78665073382 Input type records bytes <<<< 8801393 Merged TPI records 3177158 Merged IPI records 59194 Output PDB strings 71576766 Global symbol records 25416935 Module symbol records 2103431 Public symbol records Differential Revision: https://reviews.llvm.org/D88703 -
Louis Dionne authored
Those symbols are exported from libc++abi in the first place, so it makes more sense to have them there.
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Florian Hahn authored
Test case for PR47670.
-
Simon Pilgrim authored
-
Sjoerd Meijer authored
This adds support for -mcpu=cortex-r82. Some more information about this core can be found here: https://www.arm.com/products/silicon-ip-cpu/cortex-r/cortex-r82 One note about the system register: that is a bit of a refactoring because of small differences between v8.4-A AArch64 and v8-R AArch64. This is based on patches from Mark Murray and Mikhail Maltsev. Differential Revision: https://reviews.llvm.org/D88660
-
Sam McCall authored
It fixes the -Wswitch warning, though we mark it as a fix even if that is off. This makes it the "recommended" action on an incomplete switch, which seems OK. Differential Revision: https://reviews.llvm.org/D88726
-
Florian Hahn authored
Test case for PR47671.
-
Serguei Katkov authored
We can use context to prove that load can be safely executed at a point where load is being hoisted.
-
George Mitenkov authored
Instead of recursive helper method `topologicalSortImpl()`, sort's implementation is moved to `topologicalSort()` function's body directly. `llvm::ReversePostOrderTraversal` is used to create a traversal of blocks in reverse post order. Reviewed By: kiranchandramohan, rriddle Differential Revision: https://reviews.llvm.org/D88544
-
Nicolas Vasilache authored
Differential revision: https://reviews.llvm.org/D88657
-
Kadir Cetinkaya authored
Differential Revision: https://reviews.llvm.org/D88721
-
Simon Pilgrim authored
We get the vNi16 cases already via matching as a rotate followed by the fshl -> bswap combines
-
Nicolas Vasilache authored
Differential revision: https://reviews.llvm.org/D88656
-
Nicolas Vasilache authored
This revision introduces a `subtensor` op, which is the counterpart of `subview` for a tensor operand. This also refactors the relevant pieces to allow reusing the `subview` implementation where appropriate. This operation will be used to implement tiling for Linalg on tensors.
-
Simon Pilgrim authored
-
Meera Nakrani authored
Marks constants of an ICmp instruction as free if it's only user is a select instruction that is part of a min(max()) pattern. Ensures that in loops, in particular when loop unrolling is turned on, SSAT will still be correctly generated. Differential Revision: https://reviews.llvm.org/D88662
-
Hsiangkai Wang authored
Implement vmsge{u}.vx pseudo instruction. According to RISC-V V specification, there are different scenarios for this pseudo instruction. I list them below. unmasked va >= x pseudoinstruction: vmsge{u}.vx vd, va, x expansion: vmslt{u}.vx vd, va, x; vmnand.mm vd, vd, vd masked va >= x, vd != v0 pseudoinstruction: vmsge{u}.vx vd, va, x, v0.t expansion: vmslt{u}.vx vd, va, x, v0.t; vmxor.mm vd, vd, v0 masked va >= x, vd == v0 pseudoinstruction: vmsge{u}.vx vd, va, x, v0.t, vt expansion: vmslt{u}.vx vt, va, x; vmandnot.mm vd, vd, vt Use pseudo instruction to model vmsge{u}.vx. The pseudo instruction will convert to different expansion according to the condition. Differential Revision: https://reviews.llvm.org/D84732 -
Sam McCall authored
Intent was a nice idea but it ends up being a bit awkward/heavyweight without adding much. In particular, it makes it hard to implement `CodeActionParams.only` properly (there's an inheritance hierarchy for kinds). Differential Revision: https://reviews.llvm.org/D88427
-
serge-sans-paille authored
When the allocation size is 0, we shouldn't probe. Within [1, PAGE_SIZE], we should probe once etc. This fixes https://bugs.llvm.org/show_bug.cgi?id=47657 Differential Revision: https://reviews.llvm.org/D88548
-
Georgii Rymar authored
Specification for SHT_HASH table says (https://refspecs.linuxbase.org/elf/gabi4+/ch5.dynamic.html#hash) that it contains Elf32_Word entries for both 32/64 bit objects. Currently both GNU linkers and LLD sets the `sh_entsize` field to `4`. At the same time, `yaml2obj` ignores the `EntSize` field for SHT_HASH sections. This patch fixes this and also adds a support for obj2yaml: it will not dump this field when the `sh_entsize` contains the default value (`4`). Differential revision: https://reviews.llvm.org/D88652
-
Tres Popp authored
-
Sam McCall authored
-
Thomas Lively authored
v128.const was recently implemented in V8, but until it rolls into Chrome stable, we can't enable it in the WebAssembly backend without breaking origin trial users. So far we have been lowering build_vectors that would otherwise have been lowered to v128.const to splats followed by sequences of replace_lane instructions to initialize each lane individually. That produces large and inefficient code, so this patch introduces new logic to lower integer vector constants to a single i64x2.splat where possible, with at most a single i64x2.replace_lane following it if necessary. Adapted from a patch authored by @omnisip. Differential Revision: https://reviews.llvm.org/D88591
-
David Sherwood authored
The TypePromotion pass only operates on scalar types so I've fixed up all places where we were relying upon the implicit cast from TypeSize->uint64_t. Differential Revision: https://reviews.llvm.org/D88575
-
David Sherwood authored
When we know that a particular type is always going to be fixed width we have so far been writing code like this: getSizeInBits().getFixedSize() Since we are doing this in quite a few places now it seems to make sense to add a new helper function that allows us to replace these calls with a single getFixedSizeInBits() call. Differential Revision: https://reviews.llvm.org/D88649
-
Martin Storsjö authored
For these cases, we already omit the prologue directives, if (!AFI->hasStackFrame() && !windowsRequiresStackProbe && !NumBytes). When writing the epilogue (after the prolog has been written), if the function doesn't have the WinCFI flag set (i.e. if no prologue was generated), assume that no epilogue will be needed either, and don't emit any epilog start pseudo instruction. After completing the epilogue, make sure that it actually matched the prologue. Previously, when epilogue start/end was generated, but no prologue, the unwind info for such functions actually was huge; 12 bytes xdata (4 bytes header, 4 bytes for one non-folded epilogue header, 4 bytes for padded opcodes) and 8 bytes pdata. Because the epilog consisted of one opcode (end) but the prolog was empty (no .seh_endprologue), the epilogue couldn't be folded into the prologue, and thus couldn't be considered for packed form either. On a 6.5 MB DLL with 110 KB pdata and 166 KB xdata, this gets rid of 38 KB pdata and 62 KB xdata. Differential Revision: https://reviews.llvm.org/D88641
-
Stephen Neuendorffer authored
The documentation for the NormalizeMemRefs pass and the associated MemRefsNormalizable traits was confusing and not on the website. This update clarifies the language around the difference between a MemRef Type, an operation that accesses the value of MemRef Type, and better documents the limitations of the current implementation. This patch also includes some basic debugging information for the pass so people might have a chance of figuring out why it doesn't work on their code. Differential Revision: https://reviews.llvm.org/D88532
-
Max Kazantsev authored
The logic there only considers `SLT/SGT` predicates. We can use the same logic for proving `ULT/UGT` predicates if all involved values are non-negative. Adding full-scale support for unsigned might be challenging because of code amount, so we can consider this in the future. Differential Revision: https://reviews.llvm.org/D88087 Reviewed By: reames
-
Philip Reames authored
If we try to coerce a vector of non-integral pointers to a narrower type (either narrower vector or single pointer), we use inttoptr and violate the semantics of non-integral pointers. In theory, we can handle many of these cases, we just need to use a different code idiom to convert without going through inttoptr and back. This shows up as wrong code bugs, and in some cases, crashes due to failed asserts. Modeled after a change which has lived downstream for a couple years, though completely rewritten to be more idiomatic.
-
Carl Ritson authored
Convert to use new MachineBasicBlock splitAt function. Place code in splitBlock function for reuse in future changes. Should yield no functional change. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D88537
-
Jason Molenda authored
lldb's PlatforDarwinKernel scans the local filesystem (well known locations, plus user-specified directories) for kernels and kexts when doing kernel debugging, and loads them automatically. Sometimes kernel developers want to debug with *only* a dSYM, in which case they give lldb the DWARF binary + the dSYM as a binary and symbol file. This patch adds code to lldb to do this automatically if that's the best thing lldb can find. A few other bits of cleanup in PlatformDarwinKernel that I undertook at the same time: 1. Remove the 'platform.plugin.darwin-kernel.search-locally-for-kexts' setting. When I added the local filesystem index at start of kernel debugging, I thought people might object to the cost of the search and want a way to disable it. No one has. 2. Change the behavior of 'plugin.dynamic-loader.darwin-kernel.load-kexts' setting so it does not disable the local filesystem scan, or use of the local filesystem binaries. 3. PlatformDarwinKernel::GetSharedModule into GetSharedModuleKext and GetSharedModuleKernel for easier readability & maintenance. 4. Added accounting of .dSYM.yaa files (an archive format akin to tar) that I come across during the scan. I'm not using these for now; it would be very expensive to expand the archives & see if the UUID matches what I'm searching for. <rdar://problem/69774993> Differential Revision: https://reviews.llvm.org/D88632
-