- Nov 18, 2022
-
-
OCHyams authored
Bot failure: https://lab.llvm.org/buildbot/#/builders/16/builds/38156 e3cd498f (D133318) updates CloneBlock to preserve debug use-before-defs. Update local-as-metadata-undominated-use.ll to reflect this.
-
Hassnaa Hamdi authored
1- Enable custom lowering INSERT_VECTOR_ELT to generate code compatible to streaming mode. 2- Add testing file: insert-vector-elt.ll Differential Revision: https://reviews.llvm.org/D138222
-
Hassnaa Hamdi authored
-
Dominik Adamski authored
Update simd construct definition and add mlir tests to prove that order(concurrent) clause is correctly modeled for simd construct.
-
Jay Foad authored
GFX11 has no MAD instructions, only FMA, so this is just testing that we generate separate MUL and ADD.
-
OCHyams authored
The Assignment Tracking debug-info feature is outlined in this RFC: https://discourse.llvm.org/t/ rfc-assignment-tracking-a-better-way-of-specifying-variable-locations-in-ir The inliner requires two additions: fixupAssignments - Update inlined instructions' DIAssignID metadata so that inlined DIAssignID attachments are unique to the inlined instance. trackInlinedStores - Treat inlined stores to caller-local variables (i.e. callee stores to argument pointers that point to the caller's allocas) as assignments. Track them using trackAssignments, which is the same method as is used by the AssignmentTrackingPass. This means that we're able to detect stale memory locations due to DSE after inlining. Because the stores are only tracked _after_ inlining, any DSE or movement of stores _before_ inlining will not be accounted for. This is an accepted limitation mentioned in the RFC. One change is also required: Update CloneBlock to preserve debug use-before-defs. Otherwise the assignments will be dropped due to having the intrinsic operands replaced with empty metadata (see use-before-def.ll in this patch and this related discourse post. Reviewed By: jmorse Differential Revision: https://reviews.llvm.org/D133318
-
Nico Weber authored
-
Hassnaa Hamdi authored
1- in streaming mode, use SVE OR/mov instruction instead of NEON OR, during copying phyReg -AArch64InstrInfo::copyPhysReg-. 2- add testing file: register-mov.ll Differential Revision: https://reviews.llvm.org/D138211
-
Dmitry Preobrazhensky authored
Rename interface functions and operands to make code clearer. Differential Revision: https://reviews.llvm.org/D138133
-
Valery Pykhtin authored
First boundary of a region wasn't updated when a sinked instruction was added first into the region. Reviewed By: vangthao Differential Revision: https://reviews.llvm.org/D138256
-
Matthias Springer authored
Ops that were modifed in-place (`finalizeRootUpdate` was called) should be reprocessed by the GreedyPatternRewriter. This is currently not happening with `GreedyRewriteConfig::maxIterations = 1`. Note: If your project goes into an infinite loop because of this change, you likely have one or multiple faulty patterns that modify the same operations in-place (`updateRootInplace`) indefinitely. Differential Revision: https://reviews.llvm.org/D138038
-
Benjamin Maxwell authored
This now allows folding an AND of a anyext masked_load to a zext_masked_load even if the masked load has multiple users. Doing is eliminates some redundant ANDs/MOVs for certain AArch64 SVE code. I'm not sure if there's any cases where doing this could negatively the other users of the masked_load. Looking at other optimizations of masked loads, most don't apply if the load is used more than once, so it doesn't look like this would interfere. Reviewed By: c-rhodes Differential Revision: https://reviews.llvm.org/D137844
-
Matt Jacobson authored
-
OCHyams authored
The Assignment Tracking debug-info feature is outlined in this RFC: https://discourse.llvm.org/t/ rfc-assignment-tracking-a-better-way-of-specifying-variable-locations-in-ir Update simplifycfg: sinkLastInstruction - preserve debug use-before-defs. SpeculativelyExecuteBB - replace the value component of dbg.assign intrinsics when stores are hoisted and merged using a select, and don't delete them. Reviewed By: jmorse Differential Revision: https://reviews.llvm.org/D133310
-
River Riddle authored
This somewhat improves the ergonomics when replacing recursively within a set of IR.
-
River Riddle authored
This adds an `enable` flag to OpPrintingFlags::enableDebugInfo that allows for overriding any command line flags for debug printing, and matches the format that we use for other `enableBlah` API.
-
River Riddle authored
We properly order dependencies between attribute/type aliases, but we currently always print attribute aliases separately from type aliases. This creates problems if an attribute wants to use a type alias during printing. This commit refactors alias collection such that attribute/type aliases are collected together and printed together. Differential Revision: https://reviews.llvm.org/D138162
-
OCHyams authored
The Assignment Tracking debug-info feature is outlined in this RFC: https://discourse.llvm.org/t/ rfc-assignment-tracking-a-better-way-of-specifying-variable-locations-in-ir Most of the updates here are just to ensure DIAssignID attachments are maintained and propagated correctly. Reviewed By: jmorse Differential Revision: https://reviews.llvm.org/D133307
-
Adrian Kuegel authored
-
serge-sans-paille authored
-
Jean Perier authored
Also add support for fir.boxchar in HLFIRTools so that character designator with none constant lengths can be processed/converted to fir::ExtendedValue. Differential Revision: https://reviews.llvm.org/D138190
-
Alexander Shaposhnikov authored
This reverts commit 7f608a24 and removes the dependency of Object on IRPrinter.
-
Vitaly Buka authored
-
wanglei authored
These instructions always output the canonical mnemonic. The GNU tools emit the canonical mnemonic for the branch pseudo instructions as well (e.g. "bgt" will be recognised by the assembler but never printed by objdump). Reviewed By: xen0n Differential Revision: https://reviews.llvm.org/D138100
-
Tobias Gysi authored
Add a DebugImporter to convert LLVMIR debug metadata into MLIR debug attributes. It is the counterpart to the DebugTranslation class and supports the same attributes. The revision only supports the translation of instruction, function, and module debug information. The import of intrinsics is left to a later revision. Depends on D138206 Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D138209
-
Tobias Gysi authored
The revision makes specific debug information attribute parameters optional since some of them can be omitted in LLVMIR. The additional flexibility enables a later revision that will support importing debug information from LLVMIR. A special case is the types parameter of the SubroutineTypeAttr. For void functions, its first entry is null in LLVMIR. This revision splits the type parameter in an optional resultType parameter and an argumentTypes array to support this corner case. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D138206
-
Martin Storsjö authored
Make sure to use clang_target_link_libraries, which skips linking against libraries and links against libclang-cpp instead, if LLVM_LINK_LLVM_DYLIB is enabled. This fixes errors like these: ld.lld: error: duplicate symbol: clang::PPCallbacks::~PPCallbacks() >>> defined at libclangLex.a(PPCallbacks.cpp.obj) >>> defined at libclang-cpp.dll
-
Mikhail Goncharov authored
This reverts commit 34ab4743. as it has introduced circular dependency lib - analysis
-
Adrian Kuegel authored
Differential Revision: https://reviews.llvm.org/D138266
-
Jean Perier authored
Add hlfir.designate operation definition. This is the HLFIR building blocks to represent Fortran designator. An hlfir.designator is a Fortran "part-ref" and an optional susbstring or part ref. See the operation added description for more detail, and https://github.com/llvm/llvm-project/blob/main/flang/docs/HighLevelFIR.md for the rational of this operation. Differential Revision: https://reviews.llvm.org/D138121
-
Chuanqi Xu authored
llvm.coro.begin Previously we've taken care of the writes to allocas prior to llvm.coro.begin. However, since the promise alloca is special so that we never handled it before. For the long time, since the programmers can't access the promise_type due to the c++ language specification, we still failed to recognize the problem until a recent report: https://github.com/llvm/llvm-project/issues/57861 And we've tested many codes that the problem gone away after we handle the writes to the promise alloca prior to @llvm.coro.begin() prope until a recent report: https://github.com/llvm/llvm-project/issues/57861 And we've tested many codes that the problem gone away after we handle the writes to the promise alloca prior to @llvm.coro.begin() properly. Closes https://github.com/llvm/llvm-project/issues/57861
-
Guray Ozen authored
In a nested loop nest, it is not feasible to map different loops to the same processing unit; for an example, check the code below. This modification includes a check in this circumstance. ``` scf.foreach_thread (%i, %j) in (%c32, %c32) {...} { mapping = [#gpu.thread<x>, #gpu.thread<x>] } ``` Note: It also deletes a test because it is not possible to reproduce this error. Depends on D138020 Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D138032 -
Vitaly Buka authored
-
Matt Jacobson authored
This matches OpenBSD, and it supports Swift's use of clang for its C interop functionality. Recent changes to Swift use AddClangSystemIncludeArgs() to inspect the cc1 args; this doesn't work for platforms where cc1 adds standard include paths implicitly. See: <https://github.com/apple/swift/commit/cf3354222d9f480de74db390f53a6dcc749fde14> Also clean up InitHeaderSearch, making it clearer which targets manage header search paths in the driver. Differential Revision: https://reviews.llvm.org/D138183
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
luxufan authored
[RegisterScavenger][RISCV] Don't search for FrameSetup instrs if we were searching from Non-FrameSetup instrs Otherwise, the spill position may point to position where before FrameSetup instructions. In which case, the spill instruction may store to caller's frame since the stack pointer has not been adjustted. Fixes https://github.com/llvm/llvm-project/issues/58286 Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D135693
-