Commit
5047e3a3ba92402b60c200201484b422cad8bea6
by i[ELF] Move GOT/PLT relocation code closer. NFC
|
 | lld/ELF/Relocations.cpp |
Commit
5bbe50148f3b515c170be22209395b72890f5b8c
by carlosgalvezp[clang-tidy] Warn on functional C-style casts
The google-readability-casting check is meant to be on par with cpplint's readability/casting check, according to the documentation. However it currently does not diagnose functional casts, like:
float x = 1.5F; int y = int(x);
This is detected by cpplint, however, and the guidelines are clear that such a cast is only allowed when the type is a class type (constructor call):
> You may use cast formats like `T(x)` only when `T` is a class type.
Therefore, update the clang-tidy check to check this case.
Differential Revision: https://reviews.llvm.org/D114427
|
 | clang-tools-extra/clang-tidy/google/AvoidCStyleCastsCheck.cpp |
 | clang-tools-extra/test/clang-tidy/checkers/google-readability-casting.cpp |
 | clang-tools-extra/docs/ReleaseNotes.rst |
Commit
89453ed6f2059b5cec576fc41914def713fe38f7
by ardb[ARM] create new pseudo t2LDRLIT_ga_pcrel for stack guards
We can't use the existing pseudo ARM::tLDRLIT_ga_pcrel for loading the stack guard for PIC code that references the GOT, since arm-pseudo may expand this to the narrow tLDRpci rather than the wider t2LDRpci.
Create a new pseudo, t2LDRLIT_ga_pcrel, and expand it to t2LDRpci.
Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1270361
Reviewed By: ardb
Differential Revision: https://reviews.llvm.org/D114762
|
 | llvm/test/CodeGen/ARM/expand-pseudos.ll |
 | llvm/lib/Target/ARM/Thumb2InstrInfo.cpp |
 | llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp |
 | llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp |
 | llvm/lib/Target/ARM/ARMInstrThumb2.td |
Commit
8cd782487fe68082e57d24a576b77f529d77f96c
by lebedev.ri[X86][LoopVectorize] "Fix" `X86TTIImpl::getAddressComputationCost()`
We ask `TTI.getAddressComputationCost()` about the cost of computing vector address, and then multiply it by the vector width. This doesn't make any sense, it implies that we'd do a vector GEP and then scalarize the vector of pointers, but there is no such thing in the vectorized IR, we perform scalar GEP's.
This is *especially* bad on X86, and was effectively prohibiting any scalarized vectorization of gathers/scatters, because `X86TTIImpl::getAddressComputationCost()` says that cost of vector address computation is `10` as compared to `1` for scalar.
The computed costs are similar to the ones with D111222+D111220, but we end up without masked memory intrinsics that we'd then have to expand later on, without much luck. (D111363)
Differential Revision: https://reviews.llvm.org/D111460
|
 | llvm/test/Analysis/CostModel/X86/gather-i32-with-i8-index.ll |
 | llvm/test/Analysis/CostModel/X86/gather-i8-with-i8-index.ll |
 | llvm/test/Analysis/CostModel/X86/gather-i16-with-i8-index.ll |
 | llvm/test/Analysis/CostModel/X86/masked-interleaved-store-i16.ll |
 | llvm/test/Analysis/CostModel/X86/scatter-i32-with-i8-index.ll |
 | llvm/test/Analysis/CostModel/X86/gather-i64-with-i8-index.ll |
 | llvm/test/Transforms/LoopVectorize/X86/x86-interleaved-store-accesses-with-gaps.ll |
 | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp |
 | llvm/test/Analysis/CostModel/X86/scatter-i64-with-i8-index.ll |
 | llvm/test/Analysis/CostModel/X86/masked-scatter-i64-with-i8-index.ll |
 | llvm/lib/Target/X86/X86TargetTransformInfo.cpp |
 | llvm/test/Analysis/CostModel/X86/interleaved-load-i16-stride-5.ll |
 | llvm/test/Analysis/CostModel/X86/scatter-i16-with-i8-index.ll |
 | llvm/test/Analysis/CostModel/X86/masked-scatter-i32-with-i8-index.ll |
 | llvm/test/Analysis/CostModel/X86/scatter-i8-with-i8-index.ll |
 | llvm/test/Transforms/LoopVectorize/X86/gather_scatter.ll |
 | llvm/test/Analysis/CostModel/X86/masked-interleaved-load-i16.ll |
