- Apr 06, 2022
-
-
Peter Collingbourne authored
This reverts commit b02b9b3d. Broke Mac build: http://45.33.8.238/macm1/32578/step_4.txt
-
Zixu Wang authored
Add (partial) support for Objective-C category records in ExtractAPI. The current ExtractAPI collects everything for an Objective-C category, but not fully serialized in the SymbolGraphSerializer. Categories extending external interfaces are disgarded during serialization, and categories extending known interfaces are merged (all members surfaced) into the interfaces. Differential Revision: https://reviews.llvm.org/D122774
-
David Blaikie authored
-
LLVM GN Syncbot authored
-
Vladislav Khmelevsky authored
Differential Revision: https://reviews.llvm.org/D123133
-
Daniel Grumberg authored
Typedef records consist of the symbol associated with the underlying TypedefDecl and a SymbolReference to the underlying type. Additionally typedefs for anonymous TagTypes use the typedef'd name as the symbol name in their respective records and USRs. As a result the declaration fragments for the anonymous TagType are those for the associated typedef. This means that when the user is defining a typedef to a typedef to a anonymous type, we use a reference the anonymous TagType itself and do not emit the typedef to the anonymous type in the generated symbol graph, including in the type destination of further typedef symbol records. Differential Revision: https://reviews.llvm.org/D123019
-
Nathan Sidwell authored
Note that the mangling has changed and the demangler's learnt a new trick. Obviously dependent upon the mangler and demangler patches. Reviewed By: bruno Differential Revision: https://reviews.llvm.org/D123141
-
Daniil Kovalev authored
Normally, we place fields serving for debug purpose declarations under `#if LLVM_ENABLE_ABI_BREAKING_CHECKS`. For `SDNode::PersistentId` and `SelectionDAG::NextPersistentId`, we do not want to do so because it adds unneeded complexity without noticeable benefits (see discussion with @thakis in D120714). This patch adds comments describing why we don't place those fields under `#if` not to confuse anyone more. Differential Revision: https://reviews.llvm.org/D123238
-
Nico Weber authored
This reverts commit edddf384. 83a798d4 was reverted in 62a983eb.
-
Peter Collingbourne authored
Our support for building for baremetal was conditional on a default off arg and would have failed to build if you had somehow arranged to pass the correct --target flag; presumably nobody noticed because nobody was turning it on. A better approach is to model baremetal as a separate "OS" called "baremetal" and build it in the same way as we cross-compile for other targets. That's what this patch does. I only hooked up the arm64 target but others can be added. Differential Revision: https://reviews.llvm.org/D122862
-
Craig Topper authored
The VP path was using the split source VTs instead of the split destination VTs. This may not be a problem today because the VP nodes going through this have the same source and dest VTs. It will be a problem when we start using this function for legalizing VP cast operations.
-
Alan Zhao authored
This flag is present in MSVC's ml.exe to suppress copyright info output. LLVM doesn't output copyright info, so this flag does nothing in llvm-ml. We still add this flag though so that when llvm-ml is used as a drop-in replacement for MSVC ml.exe, we don't get any extra warnings. Furthermore, this behavior is also consistent with other llvm binaries for Windows (e.g. clang-cl, llvm-mt, lld-link, etc.) Differential revision: https://reviews.llvm.org/D123068
-
Daniel Grumberg authored
This includes: - replacing "relationhips" with "relationships" - emitting the "pathComponents" property on symbols - emitting the "accessLevel" property on symbols Differential Revision: https://reviews.llvm.org/D123045
-
Hansang Bae authored
Silenced compiler warnings after pushing the following change. https://reviews.llvm.org/D122107 Differential Revision: https://reviews.llvm.org/D123233
-
Daniil Kovalev authored
This reverts commit 83a798d4. As discussed in D120714 with @thakis, the patch added unneeded complexity without noticeable benefits.
-
Craig Topper authored
This file is divided into sections for different legalization actions. We should keep similar methods together.
-
David Green authored
-
Nathan Sidwell authored
GCC emits [some] static symbols with an 'L' mangling, which we attempt to demangle. But the module mangling changes have exposed that we were doing so at the wrong level. Such manglings are outside of the ABI as they are internal-linkage, so a bit of reverse engineering was needed. This adjusts the demangler along the same lines as the existing gcc demangler (which is not yet module-aware). 'L' is part of an unqualified name. As before we merely parse the 'L', and then ignore it. Reviewed By: iains Differential Revision: https://reviews.llvm.org/D123138
-
Craig Topper authored
-
Craig Topper authored
Including mask vector inputs. Reviewed By: frasercrmck, rogfer01 Differential Revision: https://reviews.llvm.org/D123150
-
Craig Topper authored
The extend case should never occur. The sign extend would be an arbitrary choice, remove it to avoid confusion.
-
Arthur Eubanks authored
-
Simon Pilgrim authored
-
Nico Weber authored
I saw the TODOs while reading this file and figured I'd do them. I haven't seen these happen in practice. No expected behavior change. Differential Revision: https://reviews.llvm.org/D123215
-
Nico Weber authored
STABS information consists of a list of records in the linked binary that look like this: OSO: path/to/some.o SO: path/to/some.c FUN: sym1 FUN: sym2 ... The linked binary has one such set of records for every .o file linked into it. When dsymutil processes the binary's STABS information, it: 1. Reads the .o file mentioned in the OSO line 2. For each FUN entry after it in the main executable's STABS info: a) it looks up that symbol in the symbol of that .o file b) if it doesn't find it there, it goes through all symbols in the main binary at the same address and sees if any of those match With ICF, ld64.lld's STABS output claims that all identical functions that were folded are in the .o file of the one that's deemed the canonical one. Many small functions might be folded into a single function, so there are .o OSO entries that end up with many FUN lines, but almost none of them exist in the .o file's symbol table. Previously, dsymutil would do a full scan of all symbols in the main executable _for every of these entries_. This patch instead scans all aliases once and remembers them per name. This reduces the alias resolution complexity from O(number_of_aliases_in_o_file * number_of_symbols_in_main_executable) to O(number_of_aliases_in_o_file * log(number_of_aliases_in_o_file)). In practice, it reduces the time spent to run dsymutil on Chromium Framework from 26 min (after https://reviews.llvm.org/D89444) or 12 min (before https://reviews.llvm.org/D89444) to ~8m30s. We probably want to change how ld64.lld writes STABS entries when ICF is enabled, but making dsymutil not have pathological performance for this input seems like a good change as well. No expected behavior change (other than it's faster). I verified that for Chromium Framework, the generated .dSYM is identical with and without this patch. Differential Revision: https://reviews.llvm.org/D123218
-
Paul Walker authored
Differential Revision: https://reviews.llvm.org/D120328
-
Fraser Cormack authored
This patch adds the minimum required to successfully lower vp.icmp via the new ISD::VP_SETCC node to RVV instructions. Regular ISD::SETCC goes through a lot of canonicalization which targets may rely on which has not hereto been ported to VP_SETCC. It also supports expansion of individual condition codes and a non-boolean return type. Support for all of that will follow in later patches. In the case of RVV this largely isn't a problem as the vector integer comparison instructions are plentiful enough that it can lower all VP_SETCC nodes on legal integer vectors except for boolean vectors, which regular SETCC folds away immediately into logical operations. Floating-point VP_SETCC operations aren't as well supported in RVV and the backend relies on condition code expansion, so support for those operations will come in later patches. Portions of this code were taken from the VP reference patches. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D122743
-
LLVM GN Syncbot authored
-
Matthias Springer authored
These can be local variables. No need to store them in the struct. Differential Revision: https://reviews.llvm.org/D123210
-
Matthias Springer authored
This is for consistency reasons. `*AnalysisState` always starts with the name of the dialect. Differential Revision: https://reviews.llvm.org/D123209
-
Mark de Wever authored
Adds the new cpp20_output_iterator in the ranges::transform test. Reviewed By: philnik, #libc Differential Revision: https://reviews.llvm.org/D123139
-
Mark de Wever authored
The is a followup of D116965 to split the calendar header. This is a preparation to add the formatters for the chrono header. The code is only moved no other changes have been made. Reviewed By: ldionne, #libc, philnik Differential Revision: https://reviews.llvm.org/D122995
-
Arjun P authored
Refactor the operation of subtraction by - removing the usage of SimplexRollbackScopeExit since this can't be used in the iterative version - reducing the number of stack variables to make the iterative version easier to follow Reviewed By: Groverkss Differential Revision: https://reviews.llvm.org/D123156
-
Roman Lebedev authored
Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D123221
-
Sam McCall authored
In files where different preprocessing paths are possible, our goal is to choose a preprocessed token sequence which we can parse that pins down as much of the grammatical structure as possible. This forms the "primary parse", and the not-taken branches get parsed later, and are constrained to be compatible with the primary parse. Concretely: int x = #ifdef // TAKEN 2 + 2 + 2 // determined during primary parse to be an expression #else 2 // constrained to be an expression during a secondary parse #endif ; Differential Revision: https://reviews.llvm.org/D121165
-
Matthias Springer authored
Support returning arbitrary tensors from functions. Even those that are not equivalent. To that end, additional information is gathered during the analysis phase. In particular, which function args are aliasing with which return values. Also fix bugs in the current implementation when returning equivalent tensors. Various unit tests are added to ensure that we have better test coverage. Note: Returning non-equivalent tensors is only allowed when allowReturnAllocs is enabled. This functionality is useful for unit testing and compatibility with other bufferizations such as the sparse compiler. This is also towards using ModuleBufferization as a replacement for --func-bufferize. Differential Revision: https://reviews.llvm.org/D119120
-
Matthias Springer authored
* Bufferize FuncOp bodies and boundaries in the same loop. This is in preparation of moving FuncOp bufferization into an external model implementation. * As a side effect, stop bufferization earlier if there was an error. (Do not continue bufferization, fewer error messages.) * Run equivalence analysis of CallOps before the main analysis. This is needed so that equialvence info is propagated properly. Differential Revision: https://reviews.llvm.org/D123208
-
Matthias Springer authored
Differential Revision: https://reviews.llvm.org/D123192
-
Paul Walker authored
Promotion does not affect the base element type and so the original index type will remain unchanged. This reflects the behaviour of DAGTypeLegalizer::PromoteIntOp_MGATHER with no tests affected.
-
Paul Walker authored
-