- Jun 01, 2024
-
-
Simon Pilgrim authored
[DAG] Replace getValid*ShiftAmountConstant helpers with getValid*ShiftAmount helpers to support KnownBits analysis (#93182) The getValidShiftAmountConstant/getValidMinimumShiftAmountConstant/getValidMaximumShiftAmountConstant helpers only worked with constant shift amounts, which could be problematic after type legalization (e.g. v2i64 might be partially scalarized or split into v4i32 on some targets such as 32-bit x86, Thumb2 MVE). This patch proposes we generalize these helpers to work with ConstantRange+KnownBits if a scalar/buildvector constant isn't available. Most restrictions are the same - the helper fails if any shift amount is out of bounds, getValidShiftConstant must be a specific constant uniform etc. However, getValidMinimumShiftAmount/getValidMaximumShiftAmount now can return bounds values that aren't values in the actual data, as they are based off the common KnownBits of every vector element. This addresses feedback on #92096
-
Sayhaan Siddiqui authored
Adds a split-dwarf test for DWARF4 with multiple CUs.
-
Florian Hahn authored
For interleave groups we only create a pointer for the start of the interleave group, not all original loads/stores. Mark single-use ops feeding interleave group mem ops as free when vectorizing.
-
Matt Arsenault authored
-
Florian Hahn authored
-
Yingwei Zheng authored
Proof: https://alive2.llvm.org/ce/z/J7GBMU Same as https://github.com/llvm/llvm-project/pull/92753, the types of LHS and RHS in shift nodes may differ. + When VT is smaller than ShiftVT, it is safe to use trunc. + When VT is larger than ShiftVT, it is safe to use zext iff `is_zero_poison` is true (i.e., `opcode == ISD::CTTZ_ZERO_UNDEF`). See also the counterexample `src_shl_cttz2 -> tgt_shl_cttz2` in the alive2 proofs. Fixes issue https://github.com/llvm/llvm-project/pull/85066#issuecomment-2142553617.
-
Nikolas Klauser authored
Fixes #91831
-
Matthias Springer authored
This commit relaxes the verifier of `bufferization.materialize_in_destination` such that mixed static/dynamic dimensions are allowed for the source and destination operands. E.g., `tensor<5xf32>` and `tensor<?xf32>` are now compatible, but it is assumed that the dynamic dimension is `5` at runtime. This commit fixes #91265.
-
Vlad Serebrennikov authored
A follow up to #92953. Suggested in https://github.com/llvm/llvm-project/pull/92953#issuecomment-2143274065
-
Younan Zhang authored
This helps getTemplateInstantiationArgs() to properly recover template arguments of an enclosing concept Decl. Fixes https://github.com/llvm/llvm-project/issues/93821
-
Eisuke Kawashima authored
from PEP8 (https://peps.python.org/pep-0008/#programming-recommendations ): > Comparisons to singletons like None should always be done with is or is not, never the equality operators. Co-authored-by:
Eisuke Kawashima <e-kwsm@users.noreply.github.com>
-
Yingwei Zheng authored
This patch converts `zext nneg` to `sext` on RISCV to use free sext. --------- Co-authored-by:Thorsten Schütt <schuett@gmail.com>
-
Nikolas Klauser authored
-
Nikolas Klauser authored
-
Schrodinger ZHU Yifan authored
-
Fangrui Song authored
When the orphan section is placed after i, incrementing then decreamenting is quite difficult to understand. Simplify the code to a single loop to make the intention clearer.
-
Pavel Samolysov authored
-
Fangrui Song authored
Simplify the loop that considers sections of the same proximity. The two involved conditions are due to: * https://reviews.llvm.org/D111717 ("[ELF] Avoid adding an orphan section to a less suitable segment") and * https://reviews.llvm.org/D112925 ("[ELF] Better resemble GNU ld when placing orphan sections into memory regions")
-
Kai Luo authored
-
Craig Topper authored
Our pattern previously checked for the merge operand being undef.
-
Fangrui Song authored
-
Craig Topper authored
These either have an explicit policy operand or use TU policy.
-
Schrodinger ZHU Yifan authored
-
gulfemsavrun authored
Reverts llvm/llvm-project#92843 because it broke some lldb tests: https://luci-milo.appspot.com/ui/p/fuchsia/builders/toolchain.ci/clang-linux-x64/b8746385730949743489/overview
-
Schrodinger ZHU Yifan authored
-
Tyler Lanphear authored
- Prevent null dereference: if the Mask given to `ShuffleInstructionBuilder::adjustExtracts()` is empty or all-poison, then `VecBase` will be `nullptr` and the call to `castToScalarTyElem(VecBase)` will dereference it. Add an assert to guard against this. - Prevent use of uninitialized scalar: in the unlikely event that `CandidateVFs` is empty, then `AnyProfitableGraph` will be uninitialized in `if` condition following the loop. (This seems like a false-positive, but I submitted this change anyways as initializing bools costs nothing and is generally good practice)
-
Nuri Amari authored
The -all_load flag is intended to force the linker to load all lazy members, but doesn't do so if the archive is specified with --start-lib, --end-lib flags. The `-all_load` flag is global, that is it can be placed anywhere in the linker invocation, and it affects the load behavior of all conventional archives listed. Unlike ELF's --whole-archive, the user need not necessarily have access to the entire linker invocation to reasonably make use of the flag. The user can supply `-all_load` to a build system without inspecting the rest of the linker invocation. To make the behavior of `--start-lib` style archives consistent with regular archives, this patch makes it so that -all_load also applies in this case.
-
Sterling-Augustine authored
Protect against nullptr after #93926
-
Fangrui Song authored
bolt/test/lit.local.cfg wants to use the system GCC installation but it specifies a wrong triple ("linux" instead of "linux-gnu") and relies on clangDriver's loose GCC installation detection to pick up "*-linux-gnu". This loose behavior may not work. Use "linux-gnu" instead. Note: neither "linux" nor "linux-gnu" detects "linux-musl" triples, so these tests currently fail on musl based systems. Other files changes are cosmetic. -
Michael Liao authored
- Fix check after cab81dd0
-
Kazu Hirata authored
-
Kazu Hirata authored
This patch introduces memprof::LinearFrameId, which is a frame version of memprof::LinearCallStackId.
-
Sayhaan Siddiqui authored
Remove double escape characters before a RUN in a test.
-
Sayhaan Siddiqui authored
Remove double escape characters before a RUN in a test.
-
Sayhaan Siddiqui authored
Adds DWARF4 and DWARF5 tests with multiple CUs.
-
Sayhaan Siddiqui authored
Added double escape characters to lines that describe a test.
-
royitaqi authored
# Changes 1. Changes to the structured transcript. 1. Add fields `commandName` and `commandArguments`. They will hold the name and the arguments string of the expanded/executed command (e.g. `breakpoint set` and `-f main.cpp -l 4`). This is not to be confused with the `command` field, which holds the user input (e.g. `br s -f main.cpp -l 4`). 2. Add field `timestampInEpochSeconds`. It will hold the timestamp when the command is executed. 3. Rename field `seconds` to `durationInSeconds`, to improve readability, especially since `timestampInEpochSeconds` is added. 2. When transcript is available and the newly added option `--transcript` is present, add the transcript to the output of `statistics dump`, as a JSON array under a new field `transcript`. 3. A few test name and comment changes.
-
Kazu Hirata authored
This patch replaces uint32_t with LinearCallStackId where appropriate. I'm replacing uint64_t with LinearCallStackId in writeMemProfCallStackArray, but that's OK because it's a value to be used as LinearCallStackId anyway.
-
Thurston Dang authored
https://github.com/llvm/llvm-project/commit/0e96eebc7f681a7ce41f35909e609c7c61a11455 accidentally turned the prior patch (https://github.com/llvm/llvm-project/commit/57a507930b50c445140feb68bffe1c21af53319e) into a no-op because this macro is always defined (as either 1 or 0). This patch changes it to correctly use #if.
-
Ahmed Bougacha authored
This adds codegen support for the "ptrauth" operand bundles, which can be used to augment indirect calls with the equivalent of an `@llvm.ptrauth.auth` intrinsic call on the call target (possibly preceded by an `@llvm.ptrauth.blend` on the auth discriminator if applicable.) This allows the generation of combined authenticating calls on AArch64 (in the BLRA* PAuth instructions), while avoiding the raw just-authenticated function pointer from being exposed to attackers. This is done by threading a PtrAuthInfo descriptor through the call lowering infrastructure, eventually selecting a BLRA pseudo. The pseudo encapsulates the safe discriminator computation, which together with the real BLRA* call get emitted in late pseudo expansion in AsmPrinter. Note that this also applies to the other forms of indirect calls, notably invokes, rvmarker, and tail calls. Tail-calls in particular bring some additional complexity, with the intersecting register constraints of BTI and PAC discriminator computation. However this doesn't currently support PAuth_LR tail-call variants. This also adopts an x8+ allocation order for GPR64noip, matching GPR64.
-