- Jun 29, 2021
-
-
Balazs Benics authored
It turns out that the CheckerManager::hasPathSensitiveCheckers() missed checking for the BeginFunctionCheckers. It seems like other callbacks are also missing: - ObjCMessageNilCheckers - BeginFunctionCheckers - NewAllocatorCheckers - PointerEscapeCheckers - EndOfTranslationUnitCheckers In this patch, I wanted to use a fold-expression, but until C++17 arrives we are left with the old-school method. When I tried to write a unittest I observed an interesting behavior. I subscribed only to the BeginFunction event, it was not fired. However, when I also defined the PreCall with an empty handler, suddenly both fired. I could add this test demonstrating the issue, but I don't think it would serve much value in a long run. I don't expect regressions for this. However, I think it would be great to enforce the completeness of this list in a runtime check. I could not come up with a solution for this though. PS: Thank you @Szelethus for helping me debugging this. Differential Revision: https://reviews.llvm.org/D105101 Reviewed by: vsavchenko
-
David Sherwood authored
This reverts commit 9dde5141.
-
Dylan Fleming authored
Reviewed By: sdesmalen Differential Revision: https://reviews.llvm.org/D104722
-
Jeremy Morse authored
This patch reads machine value numbers from DBG_PHI instructions (marking where SSA PHIs used to be), and matches them up with DBG_INSTR_REF instructions that refer to them. Essentially they are two separate parts of a DBG_VALUE: the place to read the value (register and program position), and where the variable is assigned that value. Sometimes these DBG_PHIs can be duplicated, usually by tail duplication. This corresponds to the SSA structure of the program being destroyed, and the original PHI being split. When this happens: run LLVMs standard SSAUpdater utility, to work out what values should appear in which blocks. The majority of this patch is boilerplate to make use of SSAUpdater. If there are any additional PHIs on the path between multiple DBG_PHIs and their using DBG_INSTR_REF, their existance is validated, just in case a value gets clobbered along the way (see dbg-phis-with-loops.mir for several examples). Differential Revision: https://reviews.llvm.org/D86814
-
Ben Shi authored
The r1 register should be cleared in prologue of ISR as it is used as constant zero. Reviewed By: dylanmckay Differential Revision: https://reviews.llvm.org/D99467
-
Simon Pilgrim authored
Suggested on D101074 - add a 'icmp sgt i64 %0, -2147483649' comparison that can fold to 'icmp sge i64 %0, -2147483648' on D101074 allowing i32 immediate folding
-
David Sherwood authored
Avoid creating a IRBuilder stack variable with the same name as the class member.
-
Nicolas Vasilache authored
The case where a non-dominating read can be found is captured by slightly generalizing `AliasInfo::wouldCreaateReadAfterWriteInterference`. This simplification will make it easier to implement bufferization across function call. APIs are also simplified were possible. Differential revision: https://reviews.llvm.org/D104845
-
Nico Weber authored
SymtabSection::emitStabs() writes the symbol table in the order of externalSymbols, which has the order of symtab->getSymbols(), which is just the order symbols are added to the symbol table. In practice, symbols in the symbol files of input .o files are sorted, but since that's not guaranteed we sort them in ObjFile::parseSymbols(). To make sure several symbols with the same address keep the order they're in the input file, we have to use stable_sort(). In practice, std::sort() on already-sorted inputs won't change the order of just adjacent elements, and while in theory std::sort() could use a random pivot, in practice the code should be deterministic as it was previously too. But now lld/test/MachO/stabs.s passes with LLVM_ENABLE_EXPENSIVE_CHECKS=ON (the last test that was failing with that set). Fixes a regression from D99972. While here, remove an empty section in stabs.s and move .subsections_via_symbols to the end where it usually is (this part no behavior change). Differential Revision: https://reviews.llvm.org/D105071
-
Tim Northover authored
-
Florian Hahn authored
Reduced test case for PR49731.
-
David Sherwood authored
This reverts commit dcfc2c3f.
-
Felipe de Azevedo Piovezan authored
This patch brings support for setting runtime preemption specifiers of LLVM's GlobalValues. In LLVM semantics, if the `dso_local` attribute is not explicitly requested, then it is inferred based on linkage and visibility. We model this same behavior with a UnitAttribute: if it is present, then we explicitly request the GlobalValue to marked as `dso_local`, otherwise we rely on the GlobalValue itself to make this decision. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D104983
-
Alex Zinenko authored
This data structure and algorithm collection is no longer in use. Reviewed By: bondhugula Differential Revision: https://reviews.llvm.org/D105102
-
Florian Hahn authored
This patch fixes a crash when the target instruction for sinking is dead. In that case, no recipe is created and trying to get the recipe for it results in a crash. To ensure all sink targets are alive, find & use the first previous alive instruction. Note that the case where the sink source is dead is already handled. Found by https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=35320 Reviewed By: Ayal Differential Revision: https://reviews.llvm.org/D104603
-
Alexey Bataev authored
-
Florian Mayer authored
A heap or global buffer that is far away from the faulting address is unlikely to be the cause, especially if there is a potential use-after-free as well, so we want to show it after the other causes. Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D104781
-
Florian Mayer authored
Broke x86 LAM bot. This reverts commit 2a60ab76.
-
David Sherwood authored
Previously in setCostBasedWideningDecision if we encountered an invariant store we just assumed that we could scalarize the store and called getUniformMemOpCost to get the associated cost. However, for scalable vectors this is not an option because it is not currently possibly to scalarize the store. At the moment we crash in VPReplicateRecipe::execute when trying to scalarize the store. Therefore, I have changed setCostBasedWideningDecision so that if we are storing a scalable vector out to a uniform address and the target supports scatter instructions, then we should use those instead. Tests have been added here: Transforms/LoopVectorize/AArch64/sve-inv-store.ll Differential Revision: https://reviews.llvm.org/D104624
-
Butygin authored
Without it BufferDeallocationPass process only CloneOps created during pass itself and ignore all CloneOps that were already present in IR. For our specific usecase: ``` func @dealloc_existing_clones(%arg0: memref<?x?xf64>, %arg1: memref<?x?xf64>) -> memref<?x?xf64> { return %arg0 : memref<?x?xf64> } ``` Input arguments will be freed immediately after return from function and we want to prolong lifetime for the returned argument. To achieve this we explicitly add clones to all input memrefs and expect that BufferDeallocationPass will add correct deallocs to them (unnessesary clone+dealloc pairs will be canonicalized away later). Differential Revision: https://reviews.llvm.org/D104973 -
Roman Lebedev authored
In all of these, the value must be an instruction for us to succeed anyway, so change it to maybe hopefully make further changes more straight-forward.
-
Chia-hung Duan authored
Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D103683
-
David Green authored
This adds a small fold for extract (ARM_BUILD_VECTOR) to fold to the original node. This can help simplify the resulting codegen in some cases. Differential Revision: https://reviews.llvm.org/D104860
-
Valeriy Savchenko authored
-
LLVM GN Syncbot authored
-
LLVM GN Syncbot authored
-
Valeriy Savchenko authored
This commit adds a function to the top-class of SVal hierarchy to provide type information about the value. That can be extremely useful when this is the only piece of information that the user is actually caring about. Additionally, this commit introduces a testing framework for writing unit-tests for symbolic values. Differential Revision: https://reviews.llvm.org/D104550
-
Ole Strohm authored
Fix the qualifiers check from PR49733. Fixes: PR49733 Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D103962
-
Med Ismail Bennani authored
Previously, when `interpreter.save-session-on-quit` was enabled, lldb would save the session transcript only when running the `quit` command. This patch changes that so the transcripts are saved when the debugger object is destroyed if the setting is enabled. rdar://72902650 Differential Revision: https://reviews.llvm.org/D105038 Signed-off-by:
Med Ismail Bennani <medismail.bennani@gmail.com>
-
Med Ismail Bennani authored
This patch introduces a new interpreter setting `interpreter.save-session-directory` so the user can specify a directory where the session transcripts will be saved. If not set, the session transcript are saved on a temporary file. rdar://72902842 Differential Revision: https://reviews.llvm.org/D105030 Signed-off-by:
Med Ismail Bennani <medismail.bennani@gmail.com>
-
Tianqing Wang authored
CMOV conversion first rewrites all CMOVs with memory load to branches. Then runs a second pass to convert other CMOVs in loops if profitable. But the first pass doesn't add new basic blocks to MachineLoopInfo, CMOVs in these blocks are ignored in the subsequent pass. Reviewed By: pengfei Differential Revision: https://reviews.llvm.org/D104692
-
Bruno De Fraine authored
PR50767: clear non-distinct debuginfo for function with nodebug definition after undecorated declaration Fix suggested by Yuanfang Chen: Non-distinct debuginfo is attached to the function due to the undecorated declaration. Later, when seeing the function definition and `nodebug` attribute, the non-distinct debuginfo should be cleared. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D104777
-
Diana Picus authored
SYSTEM_CLOCK may take up to 3 optional parameters, all of which are INTENT(OUT). The COUNT and COUNT_MAX parameters are integer scalars, while COUNT_RATE may be a real or integer scalar. This patch breaks up the interface into 3 different functions, one for each parameter. All 3 return integers. It is up to lowering to convert the results to the preferred type. Differential Revision: https://reviews.llvm.org/D104851
-
Florian Hahn authored
(V * Scale) % X may not produce the same result for any possible value of V, e.g. if the multiplication overflows. This means we currently incorrectly determine NoAlias in some cases. This patch updates LinearExpression to track whether the expression has NSW and uses that to adjust the scale used for alias checks. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D99424
-
Soham Dixit authored
Fixes PR41152 (https://bugs.llvm.org/show_bug.cgi?id=41152). Reviewed by: jhenderson, dblaikie, SouraVX Differential Revision: https://reviews.llvm.org/D103502
-
Alexander Shaposhnikov authored
This reverts commit c94cf97b since it appears to have broken linaro-clang-armv7-quick build bot and needs further investigation.
-
David Sherwood authored
Avoid creating a IRBuilder stack variable with the same name as the class member.
-
Tianqing Wang authored
Reviewed By: pengfei Differential Revision: https://reviews.llvm.org/D103943
-
Tobias Gysi authored
Adapt the StructuredOp verifier to ensure all operands are either in the input or the output group. The change is possible after adding support for scalar input operands (https://reviews.llvm.org/D104220). Differential Revision: https://reviews.llvm.org/D104783
-
Alexander Belyaev authored
This reverts commit 69046b4a. It did not really break anything, but it was decided to allow scalars and other non-shaped operands for tiled_loop.
-