- Apr 07, 2020
-
-
Reid Kleckner authored
Saves only 36 includes of ASTContext.h and related headers. There are two deps on ASTContext.h: - C++ method overrides iterator types (TinyPtrVector) - getting LangOptions For #1, duplicate the iterator type, which is TinyPtrVector<>::const_iterator. For #2, add an out-of-line accessor to get the language options. Getting the ASTContext from a Decl is already an out of line method that loops over the parent DeclContexts, so if it is ever performance critical, the proper fix is to pass the context (or LangOpts) into the predicate in question. Other changes are just header fixups.
-
Yaxun (Sam) Liu authored
Move function emitDeferredDiags from Sema to DeferredDiagsEmitter since it is only used by DeferredDiagsEmitter. Also skip visited functions to avoid exponential compile time. Differential Revision: https://reviews.llvm.org/D77028
-
- Apr 06, 2020
-
-
Konstantin Pyzhov authored
Reviewers: sameerds, dstuttard Differential Revision: https://reviews.llvm.org/D77228
-
- Apr 07, 2020
-
-
Matt Morehouse authored
-
Matt Morehouse authored
This reverts commit 68d73dfa.
-
Matt Morehouse authored
This reverts commit 98bb7fdb.
-
Fangrui Song authored
So that constant expressions like the following are permitted: and w0, w0, #~(0xfe<<24) and w1, w1, #~(0xff<<24) The behavior matches GNU as (opcodes/aarch64-opc.c:aarch64_logical_immediate_p). Reviewed By: sdesmalen Differential Revision: https://reviews.llvm.org/D75885
-
Florian Hahn authored
This should fix http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap-msan/builds/18569
-
Amy Huang authored
Summary: In constructor type homing mode sometimes complete debug info for constexpr types was missing, because there was not a constructor emitted. This change makes constructor type homing ignore constexpr types. Reviewers: rnk, dblaikie Subscribers: aprantl, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D77432
-
Fangrui Song authored
Fixes https://bugs.llvm.org/show_bug.cgi?id=45391 The LTO code generator happens after version script scanning and may create references which will fetch some lazy symbols. Currently a version script does not assign VER_NDX_LOCAL to lazy symbols and such symbols will be made global after they are fetched. Change findByVersion and findAllByVersion to work on lazy symbols. For unfetched lazy symbols, we should keep them non-local (D35263). Check isDefined() in computeBinding() as a compensation. This patch fixes a companion bug that --dynamic-list does not export libcall fetched symbols. Reviewed By: grimar Differential Revision: https://reviews.llvm.org/D77280
-
Matt Morehouse authored
-
Matt Morehouse authored
-
Louis Dionne authored
-
Nikita Popov authored
When entering a basic block, RDA inserts reaching definitions coming from predecessor blocks (which will be negative numbers) in a rather peculiar way. If you have incoming reaching definitions -4, -3, -2, -1, it will insert those. If you have incoming reaching definitions -1, -2, -3, -4, it will insert -1, -1, -1, -1, as the max is taken at each step. That's probably not what was intended... However, RDA only actually cares about the most recent reaching definition from a predecessor (to calculate clearance), so this ends up working fine as far as behavior is concerned. It does waste memory on unnecessary reaching definitions though. This patch changes the implementation to first compute the most recent reaching definition in one loop, and then insert only that one in a separate loop. Differential Revision: https://reviews.llvm.org/D77508
-
Sanjay Patel authored
Shows bugs for div/rem/fdiv and possibly others.
-
Nikita Popov authored
At the end of a basic block, RDA adjusts all the reaching defs it found to be relative to the end of the basic block, rather than the start of it. However, it also does this to registers which don't have a reaching def, indicated by ReachingDefDefaultVal. This means that code checking against ReachingDefDefaultVal will not skip them, and may insert them into the reaching definition list. This is ultimately harmless, but causes unnecessary work and is logically not right. Differential Revision: https://reviews.llvm.org/D77506
-
Alexey Bataev authored
IR. Fixed a crash because of the not quite correct casting of the value of iterations.
-
Kazuaki Ishizaki authored
Differential Revision: https://reviews.llvm.org/D77460
-
Scott Linder authored
Summary: The only guarantee there seems to be in the clang-format packaging is that an executable called `clang-format` is in the PATH. Use the in-tree `clang-format-diff.py` to avoid assuming anything else. Also remove dead code for SVN repo and switch to `git diff-index` which is the git plumbing equivalent of `git diff` in this case. Reviewers: starsid, mehdi_amini, vitalybuka, fhahn, kadircet Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D77428
-
- Apr 06, 2020
-
-
Jonathan Roelofs authored
-
-
Sanjay Patel authored
The cmyk test is based on the known regression that resulted from: rGf2fbdf76 This improves on the equivalent signed min/max change: rG867f0c3c The underlying icmp equivalence is: ~X pred ~Y --> Y pred X For an icmp with constant, canonicalization results in a swapped pred: ~X < C --> X > ~C
-
BoYao Zhang authored
-
Matt Arsenault authored
-
Matt Arsenault authored
-
Jay Foad authored
-
Louis Dionne authored
We had a workaround because GCC 5 does not evaluate static assertions that are dependent on template parameters. This commit removes the workaround and marks the corresponding tests as unsupported with GCC 5. This has the benefit of bringing the new and the old test formats closer without having to carry a workaround for an old compiler in the new test format.
-
Gabor Marton authored
Summary: Currently we match the summary signature based on the arguments in the CallExpr. There are a few problems with this approach. 1) Variadic arguments are handled badly. Consider the below code: int foo(void *stream, const char *format, ...); void test_arg_constraint_on_variadic_fun() { foo(0, "%d%d", 1, 2); // CallExpr } Here the call expression holds 4 arguments, whereas the function declaration has only 2 `ParmVarDecl`s. So there is no way to create a summary that matches the call expression, because the discrepancy in the number of arguments causes a mismatch. 2) The call expression does not handle the `restrict` type qualifier. In C99, fwrite's signature is the following: size_t fwrite(const void *restrict, size_t, size_t, FILE *restrict); However, in a call expression, like below, the type of the argument does not have the restrict qualifier. void test_fread_fwrite(FILE *fp, int *buf) { size_t x = fwrite(buf, sizeof(int), 10, fp); } This can result in an unmatches signature, so the summary is not applied. The solution is to match the summary against the referened callee `FunctionDecl` that we can query from the `CallExpr`. Further patches will continue with additional refactoring where I am going to do a lookup during the checker initialization and the signature match will happen there. That way, we will not check the signature during every call, rather we will compare only two `FunctionDecl` pointers. Reviewers: NoQ, Szelethus, gamesh411, baloghadamsoftware Subscribers: whisperity, xazax.hun, kristof.beyls, szepet, rnkovacs, a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, Charusso, steakhal, danielkiss, ASDenysPetrov, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D77410 -
Louis Dionne authored
Otherwise, we're missing some flags like the flags that are used by sanitizer builds and the 32-bit builds. In the long term, I think it would be better to have only %{compile_flags} and %{link_flags}, but for the benefit of adopting the new format by default, I think it's OK to add %{flags} to it. -
Louis Dionne authored
That test requires std::optional. We never noticed that because our test format was skipping Objective-C++ tests altogether.
-
Nicolas Vasilache authored
Summary: This revision adds a tensor_reshape operation that operates on tensors. In the tensor world the constraints are less stringent and we can allow more arbitrary dynamic reshapes, as long as they are contractions. The expansion of a dynamic dimension into multiple dynamic dimensions is under-specified and is punted on for now. Differential Revision: https://reviews.llvm.org/D77360
-
Sanjay Patel authored
-
Martin Probst authored
Summary: The previous change in https://reviews.llvm.org/D77311 attempted to detect more C++ keywords. However it also precisely detected all JavaScript keywords. That's generally correct, but many JavaScripy keywords, e.g. `get`, are so-called pseudo-keywords. They can be used in positions where a keyword would never be legal, e.g. in a dotted expression: x.type; // type is a pseudo-keyword, but can be used here. x.get; // same for get etc. This change introduces an additional parameter to `IsJavaScriptIdentifier`, allowing clients to toggle whether they want to allow `IdentifierName` tokens, i.e. pseudo-keywords. Reviewers: krasimir Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D77548
-
Gabor Marton authored
Reviewers: Szelethus, baloghadamsoftware, gamesh411, steakhal, balazske Subscribers: whisperity, xazax.hun, szepet, rnkovacs, a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, Charusso, ASDenysPetrov, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D77411
-
Florian Hahn authored
This patch moves calls to their own recipe, to simplify the transition to VPUser for operands of VPWidenRecipe, as discussed in D76992. Subsequently additional information can be added to the recipe rather than computing it during the execute step. Reviewers: rengolin, Ayal, gilr, hsaito Reviewed By: gilr Differential Revision: https://reviews.llvm.org/D77467
-
Chris Bowler authored
Differential Revision: https://reviews.llvm.org/D76380
-
Matt Arsenault authored
-
Guillaume Chatelet authored
Summary: In D77454 we explain that `LoadInst` and `StoreInst` always have their alignment defined. This allows to work backward here and to infer that `getNewAlignment` does not need to return `0` in case of failure. Returning `1` also works since it needs to be greater than the Load/Store alignment which is a least `1`. This is patch is part of a series to introduce an Alignment type. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html See this patch for the introduction of the type: https://reviews.llvm.org/D64790 Reviewers: courbet Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D77538
-
Nico Weber authored
-
Chris Bowler authored
Differential Revision: https://reviews.llvm.org/D76875
-