- Dec 04, 2022
-
-
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
-
Ramkumar Ramachandra authored
Make use of notifyMatchFailure in one place. Signed-off-by:
Ramkumar Ramachandra <r@artagnon.com> Differential Revision: https://reviews.llvm.org/D139191
-
Ramkumar Ramachandra authored
-
Vassil Vassilev authored
Some platforms report that GlobalTopLevelStmtBlockInFlight cannot be initalized with '{}' due to operator '=' being ambiguous. This patch is a follow up to https://reviews.llvm.org/D127284 trying to appease the bots. -
Jan Svoboda authored
This is a follow-up to commit 40472ef1 that introduced new record but didn't serialize its ID.
-
Vassil Vassilev authored
This patch teaches clang to parse statements on the global scope to allow: ``` ./bin/clang-repl clang-repl> int i = 12; clang-repl> ++i; clang-repl> extern "C" int printf(const char*,...); clang-repl> printf("%d\n", i); 13 clang-repl> %quit ``` Generally, disambiguating between statements and declarations is a non-trivial task for a C++ parser. The challenge is to allow both standard C++ to be translated as if this patch does not exist and in the cases where the user typed a statement to be executed as if it were in a function body. Clang's Parser does pretty well in disambiguating between declarations and expressions. We have added DisambiguatingWithExpression flag which allows us to preserve the existing and optimized behavior where needed and implement the extra rules for disambiguating. Only few cases require additional attention: * Constructors/destructors -- Parser::isConstructorDeclarator was used in to disambiguate between ctor-looking declarations and statements on the global scope(eg. `Ns::f()`). * The template keyword -- the template keyword can appear in both declarations and statements. This patch considers the template keyword to be a declaration starter which breaks a few cases in incremental mode which will be tackled later. * The inline (and similar) keyword -- looking at the first token in many cases allows us to classify what is a declaration. * Other language keywords and specifiers -- ObjC/ObjC++/OpenCL/OpenMP rely on pragmas or special tokens which will be handled in subsequent patches. The patch conceptually models a "top-level" statement into a TopLevelStmtDecl. The TopLevelStmtDecl is lowered into a void function with no arguments. We attach this function to the global initializer list to execute the statement blocks in the correct order. Differential revision: https://reviews.llvm.org/D127284 -
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
-