Commit
c2e08aba1afd5a69dbe74b03ce6f463d45102222
by wlei[llvm-profgen] Compute and show profile density
AutoFDO performance is sensitive to profile density, i.e., the amount of samples in the profile relative to the program size, because profiles with insufficient samples could be inaccurate due to statistical noise and thus hurt AutoFDO performance. A previous investigation showed that AutoFDO performed better on MySQL with increased amount of samples. Therefore, we implement a profile-density computation feature to give hints about profile density to users and the compiler.
We define the density of a profile Prof as follows:
- For each function A in the profile, density(A) = total_samples(A) / sizeof(A). - density(Prof) = min(density(A)) for all functions A that are warm (defined below).
A function is considered warm if its total-samples is within top N percent of the profile. For implementation, we reuse the `ProfileSummaryBuilder::getHotCountThreshold(..)` as threshold which can be set by percent(`--profile-summary-cutoff-hot`) or by value(`--profile-summary-hot-count`).
We also introduce `--hot-function-density-threshold` to set hot function density threshold and will give suggestion if profile density is below it which implies we should increase samples.
This also applies for CS profile with all profiles merged into base.
Reviewed By: hoy, wenlei
Differential Revision: https://reviews.llvm.org/D113781
|
 | llvm/test/tools/llvm-profgen/profile-density.test |
 | llvm/test/tools/llvm-profgen/Inputs/profile-density.raw.prof |
 | llvm/tools/llvm-profgen/ProfileGenerator.h |
 | llvm/test/tools/llvm-profgen/Inputs/profile-density-cs.raw.prof |
 | llvm/tools/llvm-profgen/ProfileGenerator.cpp |
 | llvm/tools/llvm-profgen/ProfiledBinary.h |
Commit
7ba70d32736aef0c640b9d0e7b9081fc208c81c2
by markus.boeck02[PR52549][clang-cl] Predefine _MSVC_EXECUTION_CHARACTER_SET
Since VS 2022 17.1 MSVC predefines _MSVC_EXECUTION_CHARACTER_SET to inform the users of the execution character set defined at compile time. The value the macro expands to is a Windows Code Page Identifier which are documented here: https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers
As clang currently only supports UTF-8 it is defined as 65001. If clang-cl were to support a different execution character set in the future we'd have to change the value.
Fixes https://bugs.llvm.org/show_bug.cgi?id=52549
Differential Revision: https://reviews.llvm.org/D114576
|
 | clang/lib/Basic/Targets/OSTargets.cpp |
 | clang/test/Preprocessor/init.c |
Commit
29d4230d6b528ebf14dcd5dc610ee0d937a23d51
by powerman1st[RISCV] Decode vtype with reserved fields to raw immediate
This patch fixes a crash when doing "llvm-objdump -D --mattr=+experimental-v" against an object file which happens to keep a word that can be decoded to VSETVLI & VSETIVLI with reserved vlmul[2:0]=4. All vtype values with reserved fields (vlmul[2:0]=4, vsew[2:0]=0b1xx, non-zero bits 8/9/10) are printed to raw immediate.
Reviewed By: jhenderson, jrtc27, craig.topper
Differential Revision: https://reviews.llvm.org/D114581
|
 | llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.cpp |
 | llvm/test/MC/RISCV/rvv/vsetvl-invalid.s |
Commit
5188f55d32a9cd95c3cb668ab2d762ca4e0c8d6b
by i[ELF] Move ObjFile<ELFT>::{getLocalSymbols,getGlobalSymbols} to non-template ELFFileBase. NFC
|
 | lld/ELF/InputFiles.h |
 | lld/ELF/InputFiles.cpp |
Commit
0d0371f58ff0e4289bdff9ef70f7f6fb0277c3d0
by gysit[mlir][OpDSL] Fix OpDSL tests after https://reviews.llvm.org/D114680.
Update the shapes of the convolution / pooling tests that where detected after enabling verification during printing (https://reviews.llvm.org/D114680). Also split the emit_structured_generic.py file that previously contained all tests into multiple separate files to simplify debugging.
Reviewed By: stellaraccident
Differential Revision: https://reviews.llvm.org/D114731
|
 | mlir/test/python/dialects/linalg/opdsl/emit_pooling.py |
 | mlir/test/python/dialects/linalg/opdsl/emit_misc.py |
 | mlir/test/python/dialects/linalg/opdsl/emit_structured_generic.py |
 | mlir/test/python/dialects/linalg/opdsl/emit_convolution.py |
 | mlir/test/python/dialects/linalg/opdsl/emit_matmul.py |
Commit
f89bb3c012b46a00eb31bb7a705a85993eb763e3
by pifon[mlir] Move bufferization-related passes to `bufferization` dialect.
[RFC](https://llvm.discourse.group/t/rfc-dialect-for-bufferization-related-ops/4712)
Differential Revision: https://reviews.llvm.org/D114698
|
 | mlir/include/mlir/InitAllPasses.h |
 | mlir/lib/Dialect/StandardOps/Transforms/Bufferize.cpp |
 | mlir/lib/Dialect/Bufferization/Transforms/BufferDeallocation.cpp |
 | mlir/lib/Transforms/PassDetail.h |
 | mlir/lib/Dialect/Bufferization/Transforms/Bufferize.cpp |
 | mlir/include/mlir/Dialect/Bufferization/CMakeLists.txt |
 | mlir/include/mlir/Transforms/Bufferize.h |
 | mlir/lib/Transforms/BufferDeallocation.cpp |
 | mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h |
 | mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h |
 | mlir/lib/Transforms/Bufferize.cpp |
 | mlir/lib/Dialect/Tensor/Transforms/Bufferize.cpp |
 | mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt |
 | mlir/include/mlir/Dialect/StandardOps/Transforms/Passes.h |
 | mlir/lib/Dialect/Arithmetic/Transforms/Bufferize.cpp |
 | mlir/include/mlir/Dialect/Arithmetic/Transforms/Passes.h |
 | mlir/lib/Dialect/StandardOps/Transforms/CMakeLists.txt |
 | utils/bazel/llvm-project-overlay/mlir/BUILD.bazel |
 | mlir/lib/Dialect/Bufferization/CMakeLists.txt |
 | mlir/lib/Dialect/Bufferization/Transforms/CMakeLists.txt |
 | mlir/lib/Dialect/SCF/Transforms/Bufferize.cpp |
 | mlir/lib/Dialect/Shape/Transforms/Bufferize.cpp |
 | mlir/test/Dialect/Bufferization/Transforms/finalizing-bufferize.mlir |
 | mlir/lib/Dialect/Bufferization/Transforms/PassDetail.h |
 | mlir/test/Dialect/Bufferization/Transforms/buffer-deallocation.mlir |
 | mlir/lib/Dialect/Math/Transforms/PolynomialApproximation.cpp |
 | mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.h |
 | mlir/include/mlir/Transforms/Passes.td |
 | mlir/test/Transforms/buffer-deallocation.mlir |
 | mlir/include/mlir/Dialect/Bufferization/Transforms/Bufferize.h |
 | mlir/lib/Dialect/Linalg/Transforms/Bufferize.cpp |
 | mlir/include/mlir/Transforms/Passes.h |
 | mlir/lib/Dialect/Linalg/Transforms/Promotion.cpp |
 | mlir/lib/Dialect/Tensor/Transforms/CMakeLists.txt |
 | mlir/lib/Dialect/Shape/Transforms/CMakeLists.txt |
 | mlir/lib/Dialect/StandardOps/Transforms/TensorConstantBufferize.cpp |
 | mlir/lib/Dialect/Arithmetic/Transforms/CMakeLists.txt |
 | mlir/lib/Dialect/StandardOps/Transforms/ExpandOps.cpp |
 | mlir/test/Transforms/finalizing-bufferize.mlir |
 | mlir/lib/Dialect/StandardOps/Transforms/FuncBufferize.cpp |
 | mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.td |
 | mlir/lib/Dialect/Arithmetic/Transforms/ExpandOps.cpp |
 | mlir/lib/Transforms/CMakeLists.txt |
 | mlir/lib/Dialect/SCF/Transforms/CMakeLists.txt |
Commit
3356d8837e46a92446e4b9b0cbd6967e5f4e44ba
by kadircet[clangd] Make std symbol generation script python3 friendly
Differential Revision: https://reviews.llvm.org/D114723
|
 | clang-tools-extra/clangd/include-mapping/gen_std.py |
Commit
ae1ea0bead75f4c7a4c965dfa40b5f3b78b60364
by julian.gross[mlir] Decompose Bufferization Clone operation into Memref Alloc and Copy.
This patch introduces a new conversion to convert bufferization.clone operations into a memref.alloc and a memref.copy operation. This transformation is needed to transform all remaining clones which "survive" all previous transformations, before a given program is lowered further (to LLVM e.g.). Otherwise, these operations cannot be handled anymore and lead to compile errors. See: https://llvm.discourse.group/t/bufferization-error-related-to-memref-clone/4665
Differential Revision: https://reviews.llvm.org/D114233
|
 | mlir/lib/Conversion/BufferizationToMemRef/CMakeLists.txt |
 | mlir/lib/Conversion/CMakeLists.txt |
 | mlir/include/mlir/Conversion/Passes.h |
 | mlir/include/mlir/Conversion/Passes.td |
 | mlir/test/Conversion/BufferizationToMemRef/bufferization-to-memref.mlir |
 | mlir/lib/Conversion/BufferizationToMemRef/BufferizationToMemRef.cpp |
 | mlir/include/mlir/Conversion/BufferizationToMemRef/BufferizationToMemRef.h |
Commit
5cff77c23f43130887b566dd0fe237e1c482e23b
by zeno[clang][ARM] PACBTI-M assembly support
Introduce assembly support for Armv8.1-M PACBTI extension. This is an optional extension in v8.1-M.
There are 10 new system registers and 5 new instructions, all predicated on the feature.
The attribute for llvm-mc is called "pacbti". For armclang, an architecture extension also called "pacbti" was created.
This patch is part of a series that adds support for the PACBTI-M extension of the Armv8.1-M architecture, as detailed here:
https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/armv8-1-m-pointer-authentication-and-branch-target-identification-extension
The PACBTI-M specification can be found in the Armv8-M Architecture Reference Manual:
https://developer.arm.com/documentation/ddi0553/latest
The following people contributed to this patch:
- Victor Campos - Ties Stuij
Reviewed By: labrinea
Differential Revision: https://reviews.llvm.org/D112420
|
 | llvm/lib/Target/ARM/ARMSystemRegister.td |
 | llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp |
 | llvm/lib/Target/ARM/ARMSubtarget.h |
 | llvm/include/llvm/Support/ARMTargetParser.def |
 | llvm/test/MC/Disassembler/ARM/armv8.1m-pacbti.txt |
 | llvm/test/MC/ARM/armv8.1m-pacbti.s |
 | llvm/lib/Target/ARM/ARMRegisterInfo.td |
 | llvm/include/llvm/Support/ARMTargetParser.h |
 | llvm/lib/Target/ARM/ARMPredicates.td |
 | llvm/lib/Target/ARM/ARMInstrThumb2.td |
 | llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp |
 | llvm/test/MC/ARM/armv8.1m-pacbti-error.s |
 | llvm/test/MC/ARM/implicit-it-generation-v8.s |
 | llvm/lib/Target/ARM/ARM.td |
 | clang/test/Driver/armv8.1m.main.c |
 | llvm/test/CodeGen/Thumb/high-reg-clobber.mir |