- Jan 26, 2021
-
-
Jan Svoboda authored
The `LangStandard::Kind` parsed from command line arguments is used to set up some `LangOption` defaults, but isn't stored anywhere. To be able to generate `-std=` (in future patch), we need `CompilerInvocation` to not forget it. This patch demonstrates another use-case: using `LangStd` to set up defaults of marshalled options. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D95342
-
Hsiangkai Wang authored
When spilling, the spill size will depend on the size of register class. For .vf vector instructions, it may spill the floating point scalar argument. In order to use the correct load/store instructions for spilling, we need to provide the correct floating point register class for the .vf vector pseudo instructions. In this commit, we define the .vf pseudo instructions as three different kinds of pseudo instructions for half/float/double. For example, PseudoVFADD_M1 will become as PseudoVFADD_F16_M1, PseudoVFADD_F32_M1, and PseudoVFADD_F64_M1. Differential Revision: https://reviews.llvm.org/D95234
-
Jan Svoboda authored
The `Bool{,F,G}Option` TableGen classes were designed after `Opt{In,Out}FFlag`, which put marshalling info on only one of the boolean options. To encode which record is supposed to carry the marshalling info (and be visible on -cc1 command-line), we used the `ChangedBy` and `ResetBy` classes. However, we need to put marshalling info on both records anyways (see D93008 for details). This means we don't really need the distinction between `ChangedBy/ResetBy + BoolOption` and `FlagDef + BoolOptionBase` anymore. This patch reduces the number of ways one can encode the marshalling information for pairs of boolean flags. Regardless of whether the key path value defaults to a statically known boolean, or a result of an expression, one can always use the new `BoolOption` and `PosFlag<SetTrue>, NegFlag<SetFalse>` syntax. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D95340 -
Matthias Springer authored
Adds vp2intersect to the AVX512 dialect and defines a lowering to the LLVM dialect. Author: Matthias Springer <springerm@google.com> Differential Revision: https://reviews.llvm.org/D95301
-
Sam Clegg authored
This reverts commit d8066186. Review: https://reviews.llvm.org/D92215 We had issues where older versions of wasm-ld were crashing on object files containing a table symbol. We decided that the best strategy going forward is to only generate these symbol if refernece types is enabled. Without reference types enabled we should never geneate a table symbol or a TABLE_NUMBER relocation. This revert is in addition to the one already reverted in https://reviews.llvm.org/D95005. The plan is to re-land these in updated form after the llvm 12 branch. Differential Revision: https://reviews.llvm.org/D95420
-
Sam Clegg authored
Error message should start with lowercase in accordance with https://llvm.org/docs/CodingStandards.html#error-and-warning-messages Differential Revision: https://reviews.llvm.org/D95239
-
zhanghb97 authored
The `getCapsule` and `createFromCapsule` comments incorrectly state the `PyMlirContext` and `MlirContext` in `PyLocation`, `PyAttribute`, and `PyType` classes. Differential Revision: https://reviews.llvm.org/D95413
-
Johannes Doerfert authored
In much of the libomptarget interface we have an ident_t object now, if it is not null we can use it to improve the profile output. For now, we simply use the ident_t "source information string" as generated by the FE. Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D95282
-
Johannes Doerfert authored
Whenever we enter a new OpenMP data environment we want to enter a function to simplify reasoning. Later we probably want to remove the entire specialization wrt. the if clause and pass the result to the runtime, for now this should fix PR48686. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D94315
-
Hsiangkai Wang authored
Differential Revision: https://reviews.llvm.org/D94583
-
Hsiangkai Wang authored
Differential Revision: https://reviews.llvm.org/D95303
-
Kazu Hirata authored
AMDGPULegalizerInfo.h needs MachineIRBuilder but relies on a forward declaration of MachineIRBuilder in LegalizerInfo.h. This patch adds a forward declaration right in AMDGPULegalizerInfo.h. While we are at it, this patch removes the one in LegalizerInfo.h, where it is unnecessary.
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Shilei Tian authored
The basic design is to create an outer-most parallel team. It is not a regular team because it is only created when the first hidden helper task is encountered, and is only responsible for the execution of hidden helper tasks. We first use `pthread_create` to create a new thread, let's call it the initial and also the main thread of the hidden helper team. This initial thread then initializes a new root, just like what RTL does in initialization. After that, it directly calls `__kmpc_fork_call`. It is like the initial thread encounters a parallel region. The wrapped function for this team is, for main thread, which is the initial thread that we create via `pthread_create` on Linux, waits on a condition variable. The condition variable can only be signaled when RTL is being destroyed. For other work threads, they just do nothing. The reason that main thread needs to wait there is, in current implementation, once the main thread finishes the wrapped function of this team, it starts to free the team which is not what we want. Two environment variables, `LIBOMP_NUM_HIDDEN_HELPER_THREADS` and `LIBOMP_USE_HIDDEN_HELPER_TASK`, are also set to configure the number of threads and enable/disable this feature. By default, the number of hidden helper threads is 8. Here are some open issues to be discussed: 1. The main thread goes to sleeping when the initialization is finished. As Andrey mentioned, we might need it to be awaken from time to time to do some stuffs. What kind of update/check should be put here? Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D77609
-
Jon Chesterfield authored
This reverts commit fafd45c0.
-
Cassie Jones authored
Differential Revision: https://reviews.llvm.org/D95324
-
Cassie Jones authored
Differential Revision: https://reviews.llvm.org/D95323
-
Lang Hames authored
This test is failing on some windows bots with an error claiming that it is not producing output. This appears to be a spurious failure, so I'm disabling on windows while we investigate rather than reverting.
-
Nemanja Ivanovic authored
If a loop has any operations on half precision values, there will be calls to library functions on Power8. Even on Power9, there is a small subset of instructions that are actually supported for the type. This patch disables HW loops whenever any operations on the type are found (other than the handfull of supported ones when compiling for Power9). Fixes a few PR's opened by Julia: https://bugs.llvm.org/show_bug.cgi?id=48785 https://bugs.llvm.org/show_bug.cgi?id=48786 https://bugs.llvm.org/show_bug.cgi?id=48519 Differential revision: https://reviews.llvm.org/D94980
-
Jon Chesterfield authored
[libomptarget][cuda] Gracefully handle missing cuda library If using dynamic cuda, and it failed to load, it is not safe to call cuGetErrorString. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D95412
-
Wolfgang Pieb authored
-
Sergey Dmitriev authored
This patch fixes llvm-link crash when materializing global variable with appending linkage and initializer that depends on another global with appending linkage. Reviewed By: tra Differential Revision: https://reviews.llvm.org/D95329
-
Richard Smith authored
Also revert "Follow on to: f05dc40c" After these changes, multiple lldb tests are failing. Calls to CreateTargetWithFileAndArch(None, None) appear to fail after these changes. This reverts commit f05dc40c and 1fba2177.
-
Brad Smith authored
Reviewed By: ldionne Differential Revision: https://reviews.llvm.org/D94571
-
Duncan P. N. Exon Smith authored
Clarify that `PrecompiledPreamble::CanReuse` requires non-null arguments for `VFS` and `MainFileBuffer`, taking them by reference instead of by pointer. Differential Revision: https://reviews.llvm.org/D91297
-
Amara Emerson authored
The current algorithm just tries to localize defs as far as they can go, and in the case of G_PHI operands, it clones the def into the predecessor block for each incoming edge. When multiple edges have the same register value, this can cause unnecessary code bloat, and inhibit later optimizations. This change checks if a given phi operand is unique in the phi, if not the def of that register is not localized to the predecessor. Differential Revision: https://reviews.llvm.org/D95406
-
Julian Lettner authored
Update shebang to always use Python3 when executing `lit.py` directly. A previous change of mine [1] revealed that we still use Python2 on some bot configurations that invoke `llvm/utils/lit/lit.py` as a script directly (instead of `python3 path/to/lit.py`). [1] https://reviews.llvm.org/D94734 Differential Revision: https://reviews.llvm.org/D95393
-
Wolfgang Pieb authored
-
Duncan P. N. Exon Smith authored
Change `SourceManager::getOrCreateContentCache` to take a `FileEntryRef` and update call sites (mostly internal to SourceManager.cpp). In a couple of cases this temporarily relies on `FileEntry::getLastRef`, but those can be cleaned up once other APIs switch over. The one change outside of SourceManager.cpp is in ASTReader.cpp, which stops relying on the auto-degrade-to-`FileEntry*` behaviour from `InputFile::getFile` since it now needs a `FileEntryRef`. No functionality change here. Differential Revision: https://reviews.llvm.org/D92983
-
Duncan P. N. Exon Smith authored
Change `SourceManager::createFileID(const FileEntry*)` to defer to `SourceManager::createFileID(FileEntryRef)`. This fixes an unexercised bug where the latter gained support for named pipes and the former didn't, but since we're trying to remove all calls to the former it doesn't really make sense to test this explicitly now that the implementation is hollowed out. This is a belated follow-up to 245218bb, which sunk named pipe support into FileManager and SourceManager. The original version of that patch was based on top of https://reviews.llvm.org/D92984, which removed the `FileEntry` overload of `createFileID()`, and I missed the subtle difference when it was rebased.
-
Lang Hames authored
-
Eugene Zhulenev authored
Instead of using llvm.call operations to call LLVM coro intrinsics use Coro operations from the LLVM dialect. (This was reviewed as a part of https://reviews.llvm.org/D94923 but was lost in arc land from local branch) Differential Revision: https://reviews.llvm.org/D95405
-
Duncan P. N. Exon Smith authored
Migrate to the `FileEntryRef` overload of `SourceManager::createFileID` (using `FileManager::getOptionalFileRef`) in `ClangExpressionParser::ParseInternal`. No functionality change here. Differential Revision: https://reviews.llvm.org/D92957
-
Craig Topper authored
[TargetLowering][RISCV] Don't transform (seteq/ne (sext_inreg X, VT), C1) -> (seteq/ne (zext_inreg X, VT), C1) if the sext_inreg is cheaper RISCV has to use 2 shifts for (i64 (zext_inreg X, i32)), but we can use addiw rd, rs1, x0 for sext_inreg. We already understood this when type legalizing i32 seteq/ne on rv64. But this transform in SimplifySetCC would sometimes undo it. Reviewed By: luismarques Differential Revision: https://reviews.llvm.org/D95289
-
Arthur O'Dwyer authored
LWG reflector consensus is that this was a bug in libc++. (In particular, MSVC also will fix it in their STL, soon.) Bug originally discovered by Logan Smith. Also fix `std::function<const void()>`, which should work the same way as `std::function<void()>` in terms of allowing "conversions" from non-void types. Differential Revision: https://reviews.llvm.org/D94452
-
David Blaikie authored
DebugInfo: Generalize the .debug_addr minimization flag to pave the way for including other strategies
-
Mitch Phillips authored
This reverts commit 554b3211. Differential Revision: https://reviews.llvm.org/D95035
-
Craig Topper authored
This pattern can occur when an unsigned is used to index an array on RV64. Reviewed By: luismarques Differential Revision: https://reviews.llvm.org/D95290
-
Changpeng Fang authored
Summary: RPTracker::reset(MI) is a very expensive call when the number of virtual registers is huge. We observed a long compilation time issue when RPT::reset() is called once for each cluster. In this work, we call RPT.reset() only at the first seen cluster, and use advance() to get the register pressure for the later clusters in the same basic block. This could effectively reduce the number of the expensive calls and thus reduce the compile time. Reviewers: rampitec Fixes: SWDEV-239161 Differential Revision: https://reviews.llvm.org/D95273
-