- Aug 24, 2022
-
-
Che-Yu Wu authored
Currently vector.gather only supports reading memory into a 1-D result vector. This patch extends it to support an n-D result vector with the indices, masks, and passthroughs in n-D vectors. As we are trying to vectorize tensor.extract with vector.gather (https://github.com/iree-org/iree/issues/9198), it will need to gather the elements into an n-D vector. Having vector.gather with n-D results allows us to avoid flatten and reshape at the vectorization stage. The backends can then decide the optimal ways to lower the vector.gather op. Note that this is different from n-D gathering, which is about reading n-D memory with the n-D indices. The indices here are still only 1-D offsets on the base. Reviewed By: dcaballe Differential Revision: https://reviews.llvm.org/D131905
-
Balazs Benics authored
As proposed in D126215 (ffe7950e), I'm dropping the `-analyzer-store` and `-analyzer-opt-analyze-nested-blocks` clang frontend flags. I'm also dropping the corresponding commandline handlers of `scanbuild`. This behavior is planned to be part of `clang-16`. Reviewed By: xazax.hun Differential Revision: https://reviews.llvm.org/D132289
-
Fred Tingaud authored
Dead store detection automatically checks that an expression is a CXXConstructor and skips it because of potential side effects. In C++17, with guaranteed copy elision, this check can fail because we actually receive the implicit cast of a CXXConstructor. Most checks in the dead store analysis were already stripping all casts and parenthesis and those that weren't were either forgotten (like the constructor) or would not suffer from it, so this patch proposes to factorize the stripping. It has an impact on where the dead store warning is reported in the case of an explicit cast, from auto a = static_cast<B>(A()); ^~~~~~~~~~~~~~~~~~~ to auto a = static_cast<B>(A()); ^~~ which we think is an improvement. Patch By: frederic-tingaud-sonarsource Reviewed By: steakhal Differential Revision: https://reviews.llvm.org/D126534 -
Kadir Cetinkaya authored
This has been failing on some build bots with timeout, increasing it to 5 seconds.
-
Thomas Symalla authored
Fix typos and remove an unused argument. Reviewed By: foad Differential Revision: https://reviews.llvm.org/D132292
-
- Aug 23, 2022
-
-
Arthur Eubanks authored
musttail should be honored even in the presence of attributes like "disable-tail-calls". SelectionDAG properly handles this. Update LangRef to explicitly mention that this is the semantics of musttail. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D132193
-
Philip Reames authored
Use the accessor methods on the containing class instead so that we can change the representation.
-
Jakub Kuderski authored
See the discussion thread for more details: https://discourse.llvm.org/t/adt-is-splat-and-empty-ranges/64692 Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D132335
-
https://reviews.llvm.org/D131886Michael Liao authored
- The body of that predicate lambda is removed by mistake.
-
Ben Langmuir authored
Move copying compiler arguments to a vector<string> and modifying common module-related options into CompilerInvocation in preparation for using some of them in more places and to avoid duplicating this code accidentally in the future. Differential Revision: https://reviews.llvm.org/D132419
-
Joseph Huber authored
Summary: The buildbots are giving failures on the explicit move operations here. Previously I had problems where not perfomring an explicit move would cause problems with older compilers so we'll see if this works as expected.
-
utsumi authored
[Clang][OpenMP] Make copyin clause on combined and composite construct work (patch by Yuichiro Utsumi (utsumi.yuichiro@fujitsu.com)) Make copyin clause on the following constructs work. - parallel for - parallel for simd - parallel sections Fixes https://github.com/llvm/llvm-project/issues/55547 Patch by Yuichiro Utsumi (utsumi.yuichiro@fujitsu.com) Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D132209
-
Philip Reames authored
This has the effect of exposing the power-of-two property for use in memory op costing, but no target actually uses it yet. The main point of this change is simple consistency with the recently changes getArithmeticInstrCost, and to remove the last (interface) use of OperandValueKind.
-
David Majnemer authored
MSVC allows interpreting volatile loads and stores, when combined with /volatile:iso, as having acquire/release semantics. MSVC also exposes a define, _ISO_VOLATILE, which allows users to enquire if this feature is enabled or disabled.
-
Martin Storsjö authored
This allows building the flang runtime and libFortranDecimal standalone, without setting up the full llvm build, by pointing cmake to these directories. This is the other one out of two essential steps for building the flang runtimes for a foreign target, i.e. setting up cross compiling with flang. Differential Revision: https://reviews.llvm.org/D130352
-
Martin Storsjö authored
llvm/Support/Compiler.h requires llvm-config.h, i.e. to include it, you'd need to actually set up building llvm for that target. If using flang to cross compile code for a different target, we need the runtimes built for that target, but we might not want to build llvm itself for that target. This is one out of two essential steps for building the flang runtimes for a foreign target, i.e. setting up cross compiling with flang. Differential Revision: https://reviews.llvm.org/D130351
-
Nico Weber authored
Putting "simulator" in the `-target` flag requires putting it in the "environment" part of the triple, which is the 4th `-`-separated component. Some places in the tests currently use "iossimulator" which puts it in the OS field. The triple parsing code in llvm::Triple uses startswith("ios") in parseOS(), so that successfully sets the OS to "iOS", and all these triples use an intel arch, and iOS + intel triple implicitly make the driver convert the environment to "simulator", so this happened to work -- but it led to the somewhat strange "simulator-simulator" in the diag in the test. No behavior change. Differential Revision: https://reviews.llvm.org/D132399 -
Nico Weber authored
I added this recently, but it looks like several tests very intentionally check that `-mios-version-min=foo --target=x86_64-apple-ios` does simulator builds. So we can't easily remove this hack, even though it makes little sense in an arm mac world. (Here, you _have_ to say `-mios-simulator-version-min=` or `--target=arm64-apple-ios-simulator`.) The tests that check this: Clang :: Driver/darwin-ld.c Clang :: Driver/darwin-simulator-macro.c Clang :: Driver/darwin-version.c No behavior change. Differential Revision: https://reviews.llvm.org/D132400
-
Aditya Kumar authored
Avoids useless evaluation of these expressions. Reviewed By: michaelmaitland, fhahn Differential Revision: https://reviews.llvm.org/D132337
-
Louis Dionne authored
-
Stephen Tozer authored
This patch adds the last of the changes required to enable DBG_VALUE_LIST handling in InstrRefLDV, handling variadic debug values during the transfer tracking step. Most of the changes are fairly straightforward, and based around tracking multiple locations per variable in TransferTracker::VLocTracker. Differential Revision: https://reviews.llvm.org/D128211
-
Louis Dionne authored
This commit reverts the following commits: - 952f90b7 - e6a08005 (D132298) - 176db3b3 (D132324) These commits caused CI instability and need to be reverted in order to figure things out again. See the discussion in https://llvm.org/D132324 for more information.
-
Amaury Séchet authored
-
Michał Górny authored
Replace the uses of Communication::Write() with WriteAll() to avoid partial writes. None of the call sites actually accounted for that possibility and even if it is unlikely to actually happen, there doesn't seem to be any real harm from using WriteAll() instead. Ideally, we'd remove Write() from the public API. However, that would change the API of SBCommunication. The alternative would be to alias it to WriteAll(). Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.llvm.org/D132395
-
Kadir Cetinkaya authored
Differential Revision: https://reviews.llvm.org/D132454
-
Joseph Huber authored
Summary: Some older compilers cannot automatically elide the returned vector of unique pointers, causing build errors. This patch explicitly moves the returned value instead which should solve the problem.
-
Haojian Wu authored
Using the guard to implement part of the rule https://eel.is/c++draft/dcl.pre#6. ``` void foo() { // can be parsed as // - structured-binding declaration (a false parse) // - assignment expression array[index] = value; } ``` Differential Revision: https://reviews.llvm.org/D132260
-
Thomas Symalla authored
funcion => function
-
Haojian Wu authored
The bug was that if we recover from the token 0, we will make the Heads empty (Line646), which results no recovery being applied. Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D132388
-
Christian Sigg authored
GPUFuncOpLowering moves the body out of gpu.func op and erases it. An empty gpu.func may fail verification but should not crash it. Verification of an erased op is triggered e.g. with debug printing on. Reviewed By: akuegel Differential Revision: https://reviews.llvm.org/D132446
-
Joseph Huber authored
We use the `clang-offload-packager` too bundle many files into a single binary format containing metadata. This is used for offloading compilation which may contain multiple device binaries of different types and architectures in a single file. We use this special binary format to store these files along with some necessary metadata around them. We use this format because of the difficulty of determining the filesize of the various binary inputs that will be passed to the offloading toolchain rather than engineering a solution for each input. Previously we only support packaing many files into a single binary. This patch adds support for doing the reverse by using the same `--image=` syntax. To unpackage a binary we now present an input file instead of an output. Reviewed By: tra Differential Revision: https://reviews.llvm.org/D129507
-
Louis Dionne authored
As reported in [1], cxx-headers is not a valid distribution target because it is an interface target in CMake. This breaks the most basic MultiDistributionExample of the runtimes build. This patch handles interface targets by getting rid of the assumption that all distribution components have a target associated to them. It is valid for a distribution component to only have a `install-FOO` target. In the case where only `cxx-headers` is provided as a distribution component, `ninja toolchain-distribution` will not build anything after this patch, since there is effectively nothing to build for the `cxx-headers` target. However, running `ninja install-toolchain-distribution` will build everything, as expected. [1]: https://discord.com/channels/636084430946959380/636732894974312448/1010013287464828968 Differential Revision: https://reviews.llvm.org/D132387
-
Florian Hahn authored
Callsites could be marked as `builtin` while calling `nobuiltin` functions. This can lead to problems, if local optimizations apply transformations based on the semantics of the builtin, but then IPO treats the function as `nobuiltin` and applies a transform that breaks builtin semantics (assumed earlier). To avoid this, mark such functions as maybey-derefined, to avoid IPO transforms on them that may break assumptions of earlier calls. Fixes #57075 Fixes #48366 Reviewed By: ychen Differential Revision: https://reviews.llvm.org/D97735
-
Guillaume Chatelet authored
-
Guillaume Chatelet authored
This reverts commit df99774e.
-
Johannes Reifferscheid authored
Currently, buffer deallocation considers arith.select to be non-aliasing, which results in deallocs being inserted incorrectly. Since arith.select doesn't implement any useful interfaces, this change just handles it explicitly. Eventually this should probably be fixed properly, if this pass is going to be used long term. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D132460
-
Stephen Tozer authored
In preparation for supporting DBG_VALUE_LIST in InstrRefLDV, this patch adds the logic for emitting DBG_VALUE_LIST instructions from InstrRefLDV. The logical changes here are fairly simple, with the main change being that instead of directly prepending offsets to the DIExpr, we use appendOpsToArg to modify the expression for individual debug operands in the expression. The function emitLoc is also changed to take a list of debug ops, with an empty list meaning an undef value. Differential Revision: https://reviews.llvm.org/D128209
-
Adrian Kuegel authored
Differential Revision: https://reviews.llvm.org/D132462
-
Guillaume Chatelet authored
-
Florian Hahn authored
-