- Apr 30, 2021
-
-
Aart Bik authored
This is the very first step toward removing the glue and clutter from linalg and replace it with proper sparse tensor types. This revision migrates the LinalgSparseOps into SparseTensorOps of a sparse tensor dialect. This also provides a new home for sparse tensor related transformation. NOTE: the actual replacement with sparse tensor types (and removal of linalg glue/clutter) will follow but I am trying to keep the amount of changes per revision manageable. Differential Revision: https://reviews.llvm.org/D101573
-
Zequan Wu authored
Value only used by metadata can be removed from .addrsig table. This solves the undefined symbol error when enabling addrsig table on COFF LTO. Differential Revision: https://reviews.llvm.org/D101512
-
Rob Suderman authored
Constant-0 dim expr values should be avoided for linalg as it can prevent fusion. This includes adding support for rank-0 reshapes. Differential Revision: https://reviews.llvm.org/D101418
-
jasonliu authored
Summary: Personality routine could be an alias to another personality routine. Fix the situation when we compile the file that contains the personality routine and the file also have functions that need to refer to the personality routine. Reviewed By: hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D101401
-
Alex Lorenz authored
This ensures that the Darwin driver uses a consistent target triple representation when the triple is printed out to the user. This reverts the revert commit ab0df6c0. Differential Revision: https://reviews.llvm.org/D100807
-
- Apr 29, 2021
-
-
zoecarver authored
Differential Revision: https://reviews.llvm.org/D101371
-
Amara Emerson authored
-
Vladimir Vereschaka authored
Updated cross Win-x-ARM Linux toolchain cmake cache file in according of the following changes: https://reviews.llvm.org/D100869 Stop using use c++ subdirectory for libc++ library
-
Lang Hames authored
-
Martin Storsjö authored
This reverts commit 37789240. The added test fails on at least one buildbot, by printing a reversed combination, printing "func3_xdata +0x18 (0x8)" while it's supposed to be "func3_xdata +0x8 (0x18)", see e.g. https://lab.llvm.org/buildbot/#/builders/107/builds/7269. Currently no idea how that could happen, but reverting until it can be figured out.
-
Amara Emerson authored
Differential Revision: https://reviews.llvm.org/D101005
-
Mehdi Amini authored
This reverts commit a6d92a97. The build with -DBUILD_SHARED_LIBS=ON is broken.
-
Martin Storsjö authored
When looking up data referenced from pdata/xdata structures, the referenced data can be found in two different ways: - For an unrelocated object file, it's located via a relocation - For a relocated, linked image, the data is referenced with an (image relative) absolute address For the latter case, the absolute address can optionally be described with a symbol. For the case of an object file, there's two offsets involved; one immediate offset encoded in the data location that is modified by the relocation, and a section offset in the symbol. Previously, for the ExceptionRecord field, we printed the offset from the symbol (only) but used the immediate offset ignoring the symbol's address (using only the symbol's section) for printing the exception data. Add a helper method for doing the lookup and address calculation, for simplifying the calling code and making all the cases consistent. This addresses an existing FIXME comment, fixing printing of the exception data for cases where relocations point at individual symbols in the xdata section (which is what MSVC generates) instead of all relocations pointing at the start of the xdata section (which is what LLVM generates). This also fixes printing of the function name for packed entries in linked images. Differential Revision: https://reviews.llvm.org/D100305
-
Martin Storsjö authored
When looking for the "all" symbols that are supposed to be exported, we can't look at the live flag - the symbols we mark as to be exported will become GC roots even if they aren't yet marked as live. With this in place, building an LLVM library with BUILD_SHARED_LIBS produces the same set of symbols exported regardless of whether the --gc-sections flag is specified, both with and without being built with -ffunction-sections. Differential Revision: https://reviews.llvm.org/D101522
-
Arnamoy Bhattacharyya authored
[flang][OpenMP][FIX] Fix the worksharing nesting check with inclusion of more constructs to cover combined constructs.
-
Philip Reames authored
This reverts commit 0c01b37e while a problem reported is investigated.
-
Benjamin Kramer authored
This was using the untransformed operand, leading to invalid IR. Differential Revision: https://reviews.llvm.org/D101531
-
Jay Foad authored
As explained in the comments, matchSwap matches: // mov t, x // mov x, y // mov y, t and turns it into: // mov t, x (t is potentially dead and move eliminated) // v_swap_b32 x, y On physical registers we don't have full use-def chains so the check for T being live-out was not working properly with subregs/superregs. Differential Revision: https://reviews.llvm.org/D101546
-
Alexey Bataev authored
Added an extra analysis for better choosing of shuffle kind in getShuffleCost functions for better cost estimation if mask was provided. Differential Revision: https://reviews.llvm.org/D100865
-
Alexey Bataev authored
This reverts commit 92399322 to fix a compiler crash on mask checks.
-
Jez Ng authored
-
Sriraman Tallam authored
Functions can have section names set via #pragma or section attributes, basic block sections should be correctly named for such functions. With #pragma, the expectation is that all functions in that file are placed in the same section in the final binary. Basic block sections should be correctly named with the unique flag set so that the final binary has all the basic blocks of the function in that named section. This patch fixes the bug by calling getExplictSectionGlobal when implicit-section-name attribute is set to make sure the function's basic blocks get the correct section name. Differential Revision: https://reviews.llvm.org/D101311
-
Jez Ng authored
I don't think it's super worthwhile to test the dylib headers outputs of all the different archs when x86_64 is the only one that has interesting behavior. Motivated by my upcoming addition of arm32...
-
Jez Ng authored
Modern versions of macOS (>= 10.7) and in general all modern Mach-O target archs want PIEs by default. ld64 defaults to PIE for iOS >= 4.3, as well as for all versions of watchOS and simulators. Basically all the platforms LLD is likely to target want PIE. So instead of cluttering LLD's code with legacy version checks, I think it's simpler to just default to PIE for everything. Note that `-no_pie` still works, so users can still opt out of it. Reviewed By: #lld-macho, thakis, MaskRay Differential Revision: https://reviews.llvm.org/D101513
-
Aart Bik authored
This is the very first step toward removing the glue and clutter from linalg and replace it with proper sparse tensor types. This revision migrates the LinalgSparseOps into SparseTensorOps of a sparse tensor dialect. This also provides a new home for sparse tensor related transformation. NOTE: the actual replacement with sparse tensor types (and removal of linalg glue/clutter) will follow but I am trying to keep the amount of changes per revision manageable. Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D101488
-
Sanjay Patel authored
https://llvm.org/PR50141
-
Sanjay Patel authored
PR50141
-
Tim Northover authored
Some liveins *can* come from this block (e.g. any SSA value except the call), it's only the ones that produce `landingpad` values that can't and I didn't think it through properly.
-
Petar Avramovic authored
When atomic image intrinsic return value is unused, register class for destination of a sub-register copy of return value ends up not being set. This copy then hits 'Register class not set' assert later. If return value has uses, register class is determined by use instruction. Fix is to not create sub-register copy when image intrinsic destination has no uses because it would be deleted by dead-mi-elimination later anyway. Differential Revision: https://reviews.llvm.org/D101448
-
Dan Liew authored
Renaming the option is based on discussions in https://reviews.llvm.org/D101122. It is normally not a good idea to rename driver flags but this flag is new enough and obscure enough that it is very unlikely to have adopters. While we're here also drop the `<kind>` metavar. It's not necessary and is actually inconsistent with the documentation in `clang/docs/ClangCommandLineReference.rst`. Differential Revision: https://reviews.llvm.org/D101491
-
Tim Northover authored
These registers get defined by the runtime, not the block being allocated, and treating them as preassigned in RegAllocFast adds extra pressure, sometimes enough to make the function unallocatable.
-
Victor Huang authored
- Add new variantKinds for the symbol's variable offset and region handle - Print the proper relocation specifier @gd in the asm streamer when emitting the TC Entry for the variable offset for the symbol - Fix the switch section failure between the TC Entry of variable offset and region handle - Put .__tls_get_addr symbol in the ProgramCodeSects with XTY_ER property Reviewed by: sfertile Differential Revision: https://reviews.llvm.org/D100956
-
Roman Lebedev authored
The profitability check is: we don't want to create more than a single PHI per instruction sunk. We need to create the PHI unless we'll sink all of it's would-be incoming values. But there is a caveat there. This profitability check doesn't converge on the first iteration! If we first decide that we want to sink 10 instructions, but then determine that 5'th one is unprofitable to sink, that may result in us not sinking some instructions that resulted in determining that some other instruction we've determined to be profitable to sink becoming unprofitable. So we need to iterate until we converge, as in determine that all leftover instructions are profitable to sink. But, the direct approach of just re-iterating seems dumb, because in the worst case we'd find that the last instruction is unprofitable, which would result in revisiting instructions many many times. Instead, i think we can get away with just two passes - forward and backward. However then it isn't obvious what is the most performant way to update InstructionsToSink.
-
Sam Clegg authored
Unlike the existing `--export` option this will not causes errors or warnings if the specified symbol is not defined. See: https://github.com/emscripten-core/emscripten/issues/13736 Differential Revision: https://reviews.llvm.org/D99887
-
Mark de Wever authored
While working on D70631, Microsoft's unit tests discovered an issue. Our `std::to_chars` implementation for bases != 10 uses the range `[first,last)` as temporary buffer. This violates the contract for to_chars: [charconv.to.chars]/1 http://eel.is/c++draft/charconv#to.chars-1 `to_chars_result to_chars(char* first, char* last, see below value, int base = 10);` "If the member ec of the return value is such that the value is equal to the value of a value-initialized errc, the conversion was successful and the member ptr is the one-past-the-end pointer of the characters written." Our implementation modifies the range `[member ptr, last)`, which causes Microsoft's test to fail. Their test verifies the buffer `[member ptr, last)` is unchanged. (The test is only done when the conversion is successful.) While looking at the code I noticed the performance for bases != 10 also is suboptimal. This is tracked in D97705. This patch fixes the issue and adds a benchmark. This benchmark will be used as baseline for D97705. Reviewed By: #libc, Quuxplusone, zoecarver Differential Revision: https://reviews.llvm.org/D100722
-
Petr Hosek authored
We overrite CXX_FLAGS to enable relative vtables, but doing so overwrites generic Fuchsia CXX_FLAGS leading to a build failure on Windows. Differential Revision: https://reviews.llvm.org/D101551
-
Raphael Isemann authored
Right now to get the 'NSSet *` pointer value we first derefence it and then take the address of the result. Beside being inefficient this potentially can cause an infinite recursion if the `pointer` value we get is a pointer of a type that the TypeSystem can't derefence. If the pointer is for example some form of `void *` that the dynamic type resolution can't resolve to an actual type, then the `Derefence` call goes back to asking the formatters how to reference it. If the NSSet formatter then checks if it's an NSSet variation under the hood then we just end infinitely often recursion. In practice this seems to happen with some form of Builtin.RawPointer we get from a NSDictionary in Swift. FWIW, no other formatter is doing the same deref->addressOf as here and there doesn't seem to be any specific reason to do so in the git history (it's just part of the initial formatter commit) Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D101537
-
LLVM GN Syncbot authored
-
Benjamin Kramer authored
This reverts commit 3b8ec86f. Revert "[X86] Refine AMX fast register allocation" This reverts commit c3f95e91. This pass breaks using LLVM in a multi-threaded environment by introducing global state.
-
Vitaly Buka authored
This reverts commit 7ad4dee3.
-