- Apr 05, 2022
-
-
wren romano authored
This change introduces two new methods: `finalizeSegment` and `appendIndex`; and removes three old methods: `endDim`, `appendCurrentPointer`, `appendIndex`. The two new methods better encapsulate their algorithms, thus allowing to remove repetitious code in several other places. Depends On D122435 Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D122625
-
Volodymyr Sapsai authored
Without the fix ivars with anonymous types can trigger errors like > error: 'TestClass::structIvar' from module 'Target' is not present in definition of 'TestClass' provided earlier > [...] > note: declaration of 'structIvar' does not match It happens because types of ivars from different modules are considered to be different. And it is caused by not merging anonymous `TagDecl` from different modules. To fix that I've changed `serialization::needsAnonymousDeclarationNumber` to handle anonymous `TagDecl` inside `ObjCInterfaceDecl`. But that's not sufficient as C code inside `ObjCInterfaceDecl` doesn't use interface decl as a decl context but switches to its parent (TranslationUnit in most cases). I'm changing that to make `ObjCContainerDecl` the lexical decl context but keeping the semantic decl context intact. Test "check-dup-decls-inside-objc.m" doesn't reflect a change in functionality but captures the existing behavior to prevent regressions. rdar://85563013 Differential Revision: https://reviews.llvm.org/D118525
-
Michael Kruse authored
Add ics file for biweekly loop optimization meeting. Reviewed By: #loopoptwg, bmahjour Differential Revision: https://reviews.llvm.org/D120343
-
Arjun P authored
Add support for computing the symbolic integer lexmin of a polyhedron. This finds, for every assignment to the symbols, the lexicographically minimum value attained by the dimensions. For example, the symbolic lexmin of the set `(x, y)[a, b, c] : (a <= x, b <= x, x <= c)` can be written as ``` x = a if b <= a, a <= c x = b if a < b, b <= c ``` This also finds the set of assignments to the symbols that make the lexmin unbounded. Reviewed By: Groverkss Differential Revision: https://reviews.llvm.org/D122985
-
David Green authored
D120018 altered this combine to work on buildvectors as opposed to shuffle dup's. This works well for dups and other things that are expanded into buildvectors. Some shuffles are legal though, and stay as vector_shuffle through lowering. This expands the transform to also handle shuffles, so that we can turn mul(shuffle(sext into mul(sext(shuffle and more readily make smull/umull instructions. This can come up from the SLP vectorizer adding shuffles that are costed from extends. Differential Revision: https://reviews.llvm.org/D123012
-
David Green authored
-
Louis Dionne authored
Differential Revision: https://reviews.llvm.org/D123028
-
River Riddle authored
This pass is defined in an anonymous namespace and requires an explicit TypeID
-
Lei Zhang authored
Reviewed By: mravishankar, hanchung Differential Revision: https://reviews.llvm.org/D123035
-
Jason Molenda authored
All uses of JSONGenerator in debugserver would create a JSON text dump of the object collection, then copy that string into a binary-escaped string, then send it up to the lldb side or make a compressed version and send that. This adds a DumpBinaryEscaped method to JSONGenerator which does the gdb remote serial protocol binary escaping directly, and removes the need to pass over the string and have an additional copy in memory. Differential Revision: https://reviews.llvm.org/D122882 rdar://91117456
-
Amir Ayupov authored
Remove switches in X86MCPlusBuilder.cpp, use mnemonic checks instead Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D122853
-
River Riddle authored
This commit restructures how TypeID is implemented to ideally avoid the current problems related to shared libraries. This is done by changing the "implicit" fallback path to use the name of the type, instead of using a static template variable (which breaks shared libraries). The major downside to this is that it adds some additional initialization costs for the implicit path. Given the use of type names for uniqueness in the fallback, we also no longer allow types defined in anonymous namespaces to have an implicit TypeID. To simplify defining an ID for these classes, a new `MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID` macro was added to allow for explicitly defining a TypeID directly on an internal class. To help identify when types are using the fallback, `-debug-only=typeid` can be used to log which types are using implicit ids. This change generally only requires changes to the test passes, which are all defined in anonymous namespaces, and thus can't use the fallback any longer. Differential Revision: https://reviews.llvm.org/D122775
-
Martin Storsjö authored
Since a8d15a92 / D110975, this is the default, even if winpthread headers are available, so we don't need to cargo cult setting this option in all builds. Differential Revision: https://reviews.llvm.org/D122717
-
Aaron Ballman authored
This augments 5d900048 which got all of the -verify lines, but accidentally missed all of the -verify= ones.
-
wren romano authored
Just some minor cleanup Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D122934
-
Rob Suderman authored
Apply scale should be optionally disabled when lowering via TosaToStandard. In most cases it should persist until the lowering to specific backend. Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D122948
-
Sam McCall authored
It's deprecated; migrate to FileEntryRef::getName where it doesn't matter. Also change one subtle case of implicit FileEntry::getName to be explicit. After this patch, all the remaining FileEntry::getName calls are subtle cases where we may be relying on exactly which filename variant is returned (for indexing, IWYU directive handling, etc).
-
Simon Pilgrim authored
Improve chances of folding to LEA patterns Differential Revision: https://reviews.llvm.org/D123043
-
Daniel Resnick authored
-
Mehdi Amini authored
-
Mitch Phillips authored
This ELF note is aarch64 and Android-specific. It specifies to the dynamic loader that specific work should be scheduled to enable MTE protection of stack and heap regions. Current synthesis of the ".note.android.memtag" ELF note is done in the Android build system. We'd like to move that to the compiler. This patch adds the --memtag-stack, --memtag-heap, and --memtag-mode={async, sync, none} flags to the linker, which synthesises the note for us. Future changes will add -fsanitize=memtag* flags to clang which will pass these through to lld. Depends on D119381. Differential Revision: https://reviews.llvm.org/D119384 -
Vang Thao authored
Ignore all debug uses when collecting trivially rematerializable defs. This fixes an issue with difference in codegen when enabling debug info. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D123048
-
Siva Chandra Reddy authored
A simple implementation of the getters and setters has been added. More logic can be added to them in future as required. Reviewed By: michaelrj Differential Revision: https://reviews.llvm.org/D122969
-
Daniel Grumberg authored
Add struct level documentation for MacroDefinitionRecord. Differential Revision: https://reviews.llvm.org/D122798
-
Louis Dionne authored
Differential Revision: https://reviews.llvm.org/D122810
-
Aaron Ballman authored
The tests are doing -verify and testing a diagnostic behavior, but that behavior is changing. This ensures the tests continue to run and check the diagnostic. The behavior of the tests is expected to remain identical as before.
-
Johannes Doerfert authored
When simplify values we might end up with an instruction from a different scope or just one that does not dominate the use. If the instruction can be reproduced without side-effect (incl. UB) we can now do that. For now this is mostly used for speculatable (intrinsic) calls but as we learn to make things like arguments or loads available this will become more powerful. This will also allow us to remove dead stores more easily in a follow up.
-
antonio-cortes-perez authored
I was reading this post: https://www.fluentcpp.com/2017/05/19/crtp-helper/ And I noticed that most likely this cast is not needed. Unless it is needed by some compiler versions. I tested it with: cmake --build . --target check-mlir Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D121555
-
Florian Hahn authored
Additional tests for D119078.
-
Benjamin Kramer authored
No idea why check-mlir doesn't build this.
-
Luboš Luňák authored
The ordering is not needed, and DenseMap is faster. I can measure time spent in the SaveToCache() calls reduced to ~40% during LLDB startup (and the total startup cost reduced to ~70%). Differential Revision: https://reviews.llvm.org/D122980
-
David Green authored
The cost of a v2i64 multiply was special cased in D92208 as scalarized into 4*extract + 2*insert + 2*mul. Scalarizing to/from gpr registers are expensive though, and the cost wasn't high enough to prevent vectorizing in places where it can be detrimental for performance. This increases it so that the costs of copying to/from GPRs is increased to 2 each, with the total cost increasing to 14. So long as umull/smull are handled correctly (as in D123006) this seems to lead to better vectorization factors and better performance. Differential Revision: https://reviews.llvm.org/D123007
-
Siddharth Bhat authored
Add documentation into the LangRef for parsing nested symbols. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D122977
-
Alex Brachet authored
This reverts commit 948f3dec.
-
Siddharth Bhat authored
Add boolean values as a dense element, as tested in the MLIR parser: ``` // CHECK: "splatBoolTensor"() {bar = dense<false> : tensor<i1>} : () -> () "splatBoolTensor"(){bar = dense<false> : tensor<i1>} : () -> () ``` https://github.com/llvm/llvm-project/blob/43d758b142bbdf94a1c55dc0950637ae74f825b9/mlir/test/IR/parser.mlir#L630-L631 Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D122978 -
Groverkss authored
Add documentation into the LangRef for parsing nested symbols. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D122977
-
Daniel Resnick authored
Adds the ability to create external passes using the C-API. This allows passes to be written in C or languages that use the C-bindings. Differential Revision: https://reviews.llvm.org/D121866
-
Jonas Devlieghere authored
The current design allows that the object file contents could be mapped by one object file plugin and then used by another. Presumably the idea here was to avoid mapping the same file twice. This becomes an issue when one object file plugin wants to map the file differently from the others. For example, ObjectFileELF needs to map its memory as writable while others likeObjectFileMachO needs it to be mapped read-only. This patch prevents plugins from changing the buffer by passing them is by value rather than by reference. Differential revision: https://reviews.llvm.org/D122944
-