- May 26, 2022
-
-
LLVM GN Syncbot authored
-
Nikolas Klauser authored
Reviewed By: ldionne, var-const, #libc Spies: libcxx-commits, mgorny Differential Revision: https://reviews.llvm.org/D123016
-
Simon Pilgrim authored
-
Stefan Pintilie authored
On Power PC we have ISA3.0 for Power 9, ISA3.1 for Power 10. This patchs adds an ISA for mcpu=future. The idea is to have a placeholder ISA for work that is experimental and may not be supported by existing ISAs. Reviewed By: lei Differential Revision: https://reviews.llvm.org/D126075
-
Paul Robinson authored
-
Tyler Chatow authored
Fixes https://github.com/llvm/llvm-project/issues/55457 Ensures that attributes in the enum declaration are interpreted correctly, for instance: ``` enum class [[nodiscard]] E { a, b }; ``` Reviewed By: MyDeveloperDay, curdeius Differential Revision: https://reviews.llvm.org/D125848
-
Nathan Sidwell authored
CoreturnStmt needs to keep the operand value distinct from its use in any return_value call, so that instantiation may rebuild the latter. But it also needs to keep the operand value separate in the case of calling return_void. Code generation checks the operand value form to determine whether it is a distincte entity to the promise call. This adds the same logic to CFG generation. Reviewed By: bruno Differential Revision: https://reviews.llvm.org/D126399
-
NAKAMURA Takumi authored
-
Louis Dionne authored
If you are broken by this change, you should remove your CMake cache and re-run the CMake generation step.
-
Alexey Bataev authored
ScatterVectorize nodes should be handled same way as gathers in reorderBottomToTop function, since we can simple reorder the loads in this node. Because of that need to include such nodes to the list of gathered nodes to fix compiler crash. Differential Revision: https://reviews.llvm.org/D126378
-
Emil Kieri authored
This is a preparation for D125804, which makes test_errors.py test warnings the same way it already tests errors, i.e., assert that the emitted and expected errors are identical. The following changes are made to the test: - Add the WARNING directive where warnings are expected. - Remove -Werror in the RUN line. It does not serve much purpose here: with -Werror flang makes compilation fail in the presence of warnings, but warnings are still printed as warnings and not as errors. And I anyway find it better to test the warnings as warnings instead of promoting them and test both warnings and errors as errors. - Update the header comment describing the test case, mostly in response to the removal of -Werror. - Remove the reference to 'issue 458', referring to https://github.com/flang-compiler/f18/issues/458, from the header. I think the relevant reference here is to C1120 of the standard, and references to bug trackers from other projects (from before upstreaming) can be confusing. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D126176
-
Joseph Huber authored
CUDA requires that static variables be visible to the host when offloading. However, The standard semantics of a stiatc variable dictate that it should not be visible outside of the current file. In order to access it from the host we need to perform "externalization" on the static variable on the device. This requires generating a semi-unique name that can be affixed to the variable as to not cause linker errors. This is currently done using the CUID functionality, an MD5 hash value set up by the clang driver. This allows us to achieve is mostly unique ID that is unique even between multiple compilations of the same file. However, this is not always availible. Instead, this patch uses the unique ID from the file to generate a unique symbol name. This will create a unique name that is consistent between the host and device side compilations without requiring the CUID to be entered by the driver. The one downside to this is that we are no longer stable under multiple compilations of the same file. However, this is a very niche use-case and is not supported by Nvidia's CUDA compiler so it likely to be good enough. Reviewed By: tra Differential Revision: https://reviews.llvm.org/D125904
-
Sanjay Patel authored
With large compare constant: (X u/ Y) == C --> (X == C) && (Y == 1) (X u/ Y) != C --> (X != C) || (Y != 1) https://alive2.llvm.org/ce/z/EhKwh6 There are various potential missing icmp (div) transforms shown here: https://github.com/llvm/llvm-project/issues/55695 This is a generalization for part of the udiv + equality. I didn't check in detail, but some of those may only make sense as codegen transforms. This results in one extra instruction in IR, but it is better for analysis, and looks much better in codegen on all targets that I tried. Differential Revision: https://reviews.llvm.org/D126410
-
Sanjay Patel authored
This covers a generalization of one of the transforms suggested in #55695.
-
Louis Dionne authored
Like we have been doing for libc++ for a while now, start using from-scratch testing configurations for libc++abi. As a fly-by fix, remove the LIBCXXABI_NO_TIMER macro, which was defined but never used. Differential Revision: https://reviews.llvm.org/D125242
-
Simon Pilgrim authored
Remove local (uniform) constant folding and rely on getNode() to perform it Minor cleanup step toward adding non-uniform shift amount support
-
Marek Kurdej authored
Fixes https://github.com/llvm/llvm-project/issues/55610. Reviewed By: MyDeveloperDay Differential Revision: https://reviews.llvm.org/D126096
-
Aaron Ballman authored
Amends 681c50c6 and hopefully fixes: https://lab.llvm.org/buildbot/#/builders/109/builds/39347 https://lab.llvm.org/buildbot/#/builders/188/builds/14634 and others
-
Aaron Ballman authored
Post-commit feedback on https://reviews.llvm.org/D122895 pointed out that the diagnostic wording for some code was using "declaration" in a confusing way, such as: int foo(); // warning: a function declaration without a prototype is deprecated in all versions of C and is not supported in C2x int foo(int arg) { // warning: a function declaration without a prototype is deprecated in all versions of C and is not supported in C2x return 5; } And that we had other minor issues with the diagnostics being somewhat confusing. This patch addresses the confusion by reworking the implementation to be a bit more simple and a bit less chatty. Specifically, it changes the warning and note diagnostics to be able to specify "declaration" or "definition" as appropriate, and it changes the function merging logic so that the function without a prototype is always what gets warned on, and the function with a prototype is sometimes what gets noted. Additionally, when diagnosing a K&R C definition that is preceded by a function without a prototype, we don't note the prior declaration, we warn on it because it will also be changing behavior in C2x. Differential Revision: https://reviews.llvm.org/D125814
-
Gabor Marton authored
Dependent patch adds UnarySymExpr, now I'd like to handle that for SMT conversions like refutation. Differential Revision: https://reviews.llvm.org/D125547
-
Gabor Marton authored
Fixes https://github.com/llvm/llvm-project/issues/55241 Differential Revision: https://reviews.llvm.org/D125395
-
Gabor Marton authored
This patch adds a new descendant to the SymExpr hierarchy. This way, now we can assign constraints to symbolic unary expressions. Only the unary minus and bitwise negation are handled. Differential Revision: https://reviews.llvm.org/D125318
-
Gabor Marton authored
Depends on D124758. That patch introduced serious regression in the run-time in some special cases. This fixes that. Differential Revision: https://reviews.llvm.org/D126406
-
Ivan Kosarev authored
Resolves part of https://github.com/llvm/llvm-project/issues/38652 Reviewed By: dp Differential Revision: https://reviews.llvm.org/D125700
-
Aaron Ballman authored
This ensures that a deduced type like __auto_type matches the correct association instead of matching all associations. This addresses a regression from e4a42c5b Fixes #55702
-
Simon Pilgrim authored
Prep work as I'm investigating some cases where TLI::convertSetCCLogicToBitwiseLogic should accept vectors.
-
Ivan Kosarev authored
Also fix directives not covered by D125604.
-
Chen Zheng authored
reapply 62a9b36f and fix module build failue: 1: remove MachineCycleInfoWrapperPass in MachinePassRegistry.def MachineCycleInfoWrapperPass is a anylysis pass, should not be there. 2: move the definition for MachineCycleInfoPrinterPass to cpp file. Otherwise, there are module conflicit for MachineCycleInfoWrapperPass in MachinePassRegistry.def and MachineCycleAnalysis.h after 62a9b36f. MachineCycle can handle irreducible loop. Natural loop analysis (MachineLoop) can not return correct loop depth if the loop is irreducible loop. And MachineSink is sensitive to the loop depth, see MachineSinking::isProfitableToSinkTo(). This patch tries to use MachineCycle so that we can handle irreducible loop better. Reviewed By: sameerds, MatzeB Differential Revision: https://reviews.llvm.org/D123995
-
Ivan Kosarev authored
Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D125604
-
Alex Zinenko authored
The Transform dialect uses the side effect modeling mechanism to record the effects of the transform ops on the mapping between Transform IR values and Payload IR ops. Introduce a checker pass that warns if a Transform IR value is used after it has been freed (consumed). This pass is mostly intended as a debugging aid in addition to the verification/assertion mechanisms in the transform interpreter. It reports all potential use-after-free situations. The implementation makes a series of simplifying assumptions to be simple and conservative. A more advanced implementation would rely on the data flow-like analysis associated with a side-effect resource rather than a value, which is currently not supported by the analysis infrastructure. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D126381
-
Simon Pilgrim authored
-
Florian Hahn authored
-
David Spickett authored
Fixes failure seen when building without X86 backend: https://lab.llvm.org/buildbot/#/builders/171/builds/15124
-
David Green authored
These shows that the cost of a @llvm.vscale is indeed 1, not 10.
-
Fraser Cormack authored
-
LLVM GN Syncbot authored
-
Nikolas Klauser authored
Reviewed By: var-const, #libc Spies: libcxx-commits, mgorny Differential Revision: https://reviews.llvm.org/D123681
-
Florian Hahn authored
When updating the branch instruction outside the loopduring non-trivial unswitching, always skip trivial selects and update the condition. Otherwise we might create invalid IR, because the trivial select is inside the loop, while the condition is outside the loop. Fixes #55697.
-
Kito Cheng authored
We didn't implement RISCVELFStreamer::reset and cause some very strange section output for attribute section...just reference D15950 to see how ARM implement that. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D125905
-
Florian Hahn authored
-