aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-12-23[š˜€š—½š—æ] initial versionusers/vitalybuka/spr/-initial-versionVitaly Buka6-14/+17
Created using spr 1.3.4
2023-12-23[mlir][doc] Escape effects, interfaces, and traits (#76297)Rik Huijzer2-6/+12
Fixes https://github.com/llvm/llvm-project/issues/76270. Thanks to @scottamain for the clear description. Co-authored-by: Scott Main <scott@modular.com>
2023-12-23[LiveDebugValues][nfc] Reduce memory usage of InstrRef (#76051)Felipe de Azevedo Piovezan3-61/+80
Commit 1b531d54f623 (#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.
2023-12-23[ConstraintElim] Add (UGE, var, 0) to unsigned system for new vars. (#76262)Florian Hahn20-138/+90
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
2023-12-23DAG: Handle equal size element build_vector promotion (#76213)Matt Arsenault1-3/+7
2023-12-23[libc++][modules] Fixes C++20 build errors.Mark de Wever1-0/+4
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.
2023-12-23[libc++] Optimize std::find if types are integral and have the same ā†µNikolas Klauser2-0/+61
signedness (#70345) Fixes #70238
2023-12-22[NFC][sanitizer] Rename Lock{Before,After}Fork suffixes locking ā†µVitaly Buka11-86/+109
StackDepotBase (#76279) 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.
2023-12-22[clang-format] Fix operator overload inconsistency in `BreakAfterAttributes: ā†µXDeme2-11/+22
Always` (#74943) Fixes llvm/llvm-project#74901
2023-12-22[clang-format] Fix a bug in annotating function declaration names (#76206)Owen Pan2-1/+9
Annotates function declaration names having unnamed parameters.
2023-12-22[RISCV] Use riscv_bitmanip.h in zbb.c. NFCCraig Topper1-12/+14
I missed this when converting other scalar bitmanip/crypto tests to use intrinsics intead of builtins.
2023-12-22[NFC][CLANG] Fix static analyzer bugs about unnecessary object copies with ā†µsmanna121-1/+1
auto keyword (#75082) 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;
2023-12-23[LLVM] ConvergenceControlInst as a derived class of IntrinsicInst (#76230)Sameer Sahasrabuddhe2-12/+25
2023-12-22[llvm-exegesis] Fix stack pointer register restorationAiden Grossman2-7/+34
9eb80ab3787e1851be8c686651688e870b93506b 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.
2023-12-22Revert "[Sema] Fix crash on invalid code with parenthesized aggregate ā†µVitaly Buka3-37/+1
initialization" (#76272) Reverts llvm/llvm-project#76232 and 7ab16fb5207fe187ab999f882069bd632d2e68e5 to recover build bots. Breaks libc++ tests, details in #76232 #76228
2023-12-22[Transforms] Use {DenseMap,SmallPtrSet}::contains (NFC)Kazu Hirata5-5/+5
2023-12-22Change release branch creation process to bump version to N.1.0. (#75743)James Y Knight1-14/+17
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
2023-12-22[APINotes] Use DenseMap::contains (NFC)Kazu Hirata1-1/+1
2023-12-22[test][hwasan] Re-enabled android testVitaly Buka1-3/+0
2023-12-22[OpenMP] Remove unnecessary dependencies from plugin unit tests (#76266)Ethan Luis McDonough1-1/+1
This was an oversight that seems to be causing problems on certain builds. This patch should fix #76225.
2023-12-23[InstCombine] Fold minmax intrinsic using KnownBits information (#76242)Yingwei Zheng4-4/+118
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
2023-12-22[OpenMP] Improve omp offload profiler (#68016)Felipe Cabarcas4-29/+50
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>
2023-12-22[test][hwasan] Add -g required for the testVitaly Buka1-1/+1
2023-12-22[PhaseOrdering] Add test with removable chained conditions.Florian Hahn1-0/+78
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
2023-12-22[flang][MLIR][OpenMP] Emit `UpdateDataOp` from `!$omp target update` (#75345)Kareem Ergawy3-11/+256
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.
2023-12-22[lldb] Fix two deprecation warningsNico Weber2-2/+2
No behavior change.
2023-12-22lld/MachO: Fix two typos to cycle botsNico Weber2-2/+2
2023-12-22[lit] add `LIT_MAX_WORKERS` env variable (#76205)Maksim Levental1-1/+1
2023-12-22[gn] port d430c145ba92 (dladdr check for clang)Nico Weber2-6/+14
2023-12-22[TLI][NFC] Autogenerate vectorized call tests for SLEEF/ArmPL. (#76146)Alexandros Lamprineas6-5037/+4188
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)
2023-12-22[Sema] Add -Wc++11-narrowing-const-reference (#76094)Fangrui Song5-15/+44
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.
2023-12-22[AArch64] Implement spill/fill of predicate pair register classes (#76068)Momchil Velikov5-3/+191
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; } ```
2023-12-22[RegAllocFast] Avoid duplicate hash lookup (NFC)Nikita Popov1-2/+3
2023-12-22[Attributor] Don't construct pretty GEPsNikita Popov9-222/+197
Bring this in line with other transforms like ArgPromotion/SROA/ SCEVExpander and always produce canonical i8 GEPs.
2023-12-23[Bazel] Fixup for #76163NAKAMURA Takumi5-12/+18
This also reverts 7c9c807fa433 and 476812a74260.
2023-12-22[RegAllocFast] Refactor dominates algorithm for large basic block (#72250)HaohaiWen1-14/+114
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).
2023-12-22[tsan] Only intercept pthread_mutex_clocklock on Linux (#76220)Rainer Orth1-0/+2
`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`.
2023-12-22[AArch64] Assembly support for the Armv9.5-A Memory System Extensions (#76237)Lucas Duarte Prates14-0/+153
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.
2023-12-22[SCEV] Ensure shift amount is in range before calling getZExtValue()Simon Pilgrim2-3/+27
Fixes #76234
2023-12-22[clang-format] Add common attribute macros to Google style (#76239)Ilya Biryukov2-3/+27
We have found that 199fc973ced20016b04ba540cf63a1d4914fa513 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.
2023-12-22[AArch64] paci<k>171615 auti<k>171615 assembly (#76227)Tomas Matheson3-4/+52
This adds the following instructions which are added in PAuthLR: - PACIA171615 - PACIB171615 - AUTIA171615 - AUTIB171615 Also updates some encodings to match final published values. Documentation can be found here: https://developer.arm.com/documentation/ddi0602/2023-12/Base-Instructions Co-authored-by: Lucas Prates <lucas.prates@arm.com>
2023-12-22[mlir][nvvm] Fix the PTX lowering of wgmma.mma_async (#76150)Adam Paszke2-2/+2
2023-12-22[clang-format] Do not break on JS fields like on goto labels (#76233)Ilya Biryukov2-2/+10
This regressions was introduced in 70d7ea0cebcf363cd0ddcfb76375fb5fada87dd5. The commit moved some code and correctly picked up an explicit check for not running on Verilog. However, the moved code also never ran for JavaScript and after the commit we run it there and this causes the wrong formatting of: ```js export type Params = Config&{ columns: Column[]; }; ``` into ```js export type Params = Config&{ columns: Column[]; }; ```
2023-12-22[AArch64] Add an strict fp reduction test. NFCDavid Green2-0/+580
2023-12-22[CMake] Move check for dlfcn.h and dladdr to clang (#76163)Abhina Sree5-8/+31
This patch checks for the presence of dlfcn.h and dladdr in clang to be used in clang/tools/libclang/CIndexer.cpp
2023-12-22[Sema] Update test for previous changeIlya Biryukov1-1/+1
The warning for C++20 extension does not fire in on specific instance because conversion now fails as class is invalid because of an invalid member. The new behavior is expected, so updating the test accordingly
2023-12-22[Sema] Fix crash on invalid code with parenthesized aggregate initialization ā†µIlya Biryukov2-0/+36
(#76232) Fixes #76228. Use the same logic as braced init lists, also adds a test that puts incomplete types in various positions to check for regressions in the future.
2023-12-22[Sema] NFC. Simplify code in a few places of TryOrBuildParenListInitializationIlya Biryukov1-13/+6
2023-12-22[NFC][OpenMP][MLIR] Add test for lowering parallel workshare GPU loop (#76144)Dominik Adamski1-0/+36
This test checks if MLIR code is lowered according to schema presented below: func1() { call __kmpc_parallel_51(..., func2, ...) } func2() { call __kmpc_for_static_loop_4u(..., func3, ...) } func3() { //loop body }
2023-12-22[IndVars] Avoid unnecessary truncate for zext nneg useNikita Popov2-7/+3
When performing sext IV widening, if one of the narrow uses is in a zext nneg, we can treat it like an sext and avoid the insertion of a trunc.