- Sep 06, 2023
-
-
Kadir Cetinkaya authored
Putting preferred header signal above completeness implied we would uprank forward declarations above complete ones in certain cases. This can be desired in cases where: - Complete definition is private. But this case is already governed by publicness signal. - The library indeed intends to provide a forward declaring interface, like iosfwd vs ostream. In all other cases, upranking is undesired as it means we've picked up prefered headerness signal by mistake from an unrelated declaration to the library. This change regresses the behavior for libraries that intentionally provide a forward declaring interface. But that wasn't something we intended to support explicitly, it was working incidentally when the forward declaring header had a similar name to the symbol. Moreover, include-cleaner deliberately discourages forward-declarations, so not working in this case is also more aligned with rest of the components. Differential Revision: https://reviews.llvm.org/D159441
-
Timm Bäder authored
Differential Revision: https://reviews.llvm.org/D155627
-
Matthias Springer authored
One-Shot Bufferize correctly handles RaW conflicts around repetitive regions (loops). Specical handling is needed for parallel regions. These are a special kind of repetitive regions that can have additional RaW conflicts that would not be present if the regions would be executed sequentially. Example: ``` %0 = bufferization.alloc_tensor() scf.forall ... { %1 = linalg.fill ins(...) outs(%0) ... scf.forall.in_parallel { tensor.parallel_insert_slice %1 into ... } } ``` A separate (private) buffer must be allocated for each iteration of the `scf.forall` loop. This change adds a new interface method to `BufferizableOpInterface` to detect parallel regions. By default, regions are assumed to be sequential. A buffer is privatized if an OpOperand bufferizes to a memory read inside a parallel region that is different from the parallel region where operand's value is defined. Differential Revision: https://reviews.llvm.org/D159286 -
Simon Pilgrim authored
Assuming the ADD is nsw then it may be sign-extended to merge with a SHL op in a similar fold to the existing (shl (add x, c1), c2) -> (add (shl x, c2), c1 << c2) fold. This is most useful for helping to expose address math for X86, but has also touched several aarch64 test cases as well. Alive2: https://alive2.llvm.org/ce/z/2UpSbJ Differential Revision: https://reviews.llvm.org/D159198
-
Abhina Sree authored
On z/OS, the following error message is not matched correctly in lit tests. `EDC5129I No such file or directory.` This patch uses a lit config substitution to check for platform specific error messages.
-
Jay Foad authored
SITargetLowering::adjustWritemask calls SelectionDAG::UpdateNodeOperands to update an EXTRACT_SUBREG node in-place to refer to a new IMAGE_LOAD instruction, before we delete the old IMAGE_LOAD instruction. But in UpdateNodeOperands can do CSE on the fly and return a different EXTRACT_SUBREG node, so the original EXTRACT_SUBREG node would still exist and would refer to the old deleted IMAGE_LOAD instruction. This caused errors like: t31: v3i32,ch = <<Deleted Node!>> # D:1 This target-independent node should have been selected! UNREACHABLE executed at lib/CodeGen/SelectionDAG/InstrEmitter.cpp:1209! Fix it by detecting the CSE case and replacing all uses of the original EXTRACT_SUBREG node with the CSE'd one.
-
Viktoriia Bakalova authored
Differential Revision: https://reviews.llvm.org/D159463
-
Matthias Springer authored
scf.forall ops without shared outputs (i.e., fully bufferized ops) are lowered to scf.parallel. scf.forall ops are typically lowered by an earlier pass depending on the execution target. E.g., there are optimized lowerings for GPU execution. This new lowering is for completeness (convert-scf-to-cf can now lower all SCF loop constructs) and provides a simple CPU lowering strategy for testing purposes. scf.parallel is currently lowered to scf.for, which executes sequentially. The scf.parallel lowering could be improved in the future to run on multiple threads.
-
Eymen Ünay authored
Fix masking error in Thumb_Jump24 Fix halfword comparisons in asserts Add Data_Pointer32 to getEdgeKindName Reviewed By: sgraenitz Differential Revision: https://reviews.llvm.org/D157540
-
Tom Eccles authored
Anything that produces a hlfir.expr should have an allocation side effect so that it is not removed by CSE (which would result in two hlfir.destroy operations for the same expression). Similarly for hlfir.associate, which has hlfir.end_associate. Also adds read effects on arguments which are pointer-like or boxes. I see no regressions from this change when running llvm-testsuite with optimization enabled, or from SPEC2017 rate benchmarks. To test this, I have added MLIR's pass for testing side effect interfaces to fir-opt. Differential Revision: https://reviews.llvm.org/D158662
-
Phoebe Wang authored
m_x86_Features_Group always turn `mno-xxxx` into `-target-feature -xxxx`. In this case, we don't have `-gather/-scatter` but `+prefer-no-gather/scatter`. This patch solves unexpected warning when using `mno-gather/mno-scatter`: ``` '-gather' is not a recognized feature for this target (ignoring feature) '-scatter' is not a recognized feature for this target (ignoring feature) ```
-
Luke Lau authored
V implies Zvl128b, but a lot of the fixed vector tests also redundantly specify -riscv-v-vector-bits-min=128. This patch removes them where there isn't another minimum vlen being tested for, and for cases where Zve* is being used Zvl128b was added to maintain the old test diff (and because an awkward vlen probably isn't interesting to test for). Other places where -risc-v-vector-bits-min were being used were replaced with Zvl.
-
Congcong Cai authored
`HeaderIncludes` won't update `ExistingIncludes` during inserting. We need to manage it in tidy check. Fixed: #65285
-
Dmitri Gribenko authored
This reverts commit b027ce0a. This commit breaks Transforms/InferAddressSpaces/AMDGPU/flat_atomic.ll.
-
Fabio D'Urso authored
To maintain the convention of Scudo names starting with "scudo:", which is used by some tooling to categorize memory usage. Reviewed By: Chia-hungDuan Differential Revision: https://reviews.llvm.org/D157102
-
Guillaume Chatelet authored
`type_traits` and `utility` refer to each other in their implementations. Also `type_traits` starts to become too big to be manageable. This PR splits each function into individual files. FTR this is [how libcxx handles large headers as well](https://github.com/llvm/llvm-project/tree/main/libcxx/include/__type_traits). The reland adds two missing functions : is_destructible_v and is_reference_v
-
Dmitri Gribenko authored
-
Simon Pilgrim authored
Assuming the ADD is nsw then it may be sign-extended to merge with a SHL op in a similar fold to the existing (shl (add x, c1), c2) -> (add (shl x, c2), c1 << c2) fold. This is most useful for helping to expose address math for X86, but has also touched several aarch64 test cases as well. Alive2: https://alive2.llvm.org/ce/z/2UpSbJ Differential Revision: https://reviews.llvm.org/D159198
-
Muhammad Omair Javaid authored
This fixes LLDB windows buildbot after updates to TestBSDArchives.py. https://lab.llvm.org/buildbot/#/builders/219/builds/5408 I have marked new failing test as an expected failure on Windows.
-
Kadir Cetinkaya authored
We started seeing a lot of timeouts that align with the change in lit to execute gtests in shards. The logic there assumes tests are single-threaded, which is the case for most of the LLVM, hence they pick #shards ~ #cores (by slightly overshooting). There are enough unittests in clangd that rely on multi-threading, they can create arbitrarily many threads but we limit amount of meaningful work to ~4 thread per process. This change ensures that we're accounting for that paralelism when executing clangd tests and not overloading test executors. In theory the change overestimates the requirements, not all tests are multi-threaded, but it doesn't seem to be resulting in any regressions on my local runs. Fixes https://github.com/llvm/llvm-project/issues/64964. Fixes https://github.com/clangd/clangd/issues/1712.
-
Guillaume Chatelet authored
This reverts commit b793c7e5. It broke the libc-x86_64-debian-gcc-fullbuild-dbg build bot. https://lab.llvm.org/buildbot/#/builders/250/builds/9776
-
Kito Cheng authored
In D158086, we limit all floating point scalar move and splat can't fuse vsetvli with different SEW, and this patch try to relax the constraint as possible by introducing new SEW demand type: SEWGreaterThanOrEqualAndLessThan64, that allow SEW fused with larger SEW, but constraint it can't fused with SEW=64. Reviewed By: rogfer01 Differential Revision: https://reviews.llvm.org/D158177
-
Guillaume Chatelet authored
`type_traits` and `utility` refer to each other in their implementations. Also `type_traits` starts to become too big to be manageable. This PR splits each function into individual files. FTR this is [how libcxx handles large headers as well](https://github.com/llvm/llvm-project/tree/main/libcxx/include/__type_traits).
-
Guillaume Chatelet authored
This implements the first step of https://discourse.llvm.org/t/rfc-customizable-namespace-to-allow-testing-the-libc-when-the-system-libc-is-also-llvms-libc/73079 Make required Bazel and CMake preparatory changes which define the var for the customizable namespace and use it (pass it as a compile option -DLIBC_NAMESPACE=<...>). Differential Revision: https://reviews.llvm.org/D159112
-
martinboehme authored
The shape of certain elements of the AST can vary depending on the langugage. We currently only support C++.
-
martinboehme authored
-
David Spickett authored
The main way I cross build lldb is to point CMake at an existing host build to get the native tablegen tools. This is what we had documented before. There is another option where you start from scratch and the host tools are built for you. This patch documents that and explains which one to choose. Added another arm64 example which uses this. So the frst one is the "automatic" build and the second is the traditional approach. For ease of copy paste and understanding, I've kept the full command in each section and noted the one difference between them. Along the way I updated some of the preamble to explain the two approaches and updated some language e.g. removing "just ...". Eveyone's "just" is different, doubly so when cross-compiling.
-
martinboehme authored
We want to work towards eliminating the `RecordStorageLocation` from `RecordValue`. These particular uses of `RecordValue::getChild()` can simply be replaced with `RecordStorageLocation::getChild()`.
-
Sergei Barannikov authored
This finishes the work of replacing OperandMatchResultTy with ParseStatus, started in D154101. As a drive-by change, rename some RegNo variables to just Reg (a leftover from the days when RegNo had 'unsigned' type).
-
Ingo Müller authored
This patch adds attribute builders for all buildable attributes from the builtin dialect that did not previously have any. These builders can be used to construct attributes of a particular type identified by a string from a Python argument without knowing the details of how to pass that Python argument to the attribute constructor. This is used, for example, in the generated code of the Python bindings of ops. The list of "all" attributes was produced with: ( grep -h "ods_ir.AttrBuilder.get" $(find ../build/ -name "*_ops_gen.py") \ | cut -f2 -d"'" git grep -ho "^def [a-zA-Z0-9_]*" -- include/mlir/IR/CommonAttrConstraints.td \ | cut -f2 -d" " ) | sort -u Then, I only retained those that had an occurence in `mlir/include/mlir/IR`. In particular, this drops many dialect-specific attributes; registering those builders is something that those dialects should do. Finally, I removed those attrbiutes that had a match in `mlir/python/mlir/ir.py` already and implemented the remaining ones. The only ones that still miss a builder now are the following: * Represent more than one possible attribute type: - `Any.*Attr` (9x) - `IntNonNegative` - `IntPositive` - `IsNullAttr` - `ElementsAttr` * I am not sure what "constant attributes" are: - `ConstBoolAttrFalse` - `ConstBoolAttrTrue` - `ConstUnitAttr` * `Location` not exposed by Python bindings: - `LocationArrayAttr` - `LocationAttr` * `get` function not implemented in Python bindings: - `StringElementsAttr` This patch also fixes a compilation problem with `I64SmallVectorArrayAttr`. Reviewed By: makslevental, rkayaith Differential Revision: https://reviews.llvm.org/D159403 -
jeanPerier authored
When a module variable is referenced inside an internal procedure, but the use statement for the module is inside the host, semantics may not create any symbols with HostAssocDetails directly under the internal procedure scope. So pft::getScopeVariableList, that is called in the bridge when lowering the internal procedure scope, failed to instantiate the module variables. This lead to "symbol is not mapped to any IR value" compile time errors. This patch fixes the issue by adding the variables to the list of "captured" global variables from the host program, so that they are instantiated as part of the `internalProcedureBindings` in the bridge. The rational of doing it that way instead of changing `getScopeVariableList` is that `getScopeVariableList` would have to import all the module variables used inside the host since it cannot know which ones are referenced inside the internal procedure from the semantics::Scope information. The fix in this patch only instantiates the module variables from the host that are actually referenced inside the internal procedure.
-
Tobias Gysi authored
This revision adds a simple icmp folder that performs the following folds to the LLVM dialect icmp op: - cmpi(eq/ne, x, x) -> true/false - cmpi(eq/ne, alloca, null) -> false/true - cmpi(eq/ne, null, alloca) -> cmpi(eq/ne, alloca, null)
-
laichunfeng authored
addi sp, sp, 512 may be used to recover the sp in the epilogue when stack size is larger than 2047(2^11 - 1), however, it can not be compressed using C extension, and addi sp, sp, 496 is able to be compressed, so try to use 496 as the ajust amount of the fisrt sp if function doesn't need extra instructions after adjust. Reviewed By: wangpc Differential Revision: https://reviews.llvm.org/D159431
-
Sergei Barannikov authored
ParseStatus is slightly more convenient to use due to implicit conversion from bool, which allows to do something like: ``` return Error(L, "msg"); ``` when with MatchOperandResultTy it had to be: ``` Error(L, "msg"); return MatchOperand_ParseFail; ``` It also has more appropriate name since parse* methods are not only for parsing operands. Reviewed By: brad Differential Revision: https://reviews.llvm.org/D154321
-
Guray Ozen authored
Fixes #64529 https://github.com/llvm/llvm-project/issues/64529 Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D159440
-
Ting Wang authored
On PPC there are instructions to store element from vector(e.g. stxsdx/stxsiwx), and these instructions can be leveraged to avoid tail constant in memset and constant splat array initialization. This patch tries to explore these opportunities. Reviewed By: shchenz Differential Revision: https://reviews.llvm.org/D138883
-
Marek Sedláček authored
After D154102 multi-line labels would get split incorrectly. When CFG is generated for a function with basic block name longer than 80 lines, then the header separator will be placed after the line break for the label name instead of after the whole label name. The fix is simple by just moving the insert of | character before the line splitting happens. Differential Revision: https://reviews.llvm.org/D159207
-
Trung Nguyen authored
Adds build support for Haiku. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D157866
-
Pravin Jagtap authored
Authored-by:Pravin Jagtap <Pravin.Jagtap@amd.com>
-
Craig Topper authored
-