- Jan 26, 2023
-
-
Paul Kirth authored
Reviewed By: aeubanks Differential Revision: https://reviews.llvm.org/D142579
-
Arthur Lafrance authored
BlockAddress is currently unimplemented in the LLVM dialect of MLIR; when converting to LLVM dialect MLIR from LLVM IR, mlir-translate currently terminates with an "unhandled constant" error message. Instead, this message could be made more specific, to let the user know that the specific issue is that BlockAddress is unimplemented in the LLVM dialect. Differential Revision: https://reviews.llvm.org/D142337
-
Daniel Thornburgh authored
-
Joseph Huber authored
Summary: The logic here is to add the `.cubin` temporary file if we had to create a new filename to handle it. Unfortuantely the logic was wrong because we compare `const char *` values here. This logic seems to have been wrong for some time, but was never noticed since we never used the relocatable output. Fixes https://github.com/llvm/llvm-project/issues/60301
-
Paul Kirth authored
In many cases, we can use an alias to avoid a symbolic relocations, instead of using the public, interposable symbol. When the instrumented function is in a COMDAT, we can use a hidden alias, and still avoid references to discarded sections. Previous versions of this patch allowed the compiler to name the generated alias, but that would only be valid when the functions were local. Since the alias may be used across TUs we use a more deterministic naming convention, and add a ".local" suffix to the alias name just as we do for relative vtables aliases. https://reviews.llvm.org/rG20894a478da224bdd69c91a22a5175b28bc08ed9 removed an incorrect assertion on Mach-O which caused assertion failures in LLD. We prevent duplicate symbols under ThinLTO + PGO + CFI by disabling alias generation when the target function has MD_type metadata used in CFI. Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D137982
-
Daniel Thornburgh authored
Reviewed By: gulfem Differential Revision: https://reviews.llvm.org/D136702
-
Paul Robinson authored
Basically NFC: A TEST/TEST_F/etc that bails out early (usually because setup failed or some other runtime condition wasn't met) generally should use GTEST_SKIP() to report its status correctly, unless it takes steps to report another status (e.g., FAIL()). I did see a handful of tests show up as SKIPPED after this change, which is not unexpected. The status seemed appropriate in all the new cases.
-
Michael Jones authored
The strtointmax tests weren't running because they depend on the same shared logic as strtol tests and the target for that was being defined after the inttypes targets, causing them to be skipped. This patch moves the inttypes test directory later in the order so that the shared tests are defined before inttypes tests try to use them. Reviewed By: sivachandra, lntue Differential Revision: https://reviews.llvm.org/D142515
-
Florian Hahn authored
-
Jon Chesterfield authored
-
Craig Topper authored
This is an alternative to D140382. This moves the first part of runOnce into a new class that can be reused by D129735. This encapsulates the ownership of the worklist, and VRegInfos into the new class. The code for updating the dead lanes stays in the DetectDeadLanes class. The new class is created on the stack during runOnMachineFunction so all the data structures will be deleted after each run. Previously we only cleared them after each run so the memory might have stayed allocated across runs. Except for VRegInfo which was always deleted. Hopefully this allocation change isn't a big deal. Reviewed By: BeMg Differential Revision: https://reviews.llvm.org/D141993
-
Rafael Auler authored
Old code breaks build with libstdc++ with assertions. Fix it.
-
Aaron Ballman authored
This addresses the issue found in: https://lab.llvm.org/buildbot/#/builders/115/builds/41077
-
Stanislav Mekhanoshin authored
These are copied from pseudos automatically. Differential Revision: https://reviews.llvm.org/D142575
-
Elizabeth Andrews authored
This patch uses existing deferred diagnostics framework to emit error for unsupported type __bf16 in device code. Error is not emitted in host code. Differential Revision: https://reviews.llvm.org/D141375
-
rkayaith authored
Currently `PassManager` defaults to being anchored on `builtin.module`. Switching the default makes `PassManager` consistent with `OpPassManager` and avoids the implicit dependency on `builtin.module`. Specifying the anchor op type isn't strictly necessary when using explicit nesting (existing pipelines will continue to work), but I've updated most call sites to specify the anchor since it allows for better error-checking during pipeline construction. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D137731
-
Aaron Ballman authored
The link used to go to a page on Chris Lattner's site that has been gone since at least 2015. Replaced the link with one that has similar information to what Chris had. Fixes #60238
-
Denis Nikitin authored
The check incorrectly identified empty() method call in the template class definition as a stand-alone function call. This led to a crash because the checker did not expect empty() function calls without arguments. Fixes: https://github.com/llvm/llvm-project/issues/59487 Reviewed By: cjdb Differential Revision: https://reviews.llvm.org/D142423
-
Joseph Huber authored
Summary: I forgot that this file "borrowed" the source from the other file tree. Fix that.
-
Joseph Huber authored
Clean up this file after changing it in D142568. Depends on D142568 Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D142573
-
Joseph Huber authored
Since D137724 and the LLVM 17 release we have updated to CMake version 3.20. This means that `find_package(CUDA)` is officially deprecated and can be replaced with `find_package(CUDAToolkit)` instead. This patch does this and also cleans up a bit of the CMake. Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D142568
-
Joseph Huber authored
Since D137724 and the LLVM 17 release we have updated to CMake version 3.20. This means we can use `find_package(CUDAToolkit)` instead as the legacy module is deprecated. Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D142570
-
Guozhi Wei authored
This patch implements the enhancement proposed by https://github.com/llvm/llvm-project/issues/59312. Suppose we have following code v0 = load %addr br %LoadBB LoadBB: v1 = load %addr ... PredBB: ... br %cond, label %LoadBB, label %SuccBB SuccBB: v2 = load %addr ... Instruction v1 in LoadBB is partially redundant, edge (PredBB, LoadBB) is a critical edge. SuccBB is another successor of PredBB, it contains another load v2 which is identical to v1. Current GVN splits the critical edge (PredBB, LoadBB) and inserts a new load in it. A better method is move the load of v2 into PredBB, then v1 can be changed to a PHI instruction. If there are two or more similar predecessors, like the test case in the bug entry, current GVN simply gives up because otherwise it needs to split multiple critical edges. But we can move all loads in successor blocks into predecessors. Differential Revision: https://reviews.llvm.org/D141712
-
Amir Ayupov authored
Allow partial name matching wrt LTO suffixes in `function-order` user-supplied function list, the same as permitted by profile matching. Reviewed By: #bolt, rafauler Differential Revision: https://reviews.llvm.org/D142269
-
Amir Ayupov authored
Move individual warnings under verbosity >= 1, print out a warning with aggregate number. Reviewed By: #bolt, rafauler Differential Revision: https://reviews.llvm.org/D142397
-
wren romano authored
The bulk of D142074 seems to have gotten overwritten due to some sort of merge conflict (afaict there's no record of it having been reverted intentionally). So this commit redoes those changes. In addition to the original changes, this commit also: * moves the definition of `getRankedTensorType` (from `Transforms/CodegenUtils.h` to `IR/SparseTensor.h`), so that it can be used by `IR/SparseTensorDialect.cpp`. * adds `getMemRefType` as another abbreviation. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D142503
-
Ingo Müller authored
Reviewed By: ingomueller-net Differential Revision: https://reviews.llvm.org/D142554
-
Dave Lee authored
In API tests, replace use of the `p` alias with the `expression` command. To avoid conflating tests of the alias with tests of the expression command, this patch canonicalizes to the use `expression`. Differential Revision: https://reviews.llvm.org/D141539
-
Michael Liao authored
-
Rob Suderman authored
The normalization component of average pool has a very specific rounding behavior for compouting the division for floating point values. Updated so that the bit-exact version is implemented. Also includes a fix for computing the stride part of the average pool operation. Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D141339
-
Shafik Yaghmour authored
Currently in Sema::getDestructorName we call SS.getScopeRep()->getPrefix() but SS.getScopeRep() can return nullptr because LookupInNestedNameSpec(...) called a little before can invalidate SS. This fixes: https://github.com/llvm/llvm-project/issues/59446 Differential Revision: https://reviews.llvm.org/D140598
-
Matt Arsenault authored
-
Matt Arsenault authored
-
Arthur Eubanks authored
Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D139441
-
Florian Hahn authored
This reverts commit 366e1faa. It looks like this exposes another set of crashes on the buildbots. Revert while I investigate.
-
Florian Hahn authored
The recommitted version fixes a crash when one of the operands is a constant other than a ConstantInt. Test for that case have been added in 5b16cd97. It splits off the new logic into a separate function because setting the flags is quite different compared to the other cases handled in replaceSignedInst which all require replacing an existing instruction. Instructions are now refined before any replacements are done, which has the advantage that we should have lattice values for all operands (fixing the crashes and simplifies the logic) and also allows optimizing more cases where one of the operands also gets replaced (see improvements in @sge_with_sext_to_zext_conversion). It also guards makeGuaranteedNoWrapRegion by `if (!Inst.hasNoUnsignedWrap())` as discussed in the review. Fixes #60280. Fixes #60278. Original message: This patch updates SCCP to use the value ranges of AddInst operands to try to prove the AddInst does not overflow in the unsigned sense and adds the NUW flag. The reasoning is done with makeGuaranteedNoWrapRegion (thanks @nikic for point it out!). Follow-ups will include adding NSW and extension to more OverflowingBinaryOperators. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D142387
-
Austin Kerbow authored
In SUnit::removePred edges are removed from the Preds and Succs lists before updating the bookkeeping. This could result in incorrect values for NumPreds/SuccsLeft and cause WeakPreds/SuccsLeft to underflow, since the incorrect SDep will be used to update these values. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D142325
-
She Dongrui authored
The stripDebugLocFromLoopID() may mistakenly remove useful metadata nodes when they are operands of a child node, which also has DILocation operands. It can be reproduced by the output of clang for code similar to the following: for(int i = 0; i < n; i++) x[i] = 10; -strip-debug removes the child node of llvm.loop.vectorize.followup_all, which contains llvm.loop.isvectorized and llvm.loop.unroll.count. This patch fixes by checking all children nodes and only remove a metadata node if all its children are DILocation. Differential Revision: https://reviews.llvm.org/D141909
-
Advenam Tacet authored
This revision is a part of a series of patches extending AddressSanitizer C++ container overflow detection capabilities by adding annotations, similar to those existing in std::vector, to std::string and std::deque collections. These changes allow ASan to detect cases when the instrumented program accesses memory which is internally allocated by the collection but is still not in-use (accesses before or after the stored elements for std::deque, or between the size and capacity bounds for std::string). The motivation for the research and those changes was a bug, found by Trail of Bits, in a real code where an out-of-bounds read could happen as two strings were compared via a std::equals function that took iter1_begin, iter1_end, iter2_begin iterators (with a custom comparison function). When object iter1 was longer than iter2, read out-of-bounds on iter2 could happen. Container sanitization would detect it. In revision D132522, support for non-aligned memory buffers (sharing first/last granule with other objects) was added, therefore the check for standard allocator is not necessary anymore. This patch removes the check in std::vector annotation member function (__annotate_contiguous_container) to support different allocators. If you have any questions, please email: - advenam.tacet@trailofbits.com - disconnect3d@trailofbits.com Reviewed By: #libc, #sanitizers, philnik, vitalybuka Spies: EricWF, philnik, #sanitizers, libcxx-commits Differential Revision: https://reviews.llvm.org/D136765
-
Alex Brachet authored
Differential Revision: https://reviews.llvm.org/D142518
-