- Apr 19, 2021
-
-
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
-
Nikita Popov authored
-
Nikita Popov authored
Replace branch on undef by branch on unknown condition.
-
Lang Hames authored
-
Sylvain Audi authored
clang-scan-deps contains some command line parsing and modifications. This patch adds support for clang-cl command options. Differential Revision: https://reviews.llvm.org/D92191
-
Sylvain Audi authored
This fixes argument injection in clang command lines, by adding them before "--". Previously, the arguments were injected at the end of the command line and could be added after "--", which would be wrongly interpreted as input file paths. This fix is needed for a subsequent patch, see D92191. Differential Revision: https://reviews.llvm.org/D95099
-
Alexandre Ganea authored
-
Stephen Kelly authored
-
Craig Topper authored
This keeps track of which modes are in VVT so we can find out if a mode is missing later. But we can just ask VVT whether it has a particular mode.
-
Jennifer Chukwu authored
Reviewed By: xgupta Differential Revision: https://reviews.llvm.org/D100705
-
Stephen Kelly authored
This class initially had args to be generic to future needs. In particular, I thought that source location introspection should show the getBeginLoc of CallExpr args and the getArgLoc of TemplateSpecializationLocInfo etc. However, that is probably best left out of source location introspection because it involves node traversal. If something like this is needed in the future, it can be added in the future. Differential Revision: https://reviews.llvm.org/D100688
-
Florian Hahn authored
This patch updates a couple of functions that unnecessarily took the input graph by value, when it was not needed. They can take the graph by const-reference instead, which does not require GraphT to provide a copy constructor. Split off from D100169.
-
Mark de Wever authored
-