- Apr 05, 2022
-
-
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
-
Sergei Grechanik authored
This commit fixes several things in the MLIR vim syntax file: - Spell checking is now on by default only in comments. - '#' now starts an identifier instead of starting an outline attribute declaration, which fixes coloring the rest of the line as a preprocessor directive when there is a '#' in the middle. - '!' and '^' -prefixed identifiers are now colored as types and labels. Reviewed By: bondhugula Differential Revision: https://reviews.llvm.org/D122626
-
Jeremy Morse authored
This reverts commit 059d1f84. Some tests on green dragon failed as a result of this -- see notes on D96334.
-
Ilia Diachkov authored
The patch fixes the typo "nulltpr", accidentally found in comments. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D122993
-
- Apr 04, 2022
-
-
Adrian Prantl authored
Environments are optional and a missing environment is distinct from the default "unknown" environment enumerator. The test is negative, because the function uses the host triple and is unpredictable. rdar://91007207 https://reviews.llvm.org/D122946 Differential Revision: https://reviews.llvm.org/D122946
-
Priyansh Singh authored
-
gbreynoo authored
I noticed that when --update-section was added to llvm-objcopy it was not added to the command guide, see 25bcd942. This change adds it to the docs and updates the help text. Differential Revision: https://reviews.llvm.org/D122907
-
PeixinQiao authored
The actual argument shall have deferred the same type parameters as the dummy argument if the argument is allocatable or pointer variable. Currently programs not following this get one crash during execution. Reviewed By: Jean Perier Differential Revision: https://reviews.llvm.org/D122779
-
Thomas Preud'homme authored
-
Erich Keane authored
@thakis believes the problem was the lack of -n on my llvm-cxxfilt call, so hopefully this is the only problem. Committing to see if this makes all the buildbots happy.
-
Hirochika Matsumoto authored
(ctpop(X) == N) || (X != 0) --> (X != 0) https://alive2.llvm.org/ce/z/udgUVV (ctpop(X) != N) && (X == 0) --> (X == 0) https://alive2.llvm.org/ce/z/9dq-cR Differential Revision: https://reviews.llvm.org/D122757
-
Nico Weber authored
-
Nico Weber authored
This is a no-op in these files since the symlinks array is never empty and the dependency to the base binary is added through the loop in these cases. But adding them doesn't hurt either, and it: 1. Makes all symlinks targets look the same, independent of symlinks are created always or just conditionally based on gn args 2. Makes it less likely that bugs like the one fixed by b0abada8 are introduced by copy-pasting an existing symlink target and then not being careful enough when tweaking it. No behavior change.
-
LLVM GN Syncbot authored
-
Erich Keane authored
AND the followups that fixed builds. I attempted to get 'cute' and use llvm-cxxfilt to make the test look nicer, but apparently some of the bots have a version of llvm-cxxfilt that is not the in-tree one, so it fails to properly demangle the stuff. I've disabled this "RUN" line. This reverts commit 50186b63.
-
Momchil Velikov authored
This pass inserts the necessary CFI instructions to compensate for the inconsistency of the call-frame information caused by linear (non-CFG aware) nature of the unwind tables. Unlike the `CFIInstrInserer` pass, this one almost always emits only `.cfi_remember_state`/`.cfi_restore_state`, which results in smaller unwind tables and also transparently handles custom unwind info extensions like CFA offset adjustement and save locations of SVE registers. This pass takes advantage of the constraints that LLVM imposes on the placement of save/restore points (cf. `ShrinkWrap.cpp`): * there is a single basic block, containing the function prologue * possibly multiple epilogue blocks, where each epilogue block is complete and self-contained, i.e. CSR restore instructions (and the corresponding CFI instructions are not split across two or more blocks. * prologue and epilogue blocks are outside of any loops Thus, during execution, at the beginning and at the end of each basic block the function can be in one of two states: - "has a call frame", if the function has executed the prologue, or has not executed any epilogue - "does not have a call frame", if the function has not executed the prologue, or has executed an epilogue These properties can be computed for each basic block by a single RPO traversal. In order to accommodate backends which do not generate unwind info in epilogues we compute an additional property "strong no call frame on entry" which is set for the entry point of the function and for every block reachable from the entry along a path that does not execute the prologue. If this property holds, it takes precedence over the "has a call frame" property. From the point of view of the unwind tables, the "has/does not have call frame" state at beginning of each block is determined by the state at the end of the previous block, in layout order. Where these states differ, we insert compensating CFI instructions, which come in two flavours: - CFI instructions, which reset the unwind table state to the initial one. This is done by a target specific hook and is expected to be trivial to implement, for example it could be: ``` .cfi_def_cfa <sp>, 0 .cfi_same_value <rN> .cfi_same_value <rN-1> ... ``` where `<rN>` are the callee-saved registers. - CFI instructions, which reset the unwind table state to the one created by the function prologue. These are the sequence: ``` .cfi_restore_state .cfi_remember_state ``` In this case we also insert a `.cfi_remember_state` after the last CFI instruction in the function prologue. Reviewed By: MaskRay, danielkiss, chill Differential Revision: https://reviews.llvm.org/D114545 -
Nathan Sidwell authored
Both > and >> expressions need to be parenthesized inside template argument lists. Reviewed By: dblaikie, rjmccall Differential Revision: https://reviews.llvm.org/D122474
-
Sam McCall authored
-
Nico Weber authored
This fixes a regression from 69cde915: If llvm_install_cctools_symlinks is false, depending llvm-lipo:symlinks didn't actually depend on llvm-lipo and the binary didn't get built as dependency of `check-lld` (because the `symlinks` array ended up empty).
-