- Apr 19, 2021
-
-
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
-
LLVM GN Syncbot authored
-
Mark de Wever authored
This is the initial patch to implement ranges in libc++. Implements parts of: - P0896R4 One Ranges Proposal - P1870 forwarding-range is too subtle - LWG3379 in several library names is misleading Reviewed By: ldionne, #libc, cjdb, zoecarver, Quuxplusone Differential Revision: https://reviews.llvm.org/D90999
-
Florian Hahn authored
Add test cases showing large ashr expansion during IndVarSimplify after ec54867d.
-
Nathan James authored
-
Roman Lebedev authored
Test SSE41, since that added float/i64/i32/i8 inserts/extracts. Don't forget to test vectors of pointers. Do test byte-aligned loads/stores. Fixup test coverage to be rather more exhaustive, testing all reasonable element sizes vs element counts permutations that fit up to witin ZMM.
-
Roman Lebedev authored
-
Juneyoung Lee authored
This is a patch to use m_Undef() matcher instead of isa<UndefValue>(). As suggested in D100122, this update is separately committed.
-
Juneyoung Lee authored
This fixes https://reviews.llvm.org/D93990#2666922 by teaching `m_Undef` to match vectors/aggrs with poison elements. As suggested, fixes in InstCombine files to use the `m_Undef` matcher instead of `isa<UndefValue>` will be followed. Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D100122
-
Stephen Kelly authored
Extend the matchers gathering API for types to record template parameters. The TypeLoc type hierarchy has some types which are templates used in CRTP such as PointerLikeTypeLoc. Record the inherited template and template arguments of types inheriting those CRTP types in the ClassInheritance map. Because the name inherited from is now computed, the value type in that map changes from StringRef to std::string. This also causes the toJSON override signature used to serialize that map to change. Remove the logic for skipping over empty ClassData instances. Several classes such as TypeOfExprTypeLoc inherit a CRTP class which provides interesting locations though the derived class does not. Record it as a class to make the locations it inherits available. Record the typeSourceInfo accessors too as they provide access to TypeLocs in many classes. The existing unit tests use UnorderedElementsAre to compare the introspection result with the expected result. Our current implementation of google mock (in gmock-generated-matchers.h) is limited to support for comparing a container of 10 elements. As we are now returning more than 10 results for one of the introspection tests, change it to instead compare against an ordered vector of pairs. Because a macro is used to generate API strings and API calls, disable clang-format in blocks of expected results. Otherwise clang-format would insert whitespaces which would then be compared against the introspected strings and fail the test. Introduce a recursion guard in the generated code. The TypeLoc class has IgnoreParens() API which by default returns itself, so it would otherwise recurse infinitely. Differential Revision: https://reviews.llvm.org/D100516
-
Arthur O'Dwyer authored
-
Florian Hahn authored
At the moment, ReversePostOrderTraversal performs a post-order walk on the entry node of the passed in graph, rather than the graph type itself. If GT::NodeRef is the same as GraphT, everything works as expected and this is the case for the current uses in-tree. But it does not work as expected if GraphT != GT::NodeRef. In that case, we either fail to build (if there is no GraphTrait specialization for GT:NodeRef) or we pick the GraphTrait specialization for GT::NodeRef, instead of the specialization of GraphT. Both the depth-first and post-order iterators pick the expected specalization and this patch updates ReversePostOrderTraversal to delegate to po_begin & po_end to pick the right specialization, rather than forcing using GraphTraits<GT::NodeRef>, by first getting the entry node. This makes `ReversePostOrderTraversal<Graph<6>> RPOT(G);` build and work as expected in the test. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D100169
-