- Apr 19, 2021
-
-
Cullen Rhodes authored
Reviewed By: sdesmalen Differential Revision: https://reviews.llvm.org/D100377
-
Timm Bäder authored
The comment here was introduced in a3e01cf8 and suggests that we should handle declaration statements and non-declaration statements the same, but don't because ProhibitAttributes() can't handle GNU attributes. That has recently changed, so remove the comment and handle all statements the same. Differential Revision: https://reviews.llvm.org/D99936
-
Dmitry Preobrazhensky authored
Disabled constants as carry in/out operands. See bug 48711. Differential Revision: https://reviews.llvm.org/D100642
-
Jan Svoboda authored
This patch removes the `-full-command-line` option from `clang-scan-deps`. It's only used with `-format=experimental-full`, where omitting the command lines doesn't make much sense. There are no tests without `-full-command-line`. Depends on D100531. Reviewed By: Bigcheese Differential Revision: https://reviews.llvm.org/D100533
-
Roman Lebedev authored
This is similar to the subvector extractions, except that the 0'th subvector isn't free to insert, because we generally don't know whether or not the upper elements need to be preserved: https://godbolt.org/z/rsxP5W4sW This is needed to avoid regressions in D100684 Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D100698
-
Fraser Cormack authored
This patch extends the lowering of RVV fixed-length vector shuffles to avoid the default stack expansion and instead lower to vrgather instructions. For "permute"-style shuffles where one vector is swizzled, we can lower to one vrgather. For shuffles involving two vector operands, we lower to one unmasked vrgather (or splat, where appropriate) followed by a masked vrgather which blends in the second half. On occasion, when it's not possible to create a legal BUILD_VECTOR for the indices, we use vrgatherei16 instructions with 16-bit index types. For 8-bit element vectors where we may have indices over 255, we have a fairly blunt fallback to the stack expansion to avoid custom-splitting of the vector types. To enable the selection of masked vrgather instructions, this patch extends the various RISCVISD::VRGATHER nodes to take a passthru operand. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D100549
-
Kerry McLaughlin authored
D98435 added support for in-order reductions and included tests for fixed-width vectorization with the -enable-strict-reductions flag. This patch adds similar tests to verify support for scalable vectorization of loops with in-order reductions. Reviewed By: david-arm Differential Revision: https://reviews.llvm.org/D100385
-
Jan Svoboda authored
This patch simplifies (and renames) the `appendCommonModuleArguments` function. It no longer tries to construct the command line for explicitly building modules. Instead, it only performs the DFS traversal of modular dependencies and queries the callbacks to collect paths to `.pcm` and `.modulemap` files. This makes it more flexible and usable in two contexts: * Generating additional command line arguments for the main TU in modular build. The `std::vector<std::string>` output parameters can be used to manually generate appropriate command line flags. * Generate full command line for a module. The output parameters can be the corresponding parts of `CompilerInvocation`. (In a follow-up patch.) Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D100531
-
OCHyams authored
Value::replaceUsesOutsideBlock doesn't replace debug uses which leads to an unnecessary reduction in variable location coverage. Fix this, add a unittest for it, and add a regression test demonstrating the change through instcombine's replacedSelectWithOperand. Reviewed By: djtodoro Differential Revision: https://reviews.llvm.org/D99169
-
Tres Popp authored
Differential Revision: https://reviews.llvm.org/D100289
-
OCHyams authored
Move the findDbg* functions into lib/IR/DebugInfo.cpp from lib/Transforms/Utils/Local.cpp. D99169 adds a call to a function (findDbgUsers) that lives in lib/Transforms/Utils/Local.cpp (LLVMTransformUtils) from lib/IR/Value.cpp (LLVMCore). The Core lib doesn't include TransformUtils. The builtbots caught this here: https://lab.llvm.org/buildbot/#/builders/109/builds/12664. This patch moves the function, and the 3 similar ones for consistency, into DebugInfo.cpp which is part of LLVMCore. Reviewed By: dblaikie, rnk Differential Revision: https://reviews.llvm.org/D100632
-
Jan Svoboda authored
NFC, this simplifies the main parsing/generating functions by moving logic around conditional `LangOptions` where it belongs. Reviewed By: Bigcheese Differential Revision: https://reviews.llvm.org/D100653
-
Sven van Haastregt authored
Instead of using a MinVersion and MaxVersion field, encode the version of a builtin using a mask that aligns better with version handling in OpenCLOptions.h. In addition, this saves a field in the BuiltinTable. This change allows a finer-grained control over the OpenCL versions in which a builtin is available: instead of a range, we can now toggle each version individually. The fine-grained version control is not yet exposed on the TableGen definitions side, as changes for OpenCL 3 feature optionality still need to be defined and will affect how we want to expose these. Differential Revision: https://reviews.llvm.org/D100492
-
Jan Svoboda authored
`Success` is set to `false` whenever `Diags.Report(diag::err_)` is called. Remove the duplication and use `Diags` as the source of truth when deciding whether to report parsing success/failure. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D100644
-
Jan Svoboda authored
This patch implements the copy assignment for `CompilerInvocation`. Eventually, the deep-copy operation will be moved into a `clone()` method (D100460), but until then, this is necessary for basic ergonomics. Depends on D100455. Reviewed By: Bigcheese Differential Revision: https://reviews.llvm.org/D100473
-
Clement Courbet authored
This is useful to set the baseline model for an unknown CPU. Fixes PR50013. Differential Revision: https://reviews.llvm.org/D100743
-
Jan Svoboda authored
This patch documents the reason `CompilerInvocationBase` exists and renames it to more descriptive `CompilerInvocationRefBase`. To make the distinction obvious, it also splits out new `CompilerInvocationValueBase` class. Reviewed By: Bigcheese Differential Revision: https://reviews.llvm.org/D100455
-
David Sherwood authored
When trying to clamp a constant index into a scalable vector we can test if the index is less than the minimum number of elements in the vector. If so, we can simply return the index because we know it is guaranteed to fit inside the vector. Differential Revision: https://reviews.llvm.org/D100639
-
Serguei Katkov authored
Greedy RA adds copies of virtual registers when splitting live interval. This stat might be useful. Reviewers: reames, MatzeB, anemet, thegameg Reviewed By: reames Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D100017
-
Serguei Katkov authored
If Virtual Register is alive in landing pad its def must be before the call causing the exception or it should be statepoint instruction itself and in this case def actually means the relocation of gc pointer and is alive in landing pad. The test shows the triggering this check for an option under development use-registers-for-gc-values-in-landing-pad which is off by default until it is functionally correct. Reviewers: reames, void, jyknight, nickdesaulniers, efriedma, arsenm, rnk Reviewed By: rnk Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D100525
-
Evgeniy Brevnov authored
Recently processMinMaxIntrinsic has been added and we started to observe a number of analysis get invalidated after CVP. The problem is CVP conservatively returns 'true' even if there were no modifications to IR. I found one more place besides processMinMaxIntrinsic which has the same problem. I think processMinMaxIntrinsic and similar should better have boolean return status to prevent similar issue reappear in future. Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D100538
-
ShihPo Hung authored
In baremetal::Linker::ConstructJob, LinkerInput is handled prior to T_Group options, but on the other side in RISCV::Linker::ConstructJob, it is opposite. We want it to be consistent whether users are using RISCV::Linker or baremetal::Linker. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D100615
-
Pan, Tao authored
clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp:33:58: error: could not convert ‘(const char*)""’ from ‘const char*’ to llvm::StringLiteral’ llvm::StringLiteral kind() const override { return ""; }; Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D100612 -
Arthur O'Dwyer authored
This came up in D100595. Differential Revision: https://reviews.llvm.org/D100728
-
Craig Topper authored
The number of modes is small so this should avoid a heap allocation. Also replace std::set with SmallSet.
-
Xun Li authored
Presplit coroutines cannot be inlined. During AlwaysInliner we check if a function is a presplit coroutine, if so we skip inlining. The presplit coroutine attributes are set in CoroEarly pass. However in O0 pipeline, AlwaysInliner runs before CoroEarly, so the attribute isn't set yet and will still inline the coroutine. This causes Clang to crash: https://bugs.llvm.org/show_bug.cgi?id=49920 To fix this, we set the attributes in the Clang front-end instead of in CoroEarly pass. Reviewed By: rjmccall, ChuanqiXu Differential Revision: https://reviews.llvm.org/D100282
-
Xun Li authored
Presplit coroutines cannot be inlined. During AlwaysInliner we check if a function is a presplit coroutine, if so we skip inlining. The presplit coroutine attributes are set in CoroEarly pass. However in O0 pipeline, AlwaysInliner runs before CoroEarly, so the attribute isn't set yet and will still inline the coroutine. This causes Clang to crash: https://bugs.llvm.org/show_bug.cgi?id=49920 Differential Revision: https://reviews.llvm.org/D100282
-
Martin Storsjö authored
This fixes cases where "not not <command>" is supposed to return only the error codes 0 or 1, but after efee5792, it passed the original error code through. This was visible on AIX in the shtest-output-printing.py testcase, where 'wc' returns 2, while it returns 1 on other platforms, and the test required "not not" to normalize it to 1.
-
Craig Topper authored
MachineValueTypeSet is effectively a std::bitset<256>. This allows us quickly insert into the set and check if a type is in the set.
-
Nikita Popov authored
Test case for a SCEV invalidation bug caused by D100264, which has since been reverted.
-
Craig Topper authored
-
Nathan James authored
Saves running the generate inc script in the, somewhat common, case where the json file doesn't need changing. Reviewed By: steveire Differential Revision: https://reviews.llvm.org/D100719
-
Fangrui Song authored
glibc s390x doesn't define __tls_get_addr. Fix PR50017
-
Arthur O'Dwyer authored
Since we have a tool to detect cycles now; and since we're entering a phase where people can easily introduce cycles by accident (D100682) or by request (D90999), I think it's increasingly important to shift the burden of detecting these cycles onto the buildbot instead of the poor human reviewer. Also, grep for non-ASCII characters (such as U+200B and U+00AD) and hard tabs; don't let those get checked in. Differential Review: https://reviews.llvm.org/D100703
-
- Apr 18, 2021
-
-
Roman Lebedev authored
As being discussed in https://reviews.llvm.org/D100721, this modelling is lossy, we can't reconstruct `ash`/`ashr exact` from it, which means that whenever we actually expand the IR, we've just pessimized the code.. It would be good to model this pattern, after all it comes up every time you want to compute a distance between two pointers, but not at this cost. This reverts commit ec54867d.
-
Martin Storsjö authored
Don't try to execute clang-ast-dump when cross compiling.
-
Martin Storsjö authored
-
xgupta authored
-