- Jan 20, 2021
-
-
Stephen Kelly authored
This reduces template bloat, but more importantly, makes it possible to construct one from clang-query without template types. Differential Revision: https://reviews.llvm.org/D94879
-
Jon Chesterfield authored
[libomptarget][devicertl] Wrap source in declare target pragmas Factored out of D93135 / D94745. C++ and cuda ignore unknown pragmas so this is a NFC for the current implementation language. Removes noise from patches for building deviceRTL as openmp. Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D95048
-
Alex Richardson authored
Currently all these tests are XFAILED on Linux even though the problem only seems to be with the few checks that look at collation. To retain test coverage this splits the locale-dependent tests into a separate .pass.cpp that is XFAILed as before. This commit also XFAILs the locale-dependent tests on FreeBSD since the [=M=] and [.ch.] behaviour for cs_CZ also doesn't seem to match the behaviour that is expected by these tests. Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D94969
-
Stephen Kelly authored
Differential Revision: https://reviews.llvm.org/D94878
-
Simon Pilgrim authored
Add DemandedElts support inside the TRUNCATE analysis. Differential Revision: https://reviews.llvm.org/D56387
-
Hans Wennborg authored
Combined with 'da986511 - Revert "DR2064: decltype(E) is only a dependent', this change (5a391d38) caused verifier errors when building Chromium. See https://crbug.com/1168494#c1 for a reproducer. Additionally it reverts changes that were dependent on this one, see below. > Following up on PR48517, fix handling of template arguments that refer > to dependent declarations. > > Treat an id-expression that names a local variable in a templated > function as being instantiation-dependent. > > This addresses a language defect whereby a reference to a dependent > declaration can be formed without any construct being value-dependent. > Fixing that through value-dependence turns out to be problematic, so > instead this patch takes the approach (proposed on the core reflector) > of allowing the use of pointers or references to (but not values of) > dependent declarations inside value-dependent expressions, and instead > treating template arguments as dependent if they evaluate to a constant > involving such dependent declarations. > > This ends up affecting a bunch of OpenMP tests, due to OpenMP > imprecisely handling instantiation-dependent constructs, bailing out > early instead of processing dependent constructs to the extent possible > when handling the template. > > Previously committed as 8c1f2d15, and > reverted because a dependency commit was reverted. This reverts commit 5a391d38. It also restores clang/test/SemaCXX/coroutines.cpp to its state before da986511. Revert "[c++20] P1907R1: Support for generalized non-type template arguments of scalar type." > Previously committed as 9e08e51a, and > reverted because a dependency commit was reverted. This incorporates the > following follow-on commits that were also reverted: > > 7e84aa1b by Simon Pilgrim > ed13d8c6 by me > 95c7b6ca by Sam McCall > 430d5d84 by Dave Zarzycki This reverts commit 4b574008. Revert "[msabi] Mangle a template argument referring to array-to-pointer decay" > [msabi] Mangle a template argument referring to array-to-pointer decay > applied to an array the same as the array itself. > > This follows MS ABI, and corrects a regression from the implementation > of generalized non-type template parameters, where we "forgot" how to > mangle this case. This reverts commit 18e093fa.
-
Paul C. Anagnostopoulos authored
This reverts commit c056f824. That commit causes build failures.
-
Simon Pilgrim authored
As discussed on D56387, if we're shifting to extract the upper/lower half of a vXi64 vector then we're actually better off performing this at the subvector level as its very likely to fold into something. combineConcatVectorOps can perform this in reverse if necessary.
-
Paul C. Anagnostopoulos authored
Differential Revision: https://reviews.llvm.org/D94822
-
Amanieu d'Antras authored
Add the aarch64[_be]-*-gnu_ilp32 targets to support the GNU ILP32 ABI for AArch64. The needed codegen changes were mostly already implemented in D61259, which added support for the watchOS ILP32 ABI. The main changes are: - Wiring up the new target to enable ILP32 codegen and MC. - ILP32 va_list support. - ILP32 TLSDESC relocation support. There was existing MC support for ELF ILP32 relocations from D25159 which could be enabled by passing "-target-abi ilp32" to llvm-mc. This was changed to check for "gnu_ilp32" in the target triple instead. This shouldn't cause any issues since the existing support was slightly broken: it was generating ELF64 objects instead of the ELF32 object files expected by the GNU ILP32 toolchain. This target has been tested by running the full rustc testsuite on a big-endian ILP32 system based on the GCC ILP32 toolchain. Reviewed By: kristof.beyls Differential Revision: https://reviews.llvm.org/D94143
-
Mindong Chen authored
This patch pre-commits a test case with wrong exit count analysis for D92367. Reviewed by: mkazantsev Differential Revision: https://reviews.llvm.org/D94657
-
Bjorn Pettersson authored
The pass analysis uses "sets" implemented using a SmallVector type to keep track of Used, Preserved, Required and RequiredTransitive passes. When having nested analyses we could end up with duplicates in those sets, as there was no checks to see if a pass already existed in the "set" before pushing to the vectors. This idea with this patch is to avoid such duplicates by avoiding pushing elements that already is contained when adding elements to those sets. To align with the above PMDataManager::collectRequiredAndUsedAnalyses is changed to skip adding both the Required and RequiredTransitive passes to its result vectors (since RequiredTransitive always is a subset of Required we ended up with duplicates when traversing both sets). Main goal with this is to avoid spending time verifying the same analysis mulitple times in PMDataManager::verifyPreservedAnalysis when iterating over the Preserved "set". It is assumed that removing duplicates from a "s...
-
Haojian Wu authored
find-references on `virtual void meth^od() = 0` will include override references. Differential Revision: https://reviews.llvm.org/D94390
-
Christian Sigg authored
-
Mark Murray authored
Depends on D94970 Differential Revision: https://reviews.llvm.org/D94971
-
Mark Murray authored
Differential Revision: https://reviews.llvm.org/D94970
-
Kadir Cetinkaya authored
NameMatch could be a float close to zero, in such cases we were dividing by zero and moreover propogating a "NaN" to clients, which is invalid per JSON. This fixes the issue by only using Quality scores whenever the NameMatch is low, as we do in CodeCompletion ranking. Fixes https://github.com/clangd/clangd/issues/648. Differential Revision: https://reviews.llvm.org/D94755
-
James Henderson authored
This puts it in alphabetical order, matching the rest of the list. Reviewed by: MaskRay, saugustine Differential Revision: https://reviews.llvm.org/D94481
-
Florian Hahn authored
This adds some test coverage for caafdf07, which relaxed an assertion to only require a unique exit block.
-
Jeremy Morse authored
In 8031785f the temporary object being built was moved to %t/main.o, but not all run lines were updated to reflect this. Observe the failure on this buildbot: http://lab.llvm.org:8011/#/builders/5/builds/3646/steps/9/logs/stdio It might pass locally for some people due to a stale %t.o hanging around the build directory.
-
Julian Gross authored
Add a check if regions do not implement the RegionBranchOpInterface. This is not allowed in the current deallocation steps. Furthermore, we handle edge-cases, where a single region is attached and the parent operation has no results. This fixes: https://bugs.llvm.org/show_bug.cgi?id=48575 Differential Revision: https://reviews.llvm.org/D94586
-
Christian Sigg authored
The runtime-wrappers depend on LLVMSupport, pulling in static initialization code (e.g. command line arguments). Dynamically loading multiple such libraries results in ODR violoations. So far this has not been an issue, but in D94421, I would like to load both the async-runtime and the cuda-runtime-wrappers as part of a cuda-runner integration test. When doing this, code that asserts that an option category is only registered once fails (note that I've only experienced this in Google's bazel where the async-runtime depends on LLVMSupport, but a similar issue would happen in cmake if more than one runtime-wrapper starts to depend on LLVMSupport). The underlying issue is that we have a mix of static and dynamic linking. If all dependencies were loaded as shared objects (i.e. if LLVMSupport was linked dynamically to the runtime wrappers), each dependency would only get loaded once. However, linking dependencies dynamically would require special attention to paths (one could dynamically load the dependencies first given explicit paths). The simpler approach seems to be to link all dependencies statically into a single shared object. This change basically applies the same logic that we have in the c_runner_utils: we have a shared object target that can be loaded dynamically, and we have a static library target that can be linked to other runtime-wrapper shared object targets. Reviewed By: herhut Differential Revision: https://reviews.llvm.org/D94399
-
Arun R authored
Reviewed by xbolva00 Reviewers: llvm-commits, MatzeB, craig.topper, kparzysz, efriedma, pengfei, wxiao3, xbolva00 Subscribers: llvm-commits, xbolva00 Differential Revision: https://reviews.llvm.org/D94904
-
Chuanqi Xu authored
Summary: This is to address bug48712. The solution in this patch is that when we want to merge two variable a into the storage frame of variable b only if the alignment of a is multiple of b. There may be other strategies. But now I think they are hard to handle and benefit little. Or we can implement them in the future. Test-plan: check-llvm Reviewers: jmorse, lxfind, junparser Differential Revision: https://reviews.llvm.org/D94891
-
Mirko Brkusanin authored
If constants are hidden behind G_ANYEXT we can treat them same way as G_SEXT. For that purpose we extend getConstantVRegValWithLookThrough with option to handle G_ANYEXT same way as G_SEXT. Differential Revision: https://reviews.llvm.org/D92219
-
Sam McCall authored
And mark a couple to be retired afther the next release branch. Differential Revision: https://reviews.llvm.org/D94727
-
Sam McCall authored
These force a couple of flags or that are now on by default. So the flags don't currently do anything unless the compile command has -fno-recovery-ast explicitly. (For turning recovery *off* for debugging we can inject the flag with config) This leaves the command-line flags around with no effect, I'm planning to add a "retired flag" mechanism shortly in a separate patch. Differential Revision: https://reviews.llvm.org/D94724
-
Sam McCall authored
This is on the critical path (it blocks getting the compile command for the first file). It's not trivially fast: it involves processing all filenames in the CDB and doing some IO to look for shadowing CDBs. And we may make this slower soon - making CDB configurable implies evaluating the config for each listed to see which ones really are owned by the broadcasted CDB. Differential Revision: https://reviews.llvm.org/D94606
-
Sam McCall authored
In preparation for moving DirectoryBasedCompilationDatabase broadcasting off the main thread. Differential Revision: https://reviews.llvm.org/D94603
-
https://reviews.llvm.org/D94904Arun R authored
D94904 Reviewed by xbolva00 Reviewers for D94904: llvm-commits, MatzeB, craig.topper, kparzysz, efriedma, pengfei, wxiao3, xbolva00 Subscribers for D94904: llvm-commits, xbolva00 D94904 Differential Revision: https://reviews.llvm.org/D94904
-
Jan Svoboda authored
This patch adds marshalling information to more options. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D94957
-
Petar Avramovic authored
With tfe on there can be a vgpr write to vdata+1. Add tablegen support for 5 register vdata store. This is required for 4 register vdata store with tfe. Differential Revision: https://reviews.llvm.org/D94960
-
Gabriel Hjort Åkerlund authored
When constraining an operand register using constrainOperandRegClass(), the function may emit a COPY in case the provided register class does not match the current operand register class. However, the operand itself is not updated to make use of the COPY, thereby resulting in incorrect code. This patch fixes that bug by updating the machine operand accordingly. Reviewed By: dsanders Differential Revision: https://reviews.llvm.org/D91244
-
Raphael Isemann authored
Apparently the sphinx version on the server doesn't place <p> tags in the table cells, so the previous fix from commit 7fce3b24 didn't fix the bug for that sphinx version. Just expand the CSS workaround to all <td> tags.
-
David Sherwood authored
In places where we call a TTI.getXXCost() function I have changed the code to use InstructionCost instead of unsigned. This is in preparation for later on when we will change the TTI interfaces to return InstructionCost. See this patch for the introduction of the type: https://reviews.llvm.org/D91174 See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html Differential Revision: https://reviews.llvm.org/D94427
-
Raphael Isemann authored
This patch implements a filter that post-processes some of the generated RST sources of the Python API docs. I mainly want to avoid two things: 1. Filter out all the inheritance boilerplate that just keeps mentioning for every class that it inherits from the builtin 'object'. There is no inheritance in the SB API. 2. More importantly, removes the SWIG generated `thisown` attribute from the public documentation. I don't think we want users to mess with that attribute and this is probably causing more confusion than it would help anyone. It also makes the documentation for some smaller classes more verbose than necessary. This patch just uses the sphinx event for reading source and removes the parts that we don't want in documentation. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D94967
-
Raphael Isemann authored
The tables in the new LLDB documentation currently are less wide than their contents. The reason for that seems to be the `-webkit-hyphens: auto` property that sphinx is setting for all `p` tags. The `p` tags in the generated Python documentation seem to trigger some Safari layout issue, so Safari is calculating the cell width to be smaller than it should be (which ends up looking like this {F15104344} ). This patch just sets that property back to the browser default `manual`. Not sure if that's the proper workaround, but I clicked around on the website with the changed CSS and nothing looked funny (which is I believe how webdev unit testing works). Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D94991 -
Bill Wendling authored
X86 allows for the "addr32" and "addr16" address size override prefixes. Also, these and the segment override prefixes should be recognized as valid prefixes. Differential Revision: https://reviews.llvm.org/D94726
-
Hsiangkai Wang authored
For Zvlsseg, we need continuous vector registers for the values. We need to define new register classes for the different combinations of (number of fields and LMUL). For example, when the number of fields(NF) = 3, LMUL = 2, the values will be assigned to (V0M2, V2M2, V4M2), (V2M2, V4M2, V6M2), (V4M2, V6M2, V8M2), ... We define the vlseg intrinsics with multiple outputs. There is no way to describe the codegen patterns with multiple outputs in the tablegen files. We do the codegen in RISCVISelDAGToDAG and use EXTRACT_SUBREG to extract the values of output. The multiple scalable vector values will be put into a struct. This patch is depended on the support for scalable vector struct. Differential Revision: https://reviews.llvm.org/D94229
-
Fangrui Song authored
``` // a.s jmp fcntl // b.s .globl fcntl fcntl: ret ``` `ld.lld -shared --wrap=fcntl a.o b.o` has an `R_X86_64_JUMP_SLOT` referencing the index 0 undefined symbol, which will cause a glibc `symbol lookup error` at runtime. This is because `__wrap_fcntl` is not in .dynsym We use an approximation `!wrap->isUndefined()`, which doesn't set `isUsedInRegularObj` of `__wrap_fcntl` when `fcntl` is referenced and `__wrap_fcntl` is undefined. Fix this by using `sym->referenced`.
-