- Mar 21, 2023
-
-
Maya Amrami authored
When this interface is used, a call to inferReturnTypeComponents() is generated on creation and verification of the op. A few changes were required in inferReturnTypeComponents(): - Emit error when it fails. The verifier calls this method now, and it is preferable to indicate what caused the failure. - Fix the inferred return shapes so they have a type too. Reviewed By: rsuderman Differential Revision: https://reviews.llvm.org/D146132
-
Alex Zinenko authored
Named sequences introduce an additional abstraction and reuse capability to the transform dialect. They can be though of as macros parameterized with handles that can be invoked in places where a transform dialect operation is expected. Such reuse was previously not possible in the dialect and required dynamic construction of the transform IR from the client language. Named sequences are intentionally restricted to disallow recursion, as it could make the dialect accidentally Turing-complete, which isn't desired at this point. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D146433
-
Aaron Ballman authored
We were accidentally issuing "overloaded 'operator[]' with more than one parameter is a C++2b extension" with -pedantic because it was an ExtWarn diagnostic rather than a Warning. This corrects the diagnostic category and adds some test coverage. Fixes #61582
-
Daniel Kiss authored
ifuncs can't take part of the whole-program devirtualization so no need them to be copied to the merged module. The corresponding resolver function also kept out which caused the crash. Fixes #60962 #57870 Reviewed By: tejohnson Differential Revision: https://reviews.llvm.org/D144982
-
Philip Reames authored
This invariant was introduced in 8f3d1690. Differential Revision: https://reviews.llvm.org/D146470
-
David Spickett authored
Reviewed By: arichardson, emaste Differential Revision: https://reviews.llvm.org/D146285
-
Pavel Kosov authored
Patch represents the clang part of changes in D143347 Reviewed By: balazske Differential Revision: https://reviews.llvm.org/D145057 ~~ Huawei RRI, OS Lab
-
Adrian Kuegel authored
-
Adrian Kuegel authored
-
Maryam Moghadas authored
This patch is to isolate the lax vector conversions warning only for PPC, the reason is that SystemZ wants different logic in terms of vector bool compatibility. Reviewed By: lei Differential Revision: https://reviews.llvm.org/D145506
-
Jan Sjodin authored
This patch adds alloca address space information to the data layout interface and implementation in the DLTI dialect. This is needed for targets that use separate address spaces for local/stack data. Reviewed By: ftynse, krzysz00 Differential Revision: https://reviews.llvm.org/D144657
-
Simon Pilgrim authored
Help catch regressions from D145650 that were only noticed on EXPENSIVE_CHECKS builds
-
Nicolas Vasilache authored
Differential Revision: https://reviews.llvm.org/D146509
-
Ilya Biryukov authored
Fixes #61441. Currently, Clang stores `nullptr` in the parameter lists inside `FunctionProtoTypeLoc` if `__fp16` is used without pointer qualifiers. Any code path that calls `Declarator::setInvalidType()` before `GetFullTypeForDeclarator` will lead to the same problem downstream. The relevant code is: ```cpp if (D.isInvalidType()) return Context.getTrivialTypeSourceInfo(T); return GetTypeSourceInfoForDeclarator(state, T, TInfo); ``` `GetTypeSourceInfoForDeclarator` sets the parameter `Decl`, but we can't call it when `isInvalidType() == true` as this causes other assertion failures that seem harder to fix. Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D146426
-
Simon Pilgrim authored
This prevents unused nodes from being created if the constant check fails. Noticed while triaging D127115 regressions
-
Sergio Afonso authored
This patch supports the processing of dialect attributes attached to top-level module-type operations during MLIR-to-LLVMIR lowering. This approach modifies the `mlir::translateModuleToLLVMIR()` function to call `ModuleTranslation::convertOperation()` on the top-level operation, after its body has been lowered. This, in turn, will get the `LLVMTranslationDialectInterface` object associated to that operation's dialect before trying to use it for lowering prior to processing dialect attributes attached to the operation. Since there are no `LLVMTranslationDialectInterface`s for the builtin and GPU dialects, which define their own module-type operations, this patch also adds and registers them. The requirement for always calling `mlir::registerBuiltinDialectTranslation()` before any translation of MLIR to LLVM IR where builtin module operations are present is introduced. The purpose of these new translation interfaces is to succeed when processing module-type operations, allowing the lowering process to continue and to prevent the introduction of failures related to not finding such interfaces. Differential Revision: https://reviews.llvm.org/D145932
-
LLVM GN Syncbot authored
-
Ilyas Mustafazade authored
Differential Revision: https://reviews.llvm.org/D146422
-
Luo, Yuanke authored
This reverts commit e4c1dfed.
-
Uday Bondhugula authored
Fix warnings in AttrTypeSubElements.h (below) with GCC 9.4.0. ``` mlir/lib/IR/ExtensibleDialect.cpp:443:62: required from here mlir/include/mlir/IR/AttrTypeSubElements.h:412:37: warning: parameter ‘derived’ set but not used [-Wunused-but-set-parameter] 412 | void walkImmediateSubElementsImpl(T derived, | ~~^~~ ``` Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D146107 -
Nikita Popov authored
This is a copy of the vecreduce_or tests but with comparison to -1 rather than 0.
-
Luo, Yuanke authored
This reverts commit 614c63be.
-
David Spickett authored
This adds a new macro to the UnixSignals subclasses, ADD_SIGCODE. ADD_SIGCODE(4, ILL_ILLOPC, 1, "illegal opcode"); Adds a sigcode to signal 4. That code is ILL_ILLOPC and we expect its value to be 1. When compiling on a system that matches the class e.g. FreeBSD for FreeBSDSignals, the macro will check that that is true. When you're not on FreeBSD we just use the number 1, and ILL_ILLOPC won't be defined to anything because we don't include csignal. Example error: LinuxSignals.cpp:52:3: error: static_assert failed due to requirement 'ILL_COPROC == 9' "Value mismatch for signal code ILL_COPROC" Reviewed By: arichardson Differential Revision: https://reviews.llvm.org/D146222
-
Florian Hahn authored
This avoids having to cast the result of the builder to GetElementPtrInst.
-
Alexander Belyaev authored
Differential Revision: https://reviews.llvm.org/D145368
-
Pavel Labath authored
The exit code of the (funky) test inferior depends on the linux kernel version (changed some time between 5.15 and 6.1).
-
Max Kazantsev authored
This corresponds to its description in LangRef: The intrinsic @llvm.experimental.widenable.condition() returns either true or false. Differential Revision: https://reviews.llvm.org/D146508 Reviewed By: skatkov, nikic
-
Jay Foad authored
-
Job Noorman authored
Sometimes, symbols are present that point to the end of a section (i.e., one-past the highest valid address). Currently, BOLT either rejects those symbols when they don't point to another existing section, or errs when they do and the other section is not executable. I suppose BOLT would accept the symbol when it points to an executable section. In any case, these symbols should not be considered while discovering functions and should not result in an error. This patch implements that. Note that this patch checks explicitly for symbols whose value equals the end of their section. It might make more sense to verify that the symbol's value is within [section start, section end). However, I'm not sure if this could every happen *and* its value does not equal the end. Another way to implement this is to verify that the BinarySection we find at the symbol's address actually corresponds to the symbol's section. I'm not sure what the best approach is so feedback i...
-
Nikita Popov authored
We can fold equality comparisons of non-inbounds geps to offset comparison (https://alive2.llvm.org/ce/z/x2Zp8b). The inbounds requirement is only necessary for relational comparisons.
-
OCHyams authored
For fully promoted variables dbg.assigns and dbg.values convey the same information and can be used interchangeably. This patch converts dbg.assigns to dbg.values for variables promoted by mem2reg. This reduces resource usage by reducing the amount of unnecessary function local metadata. The compile time tracker reports that CTMark projects build with LTO-O3-g with 0.4% fewer instructions retired and peak memory usage is reduced by 2.2%. Reviewed By: jryans Differential Revision: https://reviews.llvm.org/D145511
-
Pavel Labath authored
-
Nikita Popov authored
-
Nikita Popov authored
For equality comparisons, we don't need the gep to be inbounds: https://alive2.llvm.org/ce/z/Fe_kn2
-
Nicolas Vasilache authored
[mlir][Linalg][Transform] Fix effect on RewriteInDestinationPassingStyleOp that did not consume its operand
-
OCHyams authored
...rather than using DenseMaps to track per-variable information. Rather than tracking 3 maps of {VariableID: SomeInfo} per block, use a BitVector indexed by VariableID to mask 3 vectors of SomeInfo. BlockInfos now need to be initialised with a call to init which sets the BitVector width to the number of partially promoted variables in the function and fills the vectors with Top values. Prior to this patch, in joinBlockInfo, it was necessary to insert Top values into the Join result for variables in A XOR B after joining the variables in A AND B. Now, because the vectors are pre-filled with Top values we need only join the variables A AND B and set the BitVector of tracked variables to A OR B. The patch achieves an average of 0.25% reduction in instructions retired and a 1.1% max-rss for the CTMark suite in LTO-O3-g builds. Reviewed By: scott.linder Differential Revision: https://reviews.llvm.org/D145558 -
OCHyams authored
Reviewed By: scott.linder Differential Revision: https://reviews.llvm.org/D146232
-
David Spickett authored
Previously we only looked at the si_signo field, so you got: ``` (lldb) bt * thread #1, name = 'a.out.mte', stop reason = signal SIGSEGV * frame #0: 0x00000000004007f4 ``` This patch adds si_code so we can show: ``` (lldb) bt * thread #1, name = 'a.out.mte', stop reason = signal SIGSEGV: sync tag check fault * frame #0: 0x00000000004007f4 ``` The order of errno and code was incorrect in ElfLinuxSigInfo::Parse. It was the order that a "swapped" siginfo arch would use, which for Linux, is only MIPS. We removed MIPS Linux support some time ago. See: https://github.com/torvalds/linux/blob/fe15c26ee26efa11741a7b632e9f23b01aca4cc6/include/uapi/asm-generic/siginfo.h#L121 A test is added using memory tagging faults. Which were the original motivation for the changes. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D146045
-
Nikita Popov authored
Rather than handling all instruction types separately, clone the original instruction and replace the select operand.
-
Max Kazantsev authored
-