- Dec 24, 2023
-
-
Vitaly Buka authored
Created using spr 1.3.4
-
Rik Huijzer authored
Fixes https://github.com/llvm/llvm-project/issues/76270 . Thanks to @scottamain for the clear description. Co-authored-by:
Scott Main <scott@modular.com>
-
Felipe de Azevedo Piovezan authored
Commit 1b531d54 (#74203) removed the usage of unique_ptrs of arrays in favour of using vectors, but inadvertently increased peak memory usage by removing the ability to deallocate vector memory that was no longer needed mid-LDV. In that same review, it was pointed out that `FuncValueTable` typedef could be removed, since it was "just a vector". This commit addresses both issues by making `FuncValueTable` a real data structure, capable of mapping BBs to ValueTables and able to free ValueTables as needed. This reduces peak memory usage in the compiler by 10% in the benchmarks flagged by the original review. As a consequence, we had to remove a handful of instances of the "declare-then-initialize" antipattern in unittests, as the FuncValueTable class is no longer default-constructible.
-
- Dec 23, 2023
-
-
Florian Hahn authored
The constraint system used for ConstraintElimination assumes all varibles to be signed. This can cause missed optimization in the unsigned system, due to missing the information that all variables are unsigned (non-negative). Variables can be marked as non-negative by adding Var >= 0 for all variables. This is done for arguments on ConstraintInfo construction and after adding new variables. This handles cases like the ones outlined in https://discourse.llvm.org/t/why-does-llvm-not-perform-range-analysis-on-integer-values/74341 The original example shared above is now handled without this change, but adding another variable means that instcombine won't be able to simplify examples like https://godbolt.org/z/hTnra7zdY Adding the extra variables comes with a slight compile-time increase https://llvm-compile-time-tracker.com/compare.php?from=7568b36a2bc1a1e496ec29246966ffdfc3a8b87f&to=641a47f0acce7755e340447386013a2e086f03d9&stat=instructions:u stage1-O3 stage1-ReleaseThinLTO stage1-ReleaseLTO-g stage1-O0-g +0.04% +0.07% +0.05% +0.02% stage2-O3 stage2-O0-g stage2-clang +0.05% +0.05% +0.05% https://github.com/llvm/llvm-project/pull/76262
-
Matt Arsenault authored
-
Mark de Wever authored
Recent CI changes have disabled testing modules in different configurations. This broke building the std and std.compat module in C++20. This was found by the CI in #76246.
-
Nikolas Klauser authored
Fixes #70238
-
Vitaly Buka authored
This is preparation for performance optimization. We need to highlight that this is very specific lock, and should not be used for other purposes. Add `fork_child` parameter to distinguish processes after fork.
-
XDeme authored
Fixes llvm/llvm-project#74901
-
Owen Pan authored
Annotates function declaration names having unnamed parameters.
-
Craig Topper authored
I missed this when converting other scalar bitmanip/crypto tests to use intrinsics intead of builtins.
-
smanna12 authored
Reported by Static Analyzer Tool: In EmitAssemblyHelper::RunOptimizationPipeline(): Using the auto keyword without an & causes the copy of an object of type function. /// List of pass builder callbacks ("CodeGenOptions.h"). std::vector<std::function<void(llvm::PassBuilder &)>> PassBuilderCallbacks; -
Sameer Sahasrabuddhe authored
-
Aiden Grossman authored
9eb80ab3 changed the method for stack pointer restoration to fix segmentation faults. However, I made a mistake in the patch and swapped a != for a ==, which caused an arbitrary register (the first one specified) to get restored rather than the stack pointer specifically. This patch fixes that issue and adds test coverage to prevent regression.
-
Vitaly Buka authored
Reverts llvm/llvm-project#76232 and 7ab16fb5 to recover build bots. Breaks libc++ tests, details in #76232 #76228
-
Kazu Hirata authored
-
James Y Knight authored
This will help distinguish release branch builds from development branch builds, and is similar to GCC's version numbering policy. Thus, the branch `releases/18.x` will start out numbered 18.1.0, instead of 18.0.0. Unchanged are other versioning policies: - mainline will be numbered 18.0.0, 19.0.0, ... - typical release branch releases will increment micro version, e.g. 18.1.1, 18.1.2, .... - If an ABI break is required on the release branch, the minor version will be incremented, e.g. to 18.2.0. See the Discourse RFC: https://discourse.llvm.org/t/rfc-name-the-first-release-from-a-branch-n-1-0-instead-of-n-0-0/75384
-
Kazu Hirata authored
-
Vitaly Buka authored
-
Ethan Luis McDonough authored
This was an oversight that seems to be causing problems on certain builds. This patch should fix #76225.
-
Yingwei Zheng authored
This patch tries to fold minmax intrinsic by using `computeConstantRangeIncludingKnownBits`. Fixes regression in [_karatsuba_rec:cpython/Modules/_decimal/libmpdec/mpdecimal.c](https://github.com/python/cpython/blob/c31943af16f885c8cf5d5a690c25c366afdb2862/Modules/_decimal/libmpdec/mpdecimal.c#L5460-L5462), which was introduced by #71396. See also https://github.com/dtcxzyw/llvm-opt-benchmark/issues/16#issuecomment-1865875756. Alive2 for splat vectors with undef: https://alive2.llvm.org/ce/z/J8hKWd
-
Felipe Cabarcas authored
Summary: Adding information to the LIBOMPTARGET profiler runtime kernel and API calls. Key changes: * Adding information to runtime calls for better understanding of how the application is executing. For example teams requested by the user, size of memory transfers. * Profile timer was changed from 'us' to 'ns', since 'us' was too coarse-grain to register some important details like key kernel duration * Removed non API or Runtime calls, to reduce complexity of profile for application developers. --------- Co-authored-by:
Felipe Cabarcas <cabarcas@leia.crpl.cis.udel.edu> Co-authored-by:
fel-cab <fel-cab@github.com>
-
Vitaly Buka authored
-
Florian Hahn authored
Based on https://godbolt.org/z/hTnra7zdY, which is a slightly more complicated version of the example from https://discourse.llvm.org/t/why-does-llvm-not-perform-range-analysis-on-integer-values/74341
-
Kareem Ergawy authored
Emits MLIR op corresponding to `!$omp target update` directive. So far, only motion types: `to` and `from` are supported. Motion modifiers: `present`, `mapper`, and `iterator` are not supported yet. This is a follow up to #75047 & #75159, only the last commit is relevant to this PR.
-
Nico Weber authored
No behavior change.
-
Nico Weber authored
-
Maksim Levental authored
-
Nico Weber authored
-
Alexandros Lamprineas authored
This patch prepares the ground for #76060. * Unifies ArmPL and SLEEF tests for better coverage * Replaces deprecated float* and double* types with ptr * Adds noalias attribute to pointer arguments * Adds some cmd-line options to the RUN lines to simplify output * Removes datalayout since target triple is provided * Removes checks for return statements * Refactors the regex filter for autogenerated checks * Removes redundant test file suffix (already under the AArch64 dir)
-
Fangrui Song authored
https://github.com/llvm/llvm-project/pull/75332 diagnosed narrowing involving const reference. Our depot has hundreds if not thousands of breakages (https://github.com/llvm/llvm-project/pull/75332#issuecomment-1864757240). Add a subgroup of -Wc++11-narrowing to help users gradually fix their issues without regressing the existing -Wc++11-narrowing diagnostics.
-
- Dec 22, 2023
-
-
Momchil Velikov authored
We are getting ICE with, e.g. ``` #include <arm_sve.h> void g(); svboolx2_t f0(int64_t i, int64_t n) { svboolx2_t r = svwhilelt_b16_x2(i, n); g(); return r; } ``` -
Nikita Popov authored
-
Nikita Popov authored
Bring this in line with other transforms like ArgPromotion/SROA/ SCEVExpander and always produce canonical i8 GEPs.
-
NAKAMURA Takumi authored
This also reverts 7c9c807f and 476812a7.
-
HaohaiWen authored
The original brute force dominates algorithm is O(n) complexity so it is very slow for very large machine basic block which is very common with O0. This patch added InstrPosIndexes to assign index for each instruction and use it to determine dominance. The complexity is now O(1).
-
Rainer Orth authored
`tsan_interceptors_posix.cpp` doesn't compile on FreeBSD 14.0/amd64: ``` In file included from /vol/llvm/src/llvm-project/local-freebsd/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:25: /vol/llvm/src/llvm-project/local-freebsd/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp: In function ‘void __tsan::InitializeInterceptors()’: /vol/llvm/src/llvm-project/local-freebsd/compiler-rt/lib/tsan/rtl/../../interception/interception.h:243:25: error: ‘real_pthread_mutex_clocklock’ is not a member of ‘__interception’; did you mean ‘real_pthread_mutex_unlock’? ``` Fixed by wrapping the `TSAN_INTERCEPT` invocation with `SANITIZER_LINUX` as is already done for the interceptor definition. Tested on `amd64-pc-freebsd14.0`.
-
Lucas Duarte Prates authored
This implements assembly support for the Memory Systems Extensions introduced as part of the Armv9.5-A architecture version. The changes include: * New subtarget feature for FEAT_TLBIW. * New system registers for FEAT_HDBSS: * HDBSSBR_EL2 and HDBSSPROD_EL2. * New system registers for FEAT_HACDBS: * HACDBSBR_EL2 and HACDBSCONS_EL2. * New TLBI instructions for FEAT_TLBIW: * VMALLWS2E1(nXS), VMALLWS2E1IS(nXS) and VMALLWS2E1OS(nXS). * New system register for FEAT_FGWTE3: * FGWTE3_EL3.
-
Simon Pilgrim authored
Fixes #76234
-
Ilya Biryukov authored
We have found that 199fc973 regresses formatting of our codebases because we do not properly configure the names of attribute macros. `GUARDED_BY` and `ABSL_GUARDED_BY` are very commoon in Google codebases so it is reasonable to include them by default to avoid the need for extra configuration in every Google repository.
-