- Oct 29, 2020
-
-
River Riddle authored
Often times the legality of inlining can change depending on if the callable is going to be inlined in-place, or cloned. For example, some operations are not allowed to be duplicated and can only be inlined if the original callable will cease to exist afterwards. The new `wouldBeCloned` flag allows for dialects to hook into this when determining legality. Differential Revision: https://reviews.llvm.org/D90360
-
River Riddle authored
In certain situations it isn't legal to inline a call operation, but this isn't something that is possible(at least not easily) to prevent with the current hooks. This revision adds a new hook so that dialects with call operations that shouldn't be inlined can prevent it. Differential Revision: https://reviews.llvm.org/D90359
-
Ben Shi authored
Reviewed By: dylanmckay Differential Revision: https://reviews.llvm.org/D88352
-
Ben Shi authored
Reviewed By: dylanmckay https://reviews.llvm.org/D87968
-
Fangrui Song authored
Also move exportDebugifyStats from tools/opt to Debugify.cpp
-
Vedant Kumar authored
This reverts commit 99053462. It breaks the compiler-rt build, see https://reviews.llvm.org/D89838
-
Vedant Kumar authored
This reverts commit 2ce36ebc. It depends on https://reviews.llvm.org/D89838, which needs to be reverted.
-
Mircea Trofin authored
llvm::EmbedBitcodeInModule needs (what used to be called) EmbedMarker set, in order to emit .llvmcmd. EmbedMarker is really about embedding the command line, so renamed the parameter accordingly, too. This was not caught at test because the check-prefix was incorrect, but FileCheck does not report that when multiple prefixes are provided. A separate patch will address that. Differential Revision: https://reviews.llvm.org/D90278
-
Derek Schuff authored
Since Wasm comdat sections work similarly to ELF, we can use that mechanism to eliminate duplicate dwarf type information in the same way. Differential Revision: https://reviews.llvm.org/D88603 -
Haruki Imai authored
This patch fixes a bug [[ https://bugs.llvm.org/show_bug.cgi?id=46091 | 46091 ]] Raw data for the `dense-element attribute` is written in little endian (LE) format. This commit converts the format to big endian (BE) in ʻAttribute Parser` on the BE machine. Also, when outputting on a BE machine, the BE format is converted to LE in "AsmPrinter". Differential Revision: https://reviews.llvm.org/D80695
-
River Riddle authored
This revision optimizes the parsing of hex strings by using the checked variant of llvm::fromHex, and adding a specialized method to Token for extracting hex strings. This leads a large decrease in compile time when parsing large hex constants (one example: 2.6 seconds -> 370 miliseconds) Differential Revision: https://reviews.llvm.org/D90266
-
River Riddle authored
This method is at the core of the conversion from hex to binary, and using a lookup table great improves the compile time of hex conversions. Context: In MLIR we use hex strings to represent very large constants in the textual format of the IR. These changes lead to a large decrease in compile time when parsing these constants (>1 second -> 350 miliseconds). Differential Revision: https://reviews.llvm.org/D90320
-
River Riddle authored
This revision adds a fail-able/checked version of `fromHex` that fails when the input string contains a non-hex character. This removes the need for users to have a separate check for if the string contains all hex digits. This becomes very costly for large hex strings given that checking if a string contains only hex digits is effectively the same as just converting it in the first place. Context: In MLIR we use hex strings to represent very large constants in the textual format of the IR. These changes lead to a large decrease in compile time when parsing these constants (2 seconds -> 1 second). Differential Revision: https://reviews.llvm.org/D90265
-
Jonas Devlieghere authored
We're no longer convinced that this is needed and we have no test coverage to disprove that. Backing out of this change until we're convinced otherwise.
-
Kazushi (Jam) Marukawa authored
Add VFMK/VFMS/VFMF/ANDM/ORM/XORM/EQVM/NNDM/NEGM/PCVM/LZVM/TOVM isntructions. Add regression tests too. Also add new patterns to parse VFMK/VFMS/VFMF mnemonics. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D90297
-
Amy Huang authored
We used to only emit static const data members in CodeView as S_CONSTANTS when they were used; this patch makes it so they are always emitted. This changes CodeViewDebug.cpp to find the static const members from the class debug info instead of creating DIGlobalVariables in the IR whenever a static const data member is used. Bug: https://bugs.llvm.org/show_bug.cgi?id=47580 Differential Revision: https://reviews.llvm.org/D89072 This reverts commit 50461535.
-
Austin Kerbow authored
Reset the tracked emitted instructions when starting scheduling on a new region. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D90347
-
Mehdi Amini authored
See http://lists.llvm.org/pipermail/llvm-dev/2016-March/096529.html for context. Reviewed By: silvas, rengolin, echristo, dexonsmith, gribozavr2 Differential Revision: https://reviews.llvm.org/D89995
-
Christopher Di Bella authored
Checks to make sure that stdlib's (std::)free is being appropriately used. Presently checks for the following misuses: - free(&stack_object) - free(stack_array) Differential Revision: https://reviews.llvm.org/D89988
-
Duncan P. N. Exon Smith authored
Differential Revision: https://reviews.llvm.org/D89835
-
Gaurav Jain authored
Differential Revision: https://reviews.llvm.org/D90327
-
Peter Collingbourne authored
There was a discrepancy in the gn build which is now fixed. Differential Revision: https://reviews.llvm.org/D89827
-
Peter Collingbourne authored
-
Duncan P. N. Exon Smith authored
Not sure why this worked for me, but some of the bots pointed out I copied the wrong includes from FileSystem.h in 23ed570a. Fixed.
-
Aaron Puchert authored
This was requested in the review of D90129.
-
Aaron Puchert authored
We collect the source location of a trailing return type in the parser, improving the location for regular functions and providing a location for lambdas, where previously there was none. Fixes PR47732. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D90129
-
Keith Smiley authored
This diff refactors error reporting to make it more clear what arguments were passed to llvm-install-name-tool. Test plan: make check-all Differential revision: https://reviews.llvm.org/D90080
-
Craig Disselkoen authored
This adds support for scalable vector types in the C API and in llvm-c-test, and also adds a test to ensure that llvm-c-test can properly roundtrip operations involving scalable vectors. While creating this diff, I discovered that the C API cannot properly roundtrip _constant expressions_ involving shufflevector / scalable vectors, but that seems to be a separate enough issue that I plan to address it in a future diff (unless reviewers feel it should be addressed here). Differential Revision: https://reviews.llvm.org/D89816
-
Kostya Kortchinsky authored
In a similar fashion to D87420 for Scudo, this CL introduces a way to get thread local variables via a platform-specific reserved TLS slot, since Fuchsia doesn't support ELF TLS from the libc itself. If needing to use this, a platform will have to define `GWP_ASAN_HAS_PLATFORM_TLS_SLOT` and provide `gwp_asan_platform_tls_slot.h` which will define a `uint64_t *getPlatformGwpAsanTlsSlot()` function that will return the TLS word of storage. I snuck in a couple of cleanup items as well, moving some static functions to anonymous namespace for consistency. Differential Revision: https://reviews.llvm.org/D90195
-
Jay Foad authored
V_DIV_SCALE_F32/F64 are VOP3B encoded so they can't use the ABS src modifier, but they can still use NEG and the usual output modifiers. This partially reverts 3b99f12a "AMDGPU: Remove modifiers from v_div_scale_*". Differential Revision: https://reviews.llvm.org/D90296
-
Florian Hahn authored
The following constraints hold for swifterror values: A swifterror value (either the parameter or the alloca) can only be loaded and stored from, or used as a swifterror argument. This patch updates instcombine to not try to convert a bitcast of a function into a bitcast of a swifterror argument. Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D90258 -
Jay Foad authored
Differential Revision: https://reviews.llvm.org/D90317
-
Jay Foad authored
D9844 fixed a problem where the ss suffix in the AsmString "cmp${cc}ss" was recognised as the X86 SS register, by only recognising a token as a register name if it is "isolated", i.e. surrounded by separator characters. In the AMDGPU backend there are many operands like $clamp which expand to an optional string " clamp" including the preceding space, so we want to have AsmStrings including sequences like "vcc$clamp" where vcc is a register name. This patch relaxes the rules for an isolated token, to say that it's OK if the token is immediately followed by a '$'. Differential Revision: https://reviews.llvm.org/D90315 -
Florian Hahn authored
When moving +0.0 into a float vector, we can use to vi*gpr variants of INS. Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D90176
-
Austin Kerbow authored
Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D90334
-
Philip Reames authored
When trying to prove that a memory access touches only dereferenceable memory across all iterations of a loop, use the maximum exit count rather than an exact one. In many cases we can't prove exact exit counts whereas we can prove an upper bound. The test included is for a single exit loop with a min(C,V) exit count, but the true motivation is support for multiple exits loops. It's just really hard to write a test case for multiple exits because the vectorizer (the primary user of this API), bails far before this. For multiple exits, this allows a mix of analyzeable and unanalyzable exits when only analyzeable exits are needed to prove deref.
-
Richard Smith authored
classes into the enclosing block scope. We weren't properly detecting whether the name would be injected into a block scope in the case where it was lexically declared in a local class.
-
Sean Silva authored
This fixes a subtle issue, described in the comment starting with "Clone the op without the regions and inline the regions from the old op", which prevented this conversion from working on non-trivial examples. Differential Revision: https://reviews.llvm.org/D90203
-
Michael Park authored
This commit is a mass re-application of the following commits: 7d15ece7 e0ec7a02 02197f7e a175a965 Those were temporarily reverted in 057028ed, and never re-applied. Re-committed by @ldionne (author edited for credit). Differential Revision: https://reviews.llvm.org/D90168
-
Louis Dionne authored
Previously, if make_paths_relative() failed due to some reason, it would happily keep going and set the ${out_pathlist} to the standard output of the command, which would be the empty string if the command failed. This can lead to issues that are difficult to diagnose, since the calling code will usually try to keep going with a variable that was set to the empty string. Differential Revision: https://reviews.llvm.org/D89985
-