- Jun 09, 2024
-
-
Matthias Springer authored
This commit fixes a crash in the ownership-based buffer dellocation pass when indirectly calling a function via SSA value. Such functions must be conservatively assumed to be public.
-
Piotr Zegar authored
Ignore implicit pointer conversions that are part of a cast expression Closes #93959
-
Piotr Zegar authored
Add StrictCStandardCompliance and StrictCppStandardCompliance options that default to true. Closes #83732
-
Piotr Zegar authored
Ignore implicit declarations and defaulted functions. Helps with issues in generated code like, C++ spaceship operator. Closes #93409
-
Simon Pilgrim authored
Based on feedback on #94863
-
Matthias Springer authored
-
Piotr Zegar authored
Do not emit warnings for non-math operators. Closes #92516
-
Timm Bäder authored
Really perform the conversion always if the flag is set and don't make it dependent on whether we're checking the result for initialization.
-
Koakuma authored
This adds %set_softint and %clear_softint alias for %asr20 and %asr21 as defined in JPS1. Reviewers: jrtc27, brad0, s-barannikov, rorth Reviewed By: s-barannikov Pull Request: https://github.com/llvm/llvm-project/pull/94247
-
Koakuma authored
This adds support for GNU %uhi and %ulo extensions. Those resolve to the same relocations as %hh and %hm. Reviewers: cyndyishida, dcci, brad0, jrtc27, aaupov, Endilll, rorth, maksfb, #reviewers-libcxxabi, s-barannikov, rafaelauler, ayermolo, #reviewers-libunwind, #reviewers-libcxx, daniel-grumberg, tbaederr Reviewed By: s-barannikov Pull Request: https://github.com/llvm/llvm-project/pull/94246
-
Koakuma authored
Transform `addc imm, %rs, %rd` into `addc %rs, imm, %rd`. This is used in some GNU and Linux code. Reviewers: s-barannikov, rorth, jrtc27, brad0 Reviewed By: s-barannikov Pull Request: https://github.com/llvm/llvm-project/pull/94245
-
Fangrui Song authored
Decrease the uses of getFragmentList() to make it easier to change the fragment list representation.
-
Vlad Serebrennikov authored
-
Noah Goldstein authored
When we fold `(shift (shift C0, x), C1)` we can propagate flags that are common to both shifts. Proofs: https://alive2.llvm.org/ce/z/LkEzXD Closes #94872
-
Noah Goldstein authored
-
Ivan Butygin authored
-
Kazu Hirata authored
readNext has two variants: - readNext<uint64_t, endian>(ptr) - readNext<uint64_t>(ptr, endian) This patch uses the latter to simplify readBinaryIdsInternal. Both forms default to unaligned.
-
Florian Hahn authored
Now that FOR exit and resume value creation is explicitly modeled in VPlan (05e1b534, 07b33013) it doesn't depend on the first order recurrence splice being preserved and it can now be marked as not having side-effects. This allows removal of first-order-recurrence-splce if the FOR is only used in the exit or as scalar ph resume value.
-
Yingwei Zheng authored
This patch adds initial support to the half type on RISC-V.
-
Florian Hahn authored
Apply the onlyFirstPartUsed logic generally to all per-part VPInstructions. Note that the test changes remove the second part of an unsued first-order recurrence splice.
-
Hendrik Hübner authored
Added remquof128 function. Closes #94312
-
Job Henandez Lara authored
This is an implementation of floating point multiplication: It will consist of - `double x double -> float`
-
Shivam Gupta authored
Cppcheck recommends using a const reference for range variables in a for-each loop. This avoids unnecessary copying of elements, improving performance. Caught by cppcheck - lldb/source/API/SBBreakpoint.cpp:717:22: performance: Range variable 'name' should be declared as const reference. [iterateByValue] lldb/source/API/SBTarget.cpp:1150:15: performance: Range variable 'name' should be declared as const reference. [iterateByValue] lldb/source/Breakpoint/Breakpoint.cpp:888:26: performance: Range variable 'name' should be declared as const reference. [iterateByValue] lldb/source/Breakpoint/BreakpointIDList.cpp:262:26: performance: Range variable 'name' should be declared as const reference. [iterateByValue] Fix #91213 Fix #91217 Fix #91219 Fix #91220
-
Kazu Hirata authored
Identified with modernize-use-default-member-init.
-
Sam Elliott authored
This broadly follows how in almost all places, we accept `(<reg>)` to mean `0(<reg>)`, but I think these are the first like this for Jumps rather than Loads/Stores. These are accepted by binutils but not by LLVM: https://godbolt.org/z/GK7MGE7q7
-
- Jun 08, 2024
-
-
Nikolas Klauser authored
This depends on enabling the use of extensions.
-
Kazu Hirata authored
'override' makes 'virtual' redundant. Identified with modernize-use-override.
-
Kazu Hirata authored
While I am at it, this patch adds const to a couple of places.
-
Kazu Hirata authored
-
AtariDreams authored
Since we can bitcast and then do the same thing sub does in the table section above, I figured it was trivial to add fsub, fmul, and fdiv.
-
Yingwei Zheng authored
This patch relands #91469 and uses `uint64_t` for repeat count to avoid a miscompilation caused by overflow https://github.com/llvm/llvm-project/pull/91469#discussion_r1623925158.
-
Yingwei Zheng authored
The pr description in #94008 mismatches with the code. > + 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. Closes #94824. -
FantasqueX authored
-
DaPorkchop_ authored
[SimplifyCFG] Don't use a mask for lookup tables generated from switches with an unreachable default case (#94468) When transforming a switch with holes into a lookup table, we currently use a mask to check if the current index is handled by the switch or if it is a hole. If it is a hole, we skip loading from the lookup table. Normally, if the switch's default case is unreachable this has no impact, as the mask test gets optimized away by subsequent passes. However, if the switch is large enough that the number of lookup table entries exceeds the target's register width, we won't be able to fit all the cases into a mask and the switch won't get transformed into a lookup table. If we know that the switch's default case is unreachable, we know that the mask is unnecessary and can skip constructing it entirely, which allows us to transform the switch into a lookup table. [Example](https://godbolt.org/z/7x7qfx8M1) In the future, it might be interesting to consider allowing lookup table masks to be more than one register large (e.g. using a constant array of bit flags, similar to `std::bitset`).
-
Vlad Serebrennikov authored
This patch removes LLDB from a list of projects that are excluded from building and testing on pre-merge CI on Linux. Windows environment needs to be prepared in order to test LLDB (https://github.com/llvm/llvm-project/pull/94208#issuecomment-2146256857), but we don't have enough maintenance resources to do that at the moment. Because LLDB has been in the list of projects that need to be tested on Clang changes, this PR make this happen on Linux. This seems to be the consensus in the discussion of this PR.
-
NAKAMURA Takumi authored
2e1788f8 reverted #94843. It was creating `%t` as a directory and causes an error in incremental builds.
-
Marc Auberer authored
`std::aligned_storage` is deprecated with C++23, see [here](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf). This replaces the usages of `std::aligned_storage` within compiler-rt with an aligned `std::byte` array. I will provide patches for other subcomponents as well.
-
Quentin Colombet authored
In some case, constant can survive early constant folding optimization because they are hidden behind several layers of type changes. E.g., consider the following sequence (extracted from the arm test that this commit changes): ``` t2: v1f16 = BUILD_VECTOR ConstantFP:f16<APFloat(0)> t4: v1f16 = insert_vector_elt t2, ConstantFP:f16<APFloat(0)>, Constant:i32<0> t5: f16 = bitcast t4 t6: f32 = fp_extend t5 ``` Because the constant (APFloat(0)) is hidden behind a <1 x ty> type, all the constant folding that normally happen for scalar nodes when using `SelectionDAG::getNode` are blocked. As a result the constant manages to survive as an actual conversion instruction down to the select phase: ``` t11: f32 = fp16_to_fp Constant:i32<0> ``` With the change in this patch, we try to do constant folding one more time during dag combine, which in the motivating example result in the much better sequence: ``` t7: ch = CopyToReg t0, Register:f32 %0, ConstantFP:f32<0.000000e+00> ``` Note: I'm sure we have this problem in a lot of other places. Generally speaking I believe SDISel is not that good with <1 x ty> compared to pure scalar. However, I only changed what I could easily test. -
Timm Baeder authored
Use handleFloatFloatBinOp to properly diagnose NaN results and divisions by zero. Fixes #84871
-
Matthias Springer authored
[mlir][Transforms][NFC] `GreedyPatternRewriteDriver`: Use composition instead of inheritance (#92785) This commit simplifies the design of the `GreedyPatternRewriterDriver` class. This class used to inherit from both `PatternRewriter` and `RewriterBase::Listener` and then attached itself as a listener. In the new design, the class has a `PatternRewriter` field instead of inheriting from `PatternRewriter`, which is generally perferred in object-oriented programming. --------- Co-authored-by:Markus Böck <markus.boeck02@gmail.com>
-