- Nov 23, 2023
-
-
Andrés Villegas authored
Created using spr 1.3.4
-
dong jianqiang authored
This patch defaults Generic_GCC aarch64_be to use -fasynchronous-unwind-tables and ensures consistent behavior with aarch64 little endian.
-
Jie Fu authored
/llvm-project/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:1428:13: error: unused function 'getLivePhysRegsUpTo' [-Werror,-Wunused-function] static void getLivePhysRegsUpTo(MachineInstr &MI, const TargetRegisterInfo &TRI, ^ 1 error generated. -
Min-Yih Hsu authored
Add legalizer, regbankselect, and isel supports for floating point version of G_IS_FPCLASS.
-
Min Hsu authored
To be consistent with `fclass.s/d`. Also rename `riscv_fpclass` to `riscv_fclass`. NFC.
-
kkwli authored
-
Brad Smith authored
-
Craig Topper authored
-
Louis Dionne authored
We release-noted that we were going to remove it in the LLVM 18 timeline and we've been issuing a warning since then.
-
Felix Schneider authored
Reverts llvm/llvm-project#72745 as it is causing test failures on mlir-nvidia in `mlir/test/python/dialects/transform_structured_ext.py`.
-
Craig Topper authored
[AArch64] Use the same fast math preservation for MachineCombiner reassociation as X86/PowerPC/RISCV. (#72820) Don't blindly copy the original flags from the pre-reassociated instrutions. This copied the integer poison flags which are not safe to preserve after reassociation. For the FP flags, I think we should only keep the intersection of the flags. Override setSpecialOperandAttr to do this. Fixes #72777. -
Shraiysh authored
-
Tom Stellard authored
The test-depends target contained all the dependencies needed to run the runtimes tests, but it was never added as a dependency of check-all. This caused some of the tsan tests to fail, since the custom libcxx build the tests were looking for was never built. Besides the tsan failures, this fixes all the other test failures I was seeing with: cmake -G Ninja -B release-build -S llvm \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_ASSERTIONS=OFF \ -DLLVM_ENABLE_PROJECTS="clang;lld" \ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;compiler-rt" This is the same configuration the test-release.sh script uses, so I'm hoping this will also fix all the test failures we've been seeing when building the releases. Fixes #58680 -
Florian Hahn authored
This reverts commit 23628137. Revert as this is causing some test failures.
-
Louis Dionne authored
This was never caught on our bots because this specific test is marked as `XFAIL: !is-lockfree-runtime-function`, which is the case on our bots.
-
Felix Schneider authored
`TileUsingForOp` has an optional Attribute `interchange` which was given in curly braces like this: `{interchange = [...]}`. The way this was parsed meant that no normal `attr-dict` could be attached to the Op. This patch adds printing / parsing of an `attr-dict` to the Op and treats the `interchange` Attribute as part of that dictionary for now. -
Valentin Clement (バレンタイン クレメン) authored
The compiler was crashing when the collapse loop nest could not be retrieved because of extra acc loop directive inside it.
-
Alexey Bataev authored
-
Craig Topper authored
-
Louis Dionne authored
The ignore_format.txt file and the associated checks have been causing a lot of confusion since we introduced them. Formatting becomes one of the main hurdle for contributors (especially new contributors), and that is not great. The original goal of ignore_format.txt was to enforce clang-format only in a subset of the files of the project. In practice, we have now shifted to a model where we have a Github action that checks whether new code surrounding edits is formatted. In that context, it probably doesn't make sense to keep having a ignore list for formatting files. After this patch, the clang-format job will enforce that all new code is formatted properly, and that all edits to existing files are formatted properly, regardless of which files the edits are in. This seems reasonable and I believe will lead to much less confusion than our current setup. In the future, we could consider clang-formatting the whole code base once and for all but this requires a bit of upfront technical work to put in place a merge driver to help resolve merge conflicts across formatting changes.
-
Louis Dionne authored
-
Fangrui Song authored
In a build supporting both i386/x86_64, the condition added by https://reviews.llvm.org/D149957 caused asan_rtl_x86_64.S not to be built. Fix it.
-
Florian Hahn authored
Treat ConstantPointerNull (null) as constant offset 0 in the constraint instead of a variable. This slightly reduces the number of variables. I was not able to find a test case where this actually caused any changes.
-
Louis Dionne authored
Their definition was a bit roundabout and it was actually wrong since atomic_unsigned_lock_free would be a signed type whenever __cxx_contention_t is lock free, which is most of the time. Fixes #72968
-
bgra8 authored
This patch re-introduces special support for narrowing conversions to bool in std::variant, which was removed in 170810fc in order to make libc++ Standards-conforming. The special support is gated by the `_LIBCPP_ENABLE_NARROWING_CONVERSIONS_IN_VARIANT` macro and will be supported for LLVM 18 only as a courtesy to help large code bases migrate over to the Standard behavior. --------- Co-authored-by:
Bogdan Graur <bgraur@google.com> Co-authored-by:
Louis Dionne <ldionne.2@gmail.com>
-
Alexey Bataev authored
If the gather node includes ordered loads only partially (not the whole node consists of loads) and the other gathered scalar are not loads, and no other dependency from other nodes is found, we still can improve the cost of gather, if take into account the fact that these loads still can be vectorized.
-
Davide Italiano authored
dbg value don't really have a value number associated as they have no semantic value associated, i.e. they don't change the code being generated. Use the correct API to go over them. Fixes https://github.com/llvm/llvm-project/issues/62876
-
Vitaly Buka authored
This adds a few UNSUPPORTED annotations for tests that hang on some msan bots: https://lab.llvm.org/buildbot/#/builders/sanitizer-x86_64-linux-bootstrap-msan https://lab.llvm.org/buildbot/#/builders/sanitizer-aarch64-linux-bootstrap-msan We still haven't figured out the root cause of them hanging on these bots but not on the main libc++ CI infra.
-
David Blaikie authored
(addresses -Wunused-variable warning)
-
nicole mazzuca authored
As an intrinsic, `_ReturnAddress` does not need it; additionally, if someone else declares `_ReturnAddress` without `__cdecl` (for example, `<intrin.h>`) Additionally, actually add a test for this change. I've tested it locally with both LLVM and MSVC.
-
Louis Dionne authored
These headers were skipped by the job because they didn't have an extension. However, such headers are extremely common in libc++. As a drive-by change, also include `.cppm` and `.inc` extensions since those are also common in libc++.
-
LWenH authored
-
Aart Bik authored
The "dimension" before "level" does not really make sense Note that renaming the actual type DimLevelType to LevelType is still TBD, since this is an externally visible change (e.g. visible to Python API).
-
Daniel Chen authored
**Scope of the PR:** 1. Lowering global and local procedure pointer declaration statement with explicit or implicit interface. The explicit interface can be from an interface block, a module procedure or an internal procedure. 2. Lowering procedure pointer assignment, where the target procedure could be external, module or internal procedures. 3. Lowering reference to procedure pointers so that it works end to end. **PR notes:** 1. The first commit of the PR does not include testing. I would like to collect some comments first, which may alter the output. Once I confirm the implementation, I will add some testing as a follow up commit to this PR. 2. No special handling of the host-associated entities when an internal procedure is the target of a procedure pointer assignment in this PR. **Implementation notes:** 1. The implementation is using the HLFIR path. 2. Flang currently uses `getUntypedBoxProcType` to get the `fir::BoxProcType` for `ProcedureDesignator` when getting the address of a procedure in order to pass it as an actual argument. This PR inherits the same design decision for procedure pointer as the `fir::StoreOp` requires the same memory type.
-
Florian Hahn authored
This patch extends AArch64FrameLowering::emitProglogue to check if the inserted prologue clobbers live registers. It updates `llvm/test/CodeGen/AArch64/framelayout-scavengingslot.mir` with an extra load to make x9 live before the store, preserving the original test. It uses the original `llvm/test/CodeGen/AArch64/framelayout-scavengingslot.mir` as `llvm/test/CodeGen/AArch64/emit-prologue-clobber-verification.mir`, because there x9 is marked as live on entry, but used as scratch reg as it is not callee saved. The new assertion catches a mis-compile in `store-swift-async-context-clobber-live-reg.ll` on https://github.com/apple/llvm-project/tree/next
-
Alexey Bataev authored
includes, NFC.
-
- Nov 22, 2023
-
-
Vettel authored
Machine Copy Propagation Pass may lose some opportunities to further remove the redundant copy instructions during the ForwardCopyPropagateBlock procedure. When we Clobber a "Def" register, we also need to remove the record from the copy maps that indicates "Src" defined "Def" to ensure the correct semantics of the ClobberRegister function. For more information, please see the C++ test case generated code in "vector.body" after the MCP Pass: https://gcc.godbolt.org/z/nK4oMaWv5.
-
Kiran Chandramohan authored
Reverts llvm/llvm-project#70790 to fix CI failure (https://lab.llvm.org/buildbot/#/builders/268/builds/2884)
-
Guillaume Chatelet authored
-
martinboehme authored
We never need to access entries from these maps outside of the current basic block. This could only ever become a consideration when flow control happens inside a full-expression (i.e. we have multiple basic blocks for a full expression); there are two kinds of expression where this can happen, but we already deal with these in other ways: * Short-circuiting logical operators (`&&` and `||`) have operands that live in different basic blocks than the operator itself, but we already have code in the framework to retrieve the value of these operands from the environment for the block they are computed in, rather than in the environment of the block containing the operator. * The conditional operator similarly has operands that live in different basic blocks. However, we currently don't implement a transfer function for the conditional operator. When we do this, we need to retrieve the values of the operands from the environments of the basic blocks they live in, as we already do for logical operators. This patch adds a comment to this effect to the code. Clearing out `ExprToLoc` and `ExprToVal` has two benefits: * We avoid performing joins on boolean expressions contained in `ExprToVal` and hence extending the flow condition in cases where this is not needed. Simpler flow conditions should reduce the amount of work we do in the SAT solver. * Debugging becomes easier when flow conditions are simpler and `ExprToLoc` / `ExprToVal` don’t contain any extraneous entries. Benchmark results on Crubit's `pointer_nullability_analysis_benchmark show a slight runtime increase for simple benchmarks, offset by substantial runtime reductions for more complex benchmarks: ``` name old cpu/op new cpu/op delta BM_PointerAnalysisCopyPointer 29.8µs ± 1% 29.9µs ± 4% ~ (p=0.879 n=46+49) BM_PointerAnalysisIntLoop 101µs ± 3% 104µs ± 4% +2.96% (p=0.000 n=55+57) BM_PointerAnalysisPointerLoop 378µs ± 3% 245µs ± 3% -35.09% (p=0.000 n=47+55) BM_PointerAnalysisBranch 118µs ± 2% 122µs ± 3% +3.37% (p=0.000 n=59+59) BM_PointerAnalysisLoopAndBranch 779µs ± 3% 413µs ± 5% -47.01% (p=0.000 n=56+45) BM_PointerAnalysisTwoLoops 187µs ± 3% 192µs ± 5% +2.80% (p=0.000 n=57+58) BM_PointerAnalysisJoinFilePath 17.4ms ± 3% 7.2ms ± 3% -58.75% (p=0.000 n=58+57) BM_PointerAnalysisCallInLoop 14.7ms ± 4% 10.3ms ± 2% -29.87% (p=0.000 n=56+58) ```
-