- Sep 26, 2020
-
-
Amara Emerson authored
Even if the type is s8/s16, assigning to gpr is preferable with constants because worst case we can select via a constant pool load, and without cross-bank copies to the FPR bank more patterns can be imported later.
-
Arthur Eubanks authored
This matches the legacy PM pass by having one constructor use command line flags, and the other use parameters to the pass. This fixes all tests under Transforms/LowerTypeTests using NPM. Reviewed By: ychen, pcc Differential Revision: https://reviews.llvm.org/D87845
-
Amara Emerson authored
-
Fangrui Song authored
-
Evandro Menezes authored
Add the RISC-V Bullet core to the driver tests.
-
Michael Collison authored
Add the pipeline model for the RISC-V Bullet micro architecture. Co-authored-by:Evandro Menezes <evandro.menezes@sifive.com>
-
Alexander Shaposhnikov authored
This patch performs a minor cleanup of the class Slice: static methods and constructors which take a pointer but assume that it's not null now take the argument by reference. NFC. Test plan: make check-all Differential revision: https://reviews.llvm.org/D88320
-
Craig Topper authored
[IR] Improve the description for Constant::isNormalFP to list all things that are not normal instead of just denormal. NFC
-
Evandro Menezes authored
-
Juneyoung Lee authored
[LangRef] Clarify the behavior of memory access instructions when pointers/sizes aren't well-defined This is a patch to LangRef that clarifies the behavior of load/store/memset/memcpy/memmove when the pointers or sizes are not well-defined as well. MSan detects a case when e.g., only lower bits of address are garbage when `-msan-check-access-address` is enabled, and it does not directly conflict with this patch because a C program should not use a pointer with undef bits and reasonable optimizations do not convert a well-defined pointer into a pointer with undef bits. This patch contains a definition of a well-defined value as well. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D87994
-
Craig Disselkoen authored
This commit fixes a regression (from LLVM 10 to LLVM 11 RC3) in the LLVM C API. Previously, commit 1ee6ec2b removed the mask operand from the ShuffleVector instruction, storing the mask data separately in the instruction instead; this reduced the number of operands of ShuffleVector from 3 to 2. AFAICT, this change unintentionally caused a regression in the LLVM C API. Specifically, it is no longer possible to get the mask of a ShuffleVector instruction through the C API. This patch introduces new functions which together allow a C API user to get the mask of a ShuffleVector instruction, restoring the functionality which was previously available through LLVMGetOperand(). This patch also adds tests for this change to the llvm-c-test executable, which involved adding support for InsertElement, ExtractElement, and ShuffleVector itself (as well as constant vectors) to echo.cpp. Previously, vector operations weren't tested at all in echo.ll. I also fixed some typos in comments and help-text nearby these changes, which I happened to spot while developing this patch. Since the typo fixes are technically unrelated other than being in the same files, I'm happy to take them out if you'd rather they not be included in the patch. Differential Revision: https://reviews.llvm.org/D88190
-
Layton Kifer authored
Simplify and improve readability. Differential Revision: https://reviews.llvm.org/D82269
-
Eli Friedman authored
The intrinsics don't have any pointer arguments, so "argmemonly" makes optimizations think they don't write to memory at all. Differential Revision: https://reviews.llvm.org/D88186
-
Jim Ingham authored
Differential Revision: https://reviews.llvm.org/D88123
-
Saleem Abdulrasool authored
This attribute allows declarations to be restricted to the framework itself, enabling Swift to remove the declarations when importing libraries. This is useful in the case that the functions can be implemented in a more natural way for Swift. This is based on the work of the original changes in https://github.com/llvm/llvm-project-staging/commit/8afaf3aad2af43cfedca7a24cd817848c4e95c0c Differential Revision: https://reviews.llvm.org/D87720 Reviewed By: Aaron Ballman
-
Vitaly Buka authored
No test as reproducer requires particular glibc build. Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D88284
-
Jason Molenda authored
When a Mach-O corefile has an LC_NOTE "main bin spec" for a standalone binary / firmware, with only a UUID and no load address, try to locate the binary and dSYM by UUID and if found, load it at offset 0 for the user. Add a test case that tests a firmware/standalone corefile with both the "kern ver str" and "main bin spec" LC_NOTEs. <rdar://problem/68193804> Differential Revision: https://reviews.llvm.org/D88282
-
Marco Vanotti authored
This commit adds an interceptor for the pthread_detach function, calling into ThreadRegistry::DetachThread, allowing for thread contexts to be reused. Without this change, programs may fail when they create more than 8K threads. Fixes: https://bugs.llvm.org/show_bug.cgi?id=47389 Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D88184
-
Andrew Litteken authored
This reverts commit 15645d04.
-
Simon Pilgrim authored
-
Simon Pilgrim authored
This patch adds handling of rotation patterns with constant shift amounts - the next bit will be how we want to support non-uniform constant vectors. Differential Revision: https://reviews.llvm.org/D87452
-
Simon Pilgrim authored
We're testing a <2 x i36> not <2 x i16>
-
Andrew Litteken authored
This is a similarity visualization tool that accepts a Module and passes it to the IRSimilarityIdentifier. The resulting SimilarityGroups are output in a JSON file. Tests are found in test/tools/llvm-sim and check for the file not found, a bad module, and that the JSON is created correctly. Reviewers: paquette, jroelofs Differential Revision: https://reviews.llvm.org/D86974
-
Simon Pilgrim authored
Pulled from D87452, this is a fixed version of the collectBitParts fshl/fshr handling which as @nikic noticed wasn't checking for different providers or had correct bit ordering (which was hid by only testing shift amounts of bitwidth/2). Differential Revision: https://reviews.llvm.org/D88292
-
Arthur Eubanks authored
Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D87957
-
Adrian Prantl authored
attachments. They would crash the backend, which expects all DISubprograms that are not part of the type system to have a unit field. Clang right before https://reviews.llvm.org/D79967 would generate this kind of broken IR. rdar://problem/69534688 Thanks to Fangrui for fixing an assembler test I had missed! https://reviews.llvm.org/D88270
-
Jonas Devlieghere authored
Every call to the protected SBAddress constructor and the SetAddress method takes the address of a valid object which means we might as well pass it as a const reference instead of a pointer and drop the null check. Differential revision: https://reviews.llvm.org/D88249
-
Thomas Lively authored
1c5a3c4d updated the variables inserted by Emscripten SjLj lowering to be thread-local, depending on the CoalesceFeaturesAndStripAtomics pass to downgrade them to normal globals if the target features did not support TLS. However, this had the unintended side effect of preventing all non-TLS-supporting objects from being linked into modules with shared memory, because stripping TLS marks an object as thread-unsafe. This patch fixes the problem by only making the SjLj lowering variables thread-local if the target machine supports TLS so that it never introduces new usage of TLS that will be stripped. Since SjLj lowering works on Modules instead of Functions, this required that the WebAssemblyTargetMachine have its feature string updated to reflect the coalesced features collected from all the functions so that a WebAssemblySubtarget can be created without using any particular function. Differential Revision: https://reviews.llvm.org/D88323
-
Daniel Paoliello authored
Issue Details: In order to support coroutine splitting, any multi-value PHI node in a coroutine is split into multiple blocks with single-value PHI Nodes, which then allows a subsequent transform to generate `reload` instructions as required (i.e., to reload the value if required if the coroutine has been resumed). This causes issues with EH pads (`catchswitch` and `catchpad`) as all pads within a `catchswitch` must have the same unwind destination, but the coroutine splitting logic may modify them to each have a unique unwind destination if there is a PHI node in the unwind `cleanuppad` that is set from values in the `catchswitch` and `cleanuppad` blocks. Fix Details: During splitting, if such a PHI node is detected, then create a "dispatcher" `cleanuppad` as well as the blocks with single-value PHI Nodes: thus the "dispatcher" is the unwind destination and it will detect which predecessor called it and then branch to the appropriate single-value PHI node block, which will then branch back to the original `cleanuppad` block. Reviewed By: GorNishanov, lxfind Differential Revision: https://reviews.llvm.org/D88059
-
Jez Ng authored
Reviewed By: #lld-macho, compnerd Differential Revision: https://reviews.llvm.org/D88268
-
Jez Ng authored
This greatly reduces the amount of boilerplate in our tests. Reviewed By: #lld-macho, compnerd Differential Revision: https://reviews.llvm.org/D87960
-
Jez Ng authored
They operate like Defined symbols but with no associated InputSection. Note that `ld64` seems to treat the weak definition flag like a no-op for absolute symbols, so I have replicated that behavior. Reviewed By: #lld-macho, smeenai Differential Revision: https://reviews.llvm.org/D87909
-
Jez Ng authored
Apparently this is used in real programs. I've handled this by reusing the logic we already have for branch (function call) relocations. Reviewed By: #lld-macho, smeenai Differential Revision: https://reviews.llvm.org/D87852
-
Jez Ng authored
Not 100% sure but it appears that bundles are almost identical to dylibs, aside from the fact that they do not contain `LC_ID_DYLIB`. ld64's code seems to treat bundles and dylibs identically in most places. Supporting bundles allows us to run e.g. XCTests, as all test suites are compiled into bundles which get dynamically loaded by the `xctest` test runner. Reviewed By: #lld-macho, smeenai Differential Revision: https://reviews.llvm.org/D87856
-
Jez Ng authored
* Implement rebase opcodes. Rebase opcodes tell dyld where absolute addresses have been encoded in the binary. If the binary is not loaded at its preferred address, dyld has to rebase these addresses by adding an offset to them. * Support `-pie` and use it to test rebase opcodes. This is necessary for absolute address references in dylibs, bundles etc to work. Reviewed By: #lld-macho, gkm Differential Revision: https://reviews.llvm.org/D87199
-
clementval authored
-
Sourabh Singh Tomar authored
After skeleton of the `Parallel Op` is created set the insertion point to start of the block. So that later `CodeGen` can proceed. Note: This patch reflects the work that can be upstreamed from PR(merged) PR: https://github.com/flang-compiler/f18-llvm-project/pull/424 Reviewed By: schweitz, kiranchandramohan Differential Revision: https://reviews.llvm.org/D88221
-
Matt Arsenault authored
Make the corresponding change that was made for byval in b7141207. Like byval, this requires a bulk update of the test IR tests to include the type before this can be mandatory.
-
Florian Hahn authored
Add support for NE predicates with 0 constants. Those can be translated to UMaxExpr(x, 1).
-
Florian Hahn authored
-