Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
d04d291
[RISCV] Remove implicit conversions of MCRegister to unsigned. NFC (#…
topperc Nov 12, 2025
124bfdf
[libc] Use function overloads to make string parsing code more generi…
vonosmas Nov 12, 2025
b1eb7fa
[PowerPC] Use MCRegister instead of unsigned. NFC (#167602)
topperc Nov 12, 2025
9dfd14a
workflows/release-binaries: Drop use of setup-windows action (#167440)
tstellar Nov 12, 2025
da9015a
[clang-tidy] Provide fix-its for downcasts in google-readability-cast…
ckandeler Nov 12, 2025
9be980c
[mlir][emitc] Unify API for deferred emission (#167532)
aniragil Nov 12, 2025
68a4af6
[LV][EVL] Replace VPInstruction::Select with vp.merge for predicated …
Mel-Chen Nov 12, 2025
d02a5ae
[flang] Adding lowering of TEAMs features to PRIF in MIF Dialect (#16…
JDPailleux Nov 12, 2025
fe8865c
[AArch64] Prioritize regalloc hints over movprfx hints (#167480)
sdesmalen-arm Nov 12, 2025
d23d8ab
[SPIRV][SPIRVPrepareGlobals] Convert llvm.embedded.module from a 0-el…
jmmartinez Nov 12, 2025
10e9764
Revert "[sanitizer-common] [Darwin] Fix overlapping dyld segment addr…
ndrewh Nov 12, 2025
a8e058a
[libc++abi] Add a test to ensure the abi namespace alias is declared …
philnik777 Nov 12, 2025
1590034
[libc++] Use variable templates in is_floating_point (#167141)
philnik777 Nov 12, 2025
36c1273
[libc++] Mark string functions as [[nodiscard]] (#166524)
philnik777 Nov 12, 2025
5e4f177
[AMDGPU] Fix missing S_WAIT_XCNT with multiple pending VMEMs (#166779)
jayfoad Nov 12, 2025
b7bc4a2
Revert "[lldb] Introduce ScriptedFrameProvider for real threads" (#16…
Michael137 Nov 12, 2025
b9f0dad
[VPlan] Merge fcmp uno feeding Or. (#167251)
fhahn Nov 12, 2025
b1343e3
[RISCV] Add short forward branch support for `lui`, `qc.li`, and `qc.…
hchandel Nov 12, 2025
3a66089
[mlir][tosa] Allow int64 tensors in `tosa.intdiv` (#167367)
lhutton1 Nov 12, 2025
cfc56c9
[flang][debug] Track dummy argument positions explicitly. (#167489)
abidh Nov 12, 2025
3c52f53
[MLIR][XeGPU][TransformOps] Add insert_prefetch op (#167356)
tkarna Nov 12, 2025
7eeae8e
[MLIR][NVVM] Update mbarrier Ops to use AnyTypeOf[] (3/3) (#167567)
durga4github Nov 12, 2025
0ff0892
[Clang][CodeGen] Add disable_sanitizer_instrumentation attribute to m…
BStott6 Nov 12, 2025
f48288a
[X86] bitcnt-big-integer.ll - add zero_undef test coverage (#167663)
RKSimon Nov 12, 2025
d5388c3
[mlir][tosa] Fix validation support for argmax with int64 output (#16…
lhutton1 Nov 12, 2025
a276624
[SPIRV][SPIRVPrepareGlobals] Map AMD's dynamic LDS 0-element globals …
jmmartinez Nov 12, 2025
0957656
[runtimes][GTest] LLVM-independent unittests (#164794)
Meinersbur Nov 12, 2025
cf51a5e
[AArch64][SME] Enable split SVE for hazard padding in SVE CC function…
MacDue Nov 12, 2025
4f8943d
[flang] Disallow passing array actual arguments to ignore_tkr(r) scal…
eugeneepshteyn Nov 12, 2025
57b2341
[BLAZE] Add missing SCFUtil dep after #167356 (#167671)
WillFroom Nov 12, 2025
02c68b3
[VPlan] Plumb scalable register size through narrowInterleaveGroups (…
lukel97 Nov 12, 2025
46e9d63
[LLVM][CodeGen][SVE] Use BFMLALB for promoted bfloat fma operations. …
paulwalker-arm Nov 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 0 additions & 6 deletions .github/workflows/release-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -191,12 +191,6 @@ jobs:
- name: Install Ninja
uses: llvm/actions/install-ninja@42d80571b13f4599bbefbc7189728b64723c7f78 # main

- name: Setup Windows
if: startsWith(runner.os, 'Windows')
uses: llvm/actions/setup-windows@42d80571b13f4599bbefbc7189728b64723c7f78 # main
with:
arch: amd64

- name: Set Build Prefix
id: setup-stage
shell: bash
Expand Down
6 changes: 6 additions & 0 deletions clang-tools-extra/clang-tidy/google/AvoidCStyleCastsCheck.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,12 @@ void AvoidCStyleCastsCheck::check(const MatchFinder::MatchResult &Result) {
return;
}
break;
case CK_BaseToDerived:
if (!needsConstCast(SourceType, DestType)) {
ReplaceWithNamedCast("static_cast");
return;
}
break;
default:
break;
}
Expand Down
4 changes: 4 additions & 0 deletions clang-tools-extra/docs/ReleaseNotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,10 @@ Changes in existing checks
adding an option to allow pointer arithmetic via prefix/postfix increment or
decrement operators.

- Improved :doc:`google-readability-casting
<clang-tidy/checks/google/readability-casting>` check by adding fix-it
notes for downcasts.

- Improved :doc:`llvm-prefer-isa-or-dyn-cast-in-conditionals
<clang-tidy/checks/llvm/prefer-isa-or-dyn-cast-in-conditionals>` check:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,11 @@ void f(int a, double b, const char *cpc, const void *cpv, X *pX) {
// CHECK-FIXES: b1 = static_cast<int>(b);

Y *pB = (Y*)pX;
// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: {{.*}}; use static_cast/const_cast/reinterpret_cast [
// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: {{.*}}; use static_cast {{.*}}
// CHECK-FIXES: Y *pB = static_cast<Y*>(pX);
Y &rB = (Y&)*pX;
// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: {{.*}}; use static_cast/const_cast/reinterpret_cast [
// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: {{.*}}; use static_cast {{.*}}
// CHECK-FIXES: Y &rB = static_cast<Y&>(*pX);

const char *pc3 = (const char*)cpv;
// CHECK-MESSAGES: :[[@LINE-1]]:21: warning: {{.*}}; use static_cast [
Expand Down
5 changes: 5 additions & 0 deletions clang/lib/CodeGen/CodeGenModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4938,6 +4938,11 @@ void CodeGenModule::setMultiVersionResolverAttributes(llvm::Function *Resolver,

setDSOLocal(Resolver);

// The resolver must be exempt from sanitizer instrumentation, as it can run
// before the sanitizer is initialized.
// (https://github.com/llvm/llvm-project/issues/163369)
Resolver->addFnAttr(llvm::Attribute::DisableSanitizerInstrumentation);

// Set the default target-specific attributes, such as PAC and BTI ones on
// AArch64. Not passing Decl to prevent setting unrelated attributes,
// as Resolver can be shared by multiple declarations.
Expand Down
2 changes: 1 addition & 1 deletion clang/test/CodeGen/AArch64/fmv-detection.c
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ int caller() {
// CHECK-NEXT: ret i32 [[CALL]]
//
//
// CHECK-LABEL: define {{[^@]+}}@fmv.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@fmv.resolver() {{[#0-9]* }}comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand Down
12 changes: 8 additions & 4 deletions clang/test/CodeGen/AArch64/fmv-mix-explicit-implicit-default.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,22 +107,26 @@ int caller6(void) { return no_def_explicit_default_first(); }
// CHECK-NEXT: ret i32 [[CALL]]
//
//
// CHECK-LABEL: define {{[^@]+}}@implicit_default_decl_first.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@implicit_default_decl_first.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER:[0-9]+]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: ret ptr @implicit_default_decl_first.default
//
//
// CHECK-LABEL: define {{[^@]+}}@explicit_default_def_first.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@explicit_default_def_first.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: ret ptr @explicit_default_def_first.default
//
//
// CHECK-LABEL: define {{[^@]+}}@implicit_default_def_first.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@implicit_default_def_first.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: ret ptr @implicit_default_def_first.default
//
//
// CHECK-LABEL: define {{[^@]+}}@explicit_default_decl_first.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@explicit_default_decl_first.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: ret ptr @explicit_default_decl_first.default
//
Expand Down
6 changes: 2 additions & 4 deletions clang/test/CodeGen/AArch64/fmv-priority.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s

// Priority biskmasks after feature dependency expansion:
//
// MSB LSB
//
// sme2 | wfxt | sme | bf16 | | | fp16 | simd | fp
// -----+------+-----+------+-------+------+------+------+---
// sme2 | | sme | bf16 | rcpc2 | rcpc | fp16 | simd | fp
//
// Dependencies should not affect priorities, since a
// feature can only depend on lower priority features:
// https://github.com/ARM-software/acle/pull/376
Expand All @@ -32,7 +29,8 @@ int call() { return fn(); }
// CHECK-NEXT: ret i32 [[CALL]]
//
//
// CHECK-LABEL: define weak_odr ptr @fn.resolver() comdat {
// CHECK-LABEL: define weak_odr ptr @fn.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER:[0-9]+]] comdat {
// CHECK-NEXT: [[RESOLVER_ENTRY:.*:]]
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand Down
22 changes: 15 additions & 7 deletions clang/test/CodeGen/AArch64/fmv-resolver-emission.c
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,8 @@ __attribute__((target_clones("aes"))) void clones_without_default(void) {}
// CHECK-NEXT: ret void
//
//
// CHECK-LABEL: define {{[^@]+}}@used_before_default_def.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@used_before_default_def.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER:[0-9]+]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand All @@ -272,7 +273,8 @@ __attribute__((target_clones("aes"))) void clones_without_default(void) {}
// CHECK-NEXT: ret ptr @used_before_default_def.default
//
//
// CHECK-LABEL: define {{[^@]+}}@used_after_default_def.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@used_after_default_def.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand All @@ -286,7 +288,8 @@ __attribute__((target_clones("aes"))) void clones_without_default(void) {}
// CHECK-NEXT: ret ptr @used_after_default_def.default
//
//
// CHECK-LABEL: define {{[^@]+}}@not_used_with_default.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@not_used_with_default.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand All @@ -300,7 +303,8 @@ __attribute__((target_clones("aes"))) void clones_without_default(void) {}
// CHECK-NEXT: ret ptr @not_used_with_default.default
//
//
// CHECK-LABEL: define {{[^@]+}}@indirect_use.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@indirect_use.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand Down Expand Up @@ -328,7 +332,8 @@ __attribute__((target_clones("aes"))) void clones_without_default(void) {}
// CHECK-NEXT: ret void
//
//
// CHECK-LABEL: define {{[^@]+}}@internal_func.resolver() {
// CHECK-LABEL: define {{[^@]+}}@internal_func.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER]] {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand Down Expand Up @@ -356,7 +361,8 @@ __attribute__((target_clones("aes"))) void clones_without_default(void) {}
// CHECK-NEXT: ret void
//
//
// CHECK-LABEL: define {{[^@]+}}@linkonce_func.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@linkonce_func.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand All @@ -370,7 +376,8 @@ __attribute__((target_clones("aes"))) void clones_without_default(void) {}
// CHECK-NEXT: ret ptr @linkonce_func.default
//
//
// CHECK-LABEL: define {{[^@]+}}@clones_with_default.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@clones_with_default.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand All @@ -383,6 +390,7 @@ __attribute__((target_clones("aes"))) void clones_without_default(void) {}
// CHECK: resolver_else:
// CHECK-NEXT: ret ptr @clones_with_default.default
//
// CHECK: attributes #[[ATTR_RESOLVER]] = { disable_sanitizer_instrumentation }
//.
// CHECK: [[META0:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
// CHECK: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}
Expand Down
9 changes: 6 additions & 3 deletions clang/test/CodeGen/AArch64/mixed-target-attributes.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,8 @@ __attribute__((target_version("jscvt"))) int default_def_with_version_decls(void
// CHECK-NEXT: ret i32 0
//
//
// CHECK-LABEL: define {{[^@]+}}@implicit_default.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@implicit_default.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER:[0-9]+]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand Down Expand Up @@ -165,7 +166,8 @@ __attribute__((target_version("jscvt"))) int default_def_with_version_decls(void
// CHECK-NEXT: ret ptr @implicit_default.default
//
//
// CHECK-LABEL: define {{[^@]+}}@explicit_default.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@explicit_default.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand Down Expand Up @@ -203,7 +205,8 @@ __attribute__((target_version("jscvt"))) int default_def_with_version_decls(void
// CHECK-NEXT: ret ptr @explicit_default.default
//
//
// CHECK-LABEL: define {{[^@]+}}@default_def_with_version_decls.resolver() comdat {
// CHECK-LABEL: define {{[^@]+}}@default_def_with_version_decls.resolver()
// CHECK-SAME: #[[ATTR_RESOLVER]] comdat {
// CHECK-NEXT: resolver_entry:
// CHECK-NEXT: call void @__init_cpu_features_resolver()
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
Expand Down
21 changes: 12 additions & 9 deletions clang/test/CodeGen/AArch64/resolver-attributes.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,17 +46,20 @@ __attribute__((ifunc("ifunc_resolver"))) int ifunc(void);
// BTI: define internal ptr @static_target_clones.resolver() #[[ATTR_RESOLVER]]
// BTI: define internal ptr @static_target_version.resolver() #[[ATTR_RESOLVER]]

// In NOBTI case, no attribute groups are assigned to the resolver functions:
// NOBTI: define weak_odr ptr @global_target_clones.resolver(){{( comdat)?}} {
// NOBTI: define weak_odr ptr @global_target_version.resolver(){{( comdat)?}} {
// NOBTI: define internal ptr @static_target_clones.resolver() {
// NOBTI: define internal ptr @static_target_version.resolver() {
// In NOBTI case, only "no_sanitizer_instrumentation" attributes are added to the resolver

// HIDDEN: define weak_odr hidden ptr @global_target_clones.resolver(){{( comdat)?}} {
// HIDDEN: define weak_odr hidden ptr @global_target_version.resolver(){{( comdat)?}} {
// HIDDEN: define internal ptr @static_target_clones.resolver() {
// HIDDEN: define internal ptr @static_target_version.resolver() {
// NOBTI: define weak_odr ptr @global_target_clones.resolver() [[ATTR_RESOLVER:(#[0-9]+)?]]{{( comdat)?}}
// NOBTI: define weak_odr ptr @global_target_version.resolver() [[ATTR_RESOLVER]]{{( comdat)?}}
// NOBTI: define internal ptr @static_target_clones.resolver() [[ATTR_RESOLVER]]
// NOBTI: define internal ptr @static_target_version.resolver() [[ATTR_RESOLVER]]

// HIDDEN: define weak_odr hidden ptr @global_target_clones.resolver() [[ATTR_RESOLVER:(#[0-9]+)?]]{{( comdat)?}}
// HIDDEN: define weak_odr hidden ptr @global_target_version.resolver() [[ATTR_RESOLVER]]{{( comdat)?}}
// HIDDEN: define internal ptr @static_target_clones.resolver() [[ATTR_RESOLVER]]
// HIDDEN: define internal ptr @static_target_version.resolver() [[ATTR_RESOLVER]]

// ELF: attributes #[[ATTR_IFUNC_RESOLVER]] = { {{.*}}"branch-target-enforcement"{{.*}} }

// BTI: attributes #[[ATTR_RESOLVER]] = { {{.*}}"branch-target-enforcement"{{.*}} }
//
// NOBTI: attributes [[ATTR_RESOLVER]] = { disable_sanitizer_instrumentation }
Loading
Loading