- Dec 04, 2022
-
-
Kevin Sala authored
This patch modifies the PluginInterface to define functions for initializing and deinitializing GenericPluginTy instances instead of using the constructor and destructor. This way, we can return errors from these functions. Also, it defines some functions that each plugin should implement for creating plugin-specific objects. This patch prepares the PluginInterface for the new AMDGPU NextGen plugin. Differential Revision: https://reviews.llvm.org/D138625
-
Krzysztof Parzyszek authored
-
Kevin Sala authored
List of fixes: - omptarget_device_environment symbol is not mandatory in device images - Do not synchronize in ~AsyncInfoWrapperTy() if the async info's queue is null - GenericDeviceResourceRef's create() and destroy() require the device as parameter Differential Revision: https://reviews.llvm.org/D138619
-
Kevin Sala authored
The OpenMP target's NextGen plugins retrieve symbol information in the ELF image (i.e., address and size) through the ELF section and ELF symbol objects. However, the images of CUDA programs compute the address differently from the images of AMDGPU programs: - Address for CUDA symbols: image begin + section's offset + symbol's st_value - Address for AMDGPU symbols: image + begin + symbol's st_value Differential Revision: https://reviews.llvm.org/D138604
-
Peter Klausler authored
When a character-valued function is passed as an actual argument, and both the actual function and the dummy argument have explicit result lengths, take them into account when testing for compatibility. Differential Revision: https://reviews.llvm.org/D139129
-
LLVM GN Syncbot authored
-
Fangrui Song authored
-
Fangrui Song authored
and change a few referenced Basic and llvm/lib/WindowsDriver API
-
Jonas Paulsson authored
Init captures added in processBlock() to avoid capturing structured bindings, which caused the build problems (with clang). RISCV has this disabled for now until problems relating to post RA pseudo expansions are resolved.
-
Kazu Hirata authored
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Kazu Hirata authored
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Krzysztof Parzyszek authored
-
Kazu Hirata authored
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Kazu Hirata authored
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Kazu Hirata authored
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Fangrui Song authored
-
Kazu Hirata authored
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Kazu Hirata authored
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Kazu Hirata authored
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Peter Klausler authored
This test crashes Semantics (infinite recursion?) only when built with MSVC; need to investigate further, disabling test for now.
-
Kazu Hirata authored
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Kazu Hirata authored
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Kazu Hirata authored
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Peter Klausler authored
Standard Fortran allows type-bound procedure bindings to only be called, and disallows them from being used in other contexts where a procedure name can be: as the target of a procedure pointer assignment statement, and as an actual argument that corresponds to a dummy procedure. So long as the interfaces match, there's no good reason for these uses to be errors, and there some obvious use cases in polymorphic programming. So emit portability warnings rather than errors, and document this usage as an extension. Differential Revision: https://reviews.llvm.org/D139127
-
Fangrui Song authored
-
Fangrui Song authored
-
Peter Klausler authored
Type-bound generics like operator(+) and assignment(=) need to not be PRIVATE if they are used outside the module in which they are declared. Differential Revision: https://reviews.llvm.org/D139123
-
Fangrui Song authored
-
Krzysztof Parzyszek authored
-
Fangrui Song authored
-
Peter Klausler authored
In a derived type definition, a type bound procedure declaration statement with neither interface nor attributes is required by constraint C768 to have the optional "::" between the PROCEDURE keyword and the bindings if any binding has a renaming with "=>". The colons are not actually necessary for a correct and unambiguous parse, so emit a warning when they are missing. Differential Revision: https://reviews.llvm.org/D139065
-
David Green authored
This enabled the select optimize patch for ARM Out of order AArch64 cores. It is trying to solve a problem that is difficult for the compiler to fix. The criteria for when a csel is better or worse than a branch depends heavily on whether the branch is well predicted and the amount of ILP in the loop (as well as other criteria like the core in question and the relative performance of the branch predictor). The pass seems to do a decent job though, with the inner loop heuristics being well implemented and doing a better job than I had expected in general, even without PGO information. I've been doing quite a bit of benchmarking. The headline numbers are these for SPEC2017 on a Neoverse N1: 500.perlbench_r -0.12% 502.gcc_r 0.02% 505.mcf_r 6.02% 520.omnetpp_r 0.32% 523.xalancbmk_r 0.20% 525.x264_r 0.02% 531.deepsjeng_r 0.00% 541.leela_r -0.09% 548.exchange2_r 0.00% 557.xz_r -0.20% Running benchmarks with a combination of the llvm-test-suite plus several versions of SPEC gave between a 0.2% and 0.4% geomean improvement depending on the core/run. The instruction count went down by 0.1% too, which is a good sign, but the results can be a little noisy. Some issues from other benchmarks I had ran were improved in rGca78b560. In summary well predicted branches will see in improvement, badly predicted branches may get worse, and on average performance seems to be a little better overall. This patch enables the pass for AArch64 under -O3 for cores that will benefit for it. i.e. not in-order cores that do not fit into the "Assume infinite resources that allow to fully exploit the available instruction-level parallelism" cost model. It uses a subtarget feature for specifying when the pass will be enabled, which I have enabled under cpu=generic as the performance increases for out of order cores seems larger than any decreases for inorder, which were minor. Differential Revision: https://reviews.llvm.org/D138990
-
- Dec 03, 2022
-
-
Peter Klausler authored
When checking the specific procedures of a generic interface for a match against a given set of actual arguments, be sure to not match a function against a subroutine call or vice versa. (We generally catch and warn about attempts to declare mixed interfaces, but they are usually conforming and can be inadvertently created when generics are merged due to USE and host association.) Differential Revision: https://reviews.llvm.org/D139059
-
qfrost authored
-
Alexandre Ganea authored
Differential Revision: https://reviews.llvm.org/D138746
-
Nico Weber authored
This reverts commit d62480c1. Added test fails, see https://reviews.llvm.org/D138469#3968539
-
Nico Weber authored
At least on macOS with zsh, the test failed with line 1: syntax error near unexpected token `&' previously. -
Uday Bondhugula authored
Improve type conversion error propagation/failure during LLVM lowering. BEFORE ``` llvm-mlir/mlir/lib/Conversion/LLVMCommon/TypeConverter.cpp:304: SmallVector<mlir::Type, 5> mlir::LLVMTypeConverter::getMemRefDescriptorFields(mlir::MemRefType, bool): Assertion `isStrided(type) && "Non-strided layout maps must have been normalized away"' failed. PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace. Stack dump: ... ``` AFTER ``` <unknown>:0: error: integer overflow during size computation <unknown>:0: error: Conversion to strided form failed either due to non-strided layout maps (which should have been normalized away) or other reasons <unknown>:0: error: failed to legalize operation 'gpu.func' that was explicitly marked illegal <unknown>:0: note: see current operation: "gpu.func"() ( { ... ``` Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D139072
-
Benjamin Kramer authored
I don't see the point of disallowing copying an aggregate, and C++20 makes aggregate initializing a class with a deleted copy ctor ill-formed.
-
Ramkumar Ramachandra authored
This patch fixes a misspelt CHECK-LABEL in tosa-to-tensor.mlir. Signed-off-by:
Ramkumar Ramachandra <r@artagnon.com> Differential Revision: https://reviews.llvm.org/D139085
-