Skip to content

Conversation

@fmayer
Copy link
Contributor

@fmayer fmayer commented Nov 26, 2025

Also fix up incorrect name for riscv CHECK lines

Created using spr 1.3.7
@llvmbot llvmbot added the clang Clang issues not falling into any other category label Nov 26, 2025
@llvmbot
Copy link
Member

llvmbot commented Nov 26, 2025

@llvm/pr-subscribers-clang

Author: Florian Mayer (fmayer)

Changes

Also fix up incorrect name for riscv CHECK lines


Full diff: https://github.com/llvm/llvm-project/pull/169592.diff

2 Files Affected:

  • (modified) clang/test/CodeGen/cfi-icall-trap-recover-runtime.c (+45-44)
  • (modified) clang/test/CodeGenCXX/cfi-vcall-trap-recover-runtime.cpp (+8-11)
diff --git a/clang/test/CodeGen/cfi-icall-trap-recover-runtime.c b/clang/test/CodeGen/cfi-icall-trap-recover-runtime.c
index 1fb8d489e4a3b..a02c369ebc7ae 100644
--- a/clang/test/CodeGen/cfi-icall-trap-recover-runtime.c
+++ b/clang/test/CodeGen/cfi-icall-trap-recover-runtime.c
@@ -9,9 +9,9 @@
 
 // RUN: %clang_cc1 -fsanitize=cfi-icall -fno-sanitize-trap=cfi-icall -fsanitize-recover=cfi-icall -fsanitize-minimal-runtime -flto -fvisibility=hidden -triple x86_64-unknown-linux -fwhole-program-vtables -emit-llvm -o - %s | FileCheck --check-prefix=RECOVER_MIN %s
 
-// RUN: %clang_cc1 -fsanitize=cfi-icall -fno-sanitize-trap=cfi-icall -fsanitize-recover=cfi-icall -fsanitize-minimal-runtime -fsanitize-handler-preserve-all-regs -flto -fvisibility=hidden -triple x86_64-unknown-linux -fwhole-program-vtables -emit-llvm -o - %s | FileCheck --check-prefix=PRESERVE_MIN %s
+// RUN: %clang -fsanitize=cfi-icall -fno-sanitize-trap=cfi-icall -fsanitize-recover=cfi-icall -fsanitize-minimal-runtime -fsanitize-handler-preserve-all-regs -flto -fvisibility=hidden -target x86_64-unknown-linux  -fwhole-program-vtables -S -emit-llvm -o - %s | FileCheck --check-prefix=PRESERVE_MIN %s
 
-// RUN: %clang_cc1 -fsanitize=cfi-icall -fno-sanitize-trap=cfi-icall -fsanitize-recover=cfi-icall -fsanitize-minimal-runtime -fsanitize-handler-preserve-all-regs -flto -fvisibility=hidden -triple riscv64-unknown-linux -fwhole-program-vtables -emit-llvm -o - %s | FileCheck --check-prefix=RECOVER_MIN_I386 %s
+// RUN: %clang -fsanitize=cfi-icall -fno-sanitize-trap=cfi-icall -fsanitize-recover=cfi-icall -fsanitize-minimal-runtime -fsanitize-handler-preserve-all-regs -flto -fvisibility=hidden -target riscv64-unknown-linux -fwhole-program-vtables -S -emit-llvm -o - %s | FileCheck --check-prefix=RECOVER_MIN_RV64 %s
 
 // RUN: %clang_cc1 -fsanitize=cfi-icall -fno-sanitize-trap=cfi-icall -fsanitize-minimal-runtime -fsanitize-handler-preserve-all-regs -flto -fvisibility=hidden -triple x86_64-unknown-linux -fwhole-program-vtables -emit-llvm -o - %s | FileCheck --check-prefix=ABORT_MIN %s
 
@@ -42,14 +42,14 @@
 // RECOVER_MIN-NEXT:    ret void
 //
 // PRESERVE_MIN-LABEL: define hidden void @f(
-// PRESERVE_MIN-SAME: ) #[[ATTR0:[0-9]+]] !type [[META6:![0-9]+]] !type [[META7:![0-9]+]] {
+// PRESERVE_MIN-SAME: ) #[[ATTR0:[0-9]+]] !type [[META10:![0-9]+]] !type [[META11:![0-9]+]] {
 // PRESERVE_MIN-NEXT:  [[ENTRY:.*:]]
 // PRESERVE_MIN-NEXT:    ret void
 //
-// RECOVER_MIN_I386-LABEL: define hidden void @f(
-// RECOVER_MIN_I386-SAME: ) #[[ATTR0:[0-9]+]] !type [[META10:![0-9]+]] !type [[META11:![0-9]+]] {
-// RECOVER_MIN_I386-NEXT:  [[ENTRY:.*:]]
-// RECOVER_MIN_I386-NEXT:    ret void
+// RECOVER_MIN_RV64-LABEL: define hidden void @f(
+// RECOVER_MIN_RV64-SAME: ) #[[ATTR0:[0-9]+]] !type [[META14:![0-9]+]] !type [[META15:![0-9]+]] {
+// RECOVER_MIN_RV64-NEXT:  [[ENTRY:.*:]]
+// RECOVER_MIN_RV64-NEXT:    ret void
 //
 void f() {
 }
@@ -164,7 +164,7 @@ void xf();
 // RECOVER_MIN-NEXT:    ret void
 //
 // PRESERVE_MIN-LABEL: define hidden void @g(
-// PRESERVE_MIN-SAME: i32 noundef [[B:%.*]]) #[[ATTR0]] !type [[META8:![0-9]+]] !type [[META9:![0-9]+]] {
+// PRESERVE_MIN-SAME: i32 noundef [[B:%.*]]) #[[ATTR0]] !type [[META12:![0-9]+]] !type [[META13:![0-9]+]] {
 // PRESERVE_MIN-NEXT:  [[ENTRY:.*:]]
 // PRESERVE_MIN-NEXT:    [[B_ADDR:%.*]] = alloca i32, align 4
 // PRESERVE_MIN-NEXT:    [[FP:%.*]] = alloca ptr, align 8
@@ -175,40 +175,41 @@ void xf();
 // PRESERVE_MIN-NEXT:    [[COND:%.*]] = select i1 [[TOBOOL]], ptr @f, ptr @xf
 // PRESERVE_MIN-NEXT:    store ptr [[COND]], ptr [[FP]], align 8
 // PRESERVE_MIN-NEXT:    [[TMP2:%.*]] = load ptr, ptr [[FP]], align 8
-// PRESERVE_MIN-NEXT:    [[TMP3:%.*]] = call i1 @llvm.type.test(ptr [[TMP2]], metadata !"_ZTSFvE"), !nosanitize [[META10:![0-9]+]]
-// PRESERVE_MIN-NEXT:    br i1 [[TMP3]], label %[[CONT:.*]], label %[[HANDLER_CFI_CHECK_FAIL:.*]], !prof [[PROF11:![0-9]+]], !nosanitize [[META10]]
+// PRESERVE_MIN-NEXT:    [[TMP3:%.*]] = call i1 @llvm.type.test(ptr [[TMP2]], metadata !"_ZTSFvE"), !nosanitize [[META14:![0-9]+]]
+// PRESERVE_MIN-NEXT:    br i1 [[TMP3]], label %[[CONT:.*]], label %[[HANDLER_CFI_CHECK_FAIL:.*]], !prof [[PROF15:![0-9]+]], !nosanitize [[META14]]
 // PRESERVE_MIN:       [[HANDLER_CFI_CHECK_FAIL]]:
-// PRESERVE_MIN-NEXT:    call void @__ubsan_handle_cfi_check_fail_minimal() #[[ATTR4:[0-9]+]], !nosanitize [[META10]]
-// PRESERVE_MIN-NEXT:    br label %[[CONT]], !nosanitize [[META10]]
+// PRESERVE_MIN-NEXT:    call void @__ubsan_handle_cfi_check_fail_minimal() #[[ATTR4:[0-9]+]], !nosanitize [[META14]]
+// PRESERVE_MIN-NEXT:    br label %[[CONT]], !nosanitize [[META14]]
 // PRESERVE_MIN:       [[CONT]]:
 // PRESERVE_MIN-NEXT:    call void (...) [[TMP2]]()
 // PRESERVE_MIN-NEXT:    ret void
 //
-// RECOVER_MIN_I386-LABEL: define hidden void @g(
-// RECOVER_MIN_I386-SAME: i32 noundef signext [[B:%.*]]) #[[ATTR0]] !type [[META12:![0-9]+]] !type [[META13:![0-9]+]] {
-// RECOVER_MIN_I386-NEXT:  [[ENTRY:.*:]]
-// RECOVER_MIN_I386-NEXT:    [[B_ADDR:%.*]] = alloca i32, align 4
-// RECOVER_MIN_I386-NEXT:    [[FP:%.*]] = alloca ptr, align 8
-// RECOVER_MIN_I386-NEXT:    store i32 [[B]], ptr [[B_ADDR]], align 4
-// RECOVER_MIN_I386-NEXT:    [[TMP0:%.*]] = load i32, ptr [[B_ADDR]], align 4
-// RECOVER_MIN_I386-NEXT:    [[TOBOOL:%.*]] = icmp ne i32 [[TMP0]], 0
-// RECOVER_MIN_I386-NEXT:    [[TMP1:%.*]] = zext i1 [[TOBOOL]] to i64
-// RECOVER_MIN_I386-NEXT:    [[COND:%.*]] = select i1 [[TOBOOL]], ptr @f, ptr @xf
-// RECOVER_MIN_I386-NEXT:    store ptr [[COND]], ptr [[FP]], align 8
-// RECOVER_MIN_I386-NEXT:    [[TMP2:%.*]] = load ptr, ptr [[FP]], align 8
-// RECOVER_MIN_I386-NEXT:    [[TMP3:%.*]] = call i1 @llvm.type.test(ptr [[TMP2]], metadata !"_ZTSFvE"), !nosanitize [[META14:![0-9]+]]
-// RECOVER_MIN_I386-NEXT:    br i1 [[TMP3]], label %[[CONT:.*]], label %[[HANDLER_CFI_CHECK_FAIL:.*]], !prof [[PROF15:![0-9]+]], !nosanitize [[META14]]
-// RECOVER_MIN_I386:       [[HANDLER_CFI_CHECK_FAIL]]:
-// RECOVER_MIN_I386-NEXT:    call void @__ubsan_handle_cfi_check_fail_minimal() #[[ATTR4:[0-9]+]], !nosanitize [[META14]]
-// RECOVER_MIN_I386-NEXT:    br label %[[CONT]], !nosanitize [[META14]]
-// RECOVER_MIN_I386:       [[CONT]]:
-// RECOVER_MIN_I386-NEXT:    call void [[TMP2]]()
-// RECOVER_MIN_I386-NEXT:    ret void
+// RECOVER_MIN_RV64-LABEL: define hidden void @g(
+// RECOVER_MIN_RV64-SAME: i32 noundef signext [[B:%.*]]) #[[ATTR0]] !type [[META16:![0-9]+]] !type [[META17:![0-9]+]] {
+// RECOVER_MIN_RV64-NEXT:  [[ENTRY:.*:]]
+// RECOVER_MIN_RV64-NEXT:    [[B_ADDR:%.*]] = alloca i32, align 4
+// RECOVER_MIN_RV64-NEXT:    [[FP:%.*]] = alloca ptr, align 8
+// RECOVER_MIN_RV64-NEXT:    store i32 [[B]], ptr [[B_ADDR]], align 4
+// RECOVER_MIN_RV64-NEXT:    [[TMP0:%.*]] = load i32, ptr [[B_ADDR]], align 4
+// RECOVER_MIN_RV64-NEXT:    [[TOBOOL:%.*]] = icmp ne i32 [[TMP0]], 0
+// RECOVER_MIN_RV64-NEXT:    [[TMP1:%.*]] = zext i1 [[TOBOOL]] to i64
+// RECOVER_MIN_RV64-NEXT:    [[COND:%.*]] = select i1 [[TOBOOL]], ptr @f, ptr @xf
+// RECOVER_MIN_RV64-NEXT:    store ptr [[COND]], ptr [[FP]], align 8
+// RECOVER_MIN_RV64-NEXT:    [[TMP2:%.*]] = load ptr, ptr [[FP]], align 8
+// RECOVER_MIN_RV64-NEXT:    [[TMP3:%.*]] = call i1 @llvm.type.test(ptr [[TMP2]], metadata !"_ZTSFvE"), !nosanitize [[META18:![0-9]+]]
+// RECOVER_MIN_RV64-NEXT:    br i1 [[TMP3]], label %[[CONT:.*]], label %[[HANDLER_CFI_CHECK_FAIL:.*]], !prof [[PROF19:![0-9]+]], !nosanitize [[META18]]
+// RECOVER_MIN_RV64:       [[HANDLER_CFI_CHECK_FAIL]]:
+// RECOVER_MIN_RV64-NEXT:    call void @__ubsan_handle_cfi_check_fail_minimal() #[[ATTR4:[0-9]+]], !nosanitize [[META18]]
+// RECOVER_MIN_RV64-NEXT:    br label %[[CONT]], !nosanitize [[META18]]
+// RECOVER_MIN_RV64:       [[CONT]]:
+// RECOVER_MIN_RV64-NEXT:    call void [[TMP2]]()
+// RECOVER_MIN_RV64-NEXT:    ret void
 //
 void g(int b) {
   void (*fp)() = b ? f : xf;
   fp();
 }
+
 //.
 // TRAP: [[META6]] = !{i64 0, !"_ZTSFvE"}
 // TRAP: [[META7]] = !{i64 0, !"_ZTSFvE.generalized"}
@@ -245,17 +246,17 @@ void g(int b) {
 // RECOVER_MIN: [[META10]] = !{}
 // RECOVER_MIN: [[PROF11]] = !{!"branch_weights", i32 1048575, i32 1}
 //.
-// PRESERVE_MIN: [[META6]] = !{i64 0, !"_ZTSFvE"}
-// PRESERVE_MIN: [[META7]] = !{i64 0, !"_ZTSFvE.generalized"}
-// PRESERVE_MIN: [[META8]] = !{i64 0, !"_ZTSFviE"}
-// PRESERVE_MIN: [[META9]] = !{i64 0, !"_ZTSFviE.generalized"}
-// PRESERVE_MIN: [[META10]] = !{}
-// PRESERVE_MIN: [[PROF11]] = !{!"branch_weights", i32 1048575, i32 1}
+// PRESERVE_MIN: [[META10]] = !{i64 0, !"_ZTSFvE"}
+// PRESERVE_MIN: [[META11]] = !{i64 0, !"_ZTSFvE.generalized"}
+// PRESERVE_MIN: [[META12]] = !{i64 0, !"_ZTSFviE"}
+// PRESERVE_MIN: [[META13]] = !{i64 0, !"_ZTSFviE.generalized"}
+// PRESERVE_MIN: [[META14]] = !{}
+// PRESERVE_MIN: [[PROF15]] = !{!"branch_weights", i32 1048575, i32 1}
 //.
-// RECOVER_MIN_I386: [[META10]] = !{i64 0, !"_ZTSFvE"}
-// RECOVER_MIN_I386: [[META11]] = !{i64 0, !"_ZTSFvE.generalized"}
-// RECOVER_MIN_I386: [[META12]] = !{i64 0, !"_ZTSFviE"}
-// RECOVER_MIN_I386: [[META13]] = !{i64 0, !"_ZTSFviE.generalized"}
-// RECOVER_MIN_I386: [[META14]] = !{}
-// RECOVER_MIN_I386: [[PROF15]] = !{!"branch_weights", i32 1048575, i32 1}
+// RECOVER_MIN_RV64: [[META14]] = !{i64 0, !"_ZTSFvE"}
+// RECOVER_MIN_RV64: [[META15]] = !{i64 0, !"_ZTSFvE.generalized"}
+// RECOVER_MIN_RV64: [[META16]] = !{i64 0, !"_ZTSFviE"}
+// RECOVER_MIN_RV64: [[META17]] = !{i64 0, !"_ZTSFviE.generalized"}
+// RECOVER_MIN_RV64: [[META18]] = !{}
+// RECOVER_MIN_RV64: [[PROF19]] = !{!"branch_weights", i32 1048575, i32 1}
 //.
diff --git a/clang/test/CodeGenCXX/cfi-vcall-trap-recover-runtime.cpp b/clang/test/CodeGenCXX/cfi-vcall-trap-recover-runtime.cpp
index f6d9e6f6dd079..2f9c2e31ed803 100644
--- a/clang/test/CodeGenCXX/cfi-vcall-trap-recover-runtime.cpp
+++ b/clang/test/CodeGenCXX/cfi-vcall-trap-recover-runtime.cpp
@@ -11,10 +11,7 @@
 
 // RUN: %clang_cc1 -fsanitize=cfi-vcall -fno-sanitize-trap=cfi-vcall -fsanitize-recover=cfi-vcall -fsanitize-minimal-runtime -flto -fvisibility=hidden -triple x86_64-unknown-linux -fwhole-program-vtables -fsanitize-handler-preserve-all-regs -emit-llvm -o - %s | FileCheck --check-prefix=PRESERVE_MIN %s
 
-// RUN: %clang_cc1 -fsanitize=cfi-vcall -fno-sanitize-trap=cfi-vcall -fsanitize-recover=cfi-vcall -fsanitize-minimal-runtime -flto -fvisibility=hidden -triple i386-unknown-linux -fwhole-program-vtables -fsanitize-handler-preserve-all-regs -emit-llvm -o - %s | FileCheck --check-prefix=RECOVER_MIN_I386 %s
-
-// RUN: %clang_cc1 -fsanitize=cfi-vcall -fno-sanitize-trap=cfi-vcall -fsanitize-minimal-runtime -flto -fvisibility=hidden -triple x86_64-unknown-linux -fwhole-program-vtables -fsanitize-handler-preserve-all-regs -emit-llvm -o - %s | FileCheck --check-prefix=ABORT_MIN %s
-
+// RUN: %clang -fsanitize=cfi-vcall -fno-sanitize-trap=cfi-vcall -fsanitize-recover=cfi-vcall -fsanitize-minimal-runtime -flto -fvisibility=hidden -target i386-unknown-linux -fwhole-program-vtables -fsanitize-handler-preserve-all-regs -emit-llvm -S -o - %s | FileCheck --check-prefix=RECOVER_MIN_I386 %s
 
 struct S1 {
   virtual void f();
@@ -144,12 +141,12 @@ struct S1 {
 // RECOVER_MIN_I386-NEXT:    store ptr [[S1]], ptr [[S1_ADDR]], align 4
 // RECOVER_MIN_I386-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[S1_ADDR]], align 4
 // RECOVER_MIN_I386-NEXT:    [[VTABLE:%.*]] = load ptr, ptr [[TMP0]], align 4
-// RECOVER_MIN_I386-NEXT:    [[TMP1:%.*]] = call i1 @llvm.type.test(ptr [[VTABLE]], metadata !"_ZTS2S1"), !nosanitize [[META6:![0-9]+]]
-// RECOVER_MIN_I386-NEXT:    [[TMP2:%.*]] = call i1 @llvm.type.test(ptr [[VTABLE]], metadata !"all-vtables"), !nosanitize [[META6]]
-// RECOVER_MIN_I386-NEXT:    br i1 [[TMP1]], label %[[CONT:.*]], label %[[HANDLER_CFI_CHECK_FAIL:.*]], !prof [[PROF7:![0-9]+]], !nosanitize [[META6]]
+// RECOVER_MIN_I386-NEXT:    [[TMP1:%.*]] = call i1 @llvm.type.test(ptr [[VTABLE]], metadata !"_ZTS2S1"), !nosanitize [[META10:![0-9]+]]
+// RECOVER_MIN_I386-NEXT:    [[TMP2:%.*]] = call i1 @llvm.type.test(ptr [[VTABLE]], metadata !"all-vtables"), !nosanitize [[META10]]
+// RECOVER_MIN_I386-NEXT:    br i1 [[TMP1]], label %[[CONT:.*]], label %[[HANDLER_CFI_CHECK_FAIL:.*]], !prof [[PROF11:![0-9]+]], !nosanitize [[META10]]
 // RECOVER_MIN_I386:       [[HANDLER_CFI_CHECK_FAIL]]:
-// RECOVER_MIN_I386-NEXT:    call void @__ubsan_handle_cfi_check_fail_minimal() #[[ATTR3:[0-9]+]], !nosanitize [[META6]]
-// RECOVER_MIN_I386-NEXT:    br label %[[CONT]], !nosanitize [[META6]]
+// RECOVER_MIN_I386-NEXT:    call void @__ubsan_handle_cfi_check_fail_minimal() #[[ATTR3:[0-9]+]], !nosanitize [[META10]]
+// RECOVER_MIN_I386-NEXT:    br label %[[CONT]], !nosanitize [[META10]]
 // RECOVER_MIN_I386:       [[CONT]]:
 // RECOVER_MIN_I386-NEXT:    [[VFN:%.*]] = getelementptr inbounds ptr, ptr [[VTABLE]], i64 0
 // RECOVER_MIN_I386-NEXT:    [[TMP3:%.*]] = load ptr, ptr [[VFN]], align 4
@@ -178,6 +175,6 @@ void s1f(S1 *s1) {
 // PRESERVE_MIN: [[META5]] = !{}
 // PRESERVE_MIN: [[PROF6]] = !{!"branch_weights", i32 1048575, i32 1}
 //.
-// RECOVER_MIN_I386: [[META6]] = !{}
-// RECOVER_MIN_I386: [[PROF7]] = !{!"branch_weights", i32 1048575, i32 1}
+// RECOVER_MIN_I386: [[META10]] = !{}
+// RECOVER_MIN_I386: [[PROF11]] = !{!"branch_weights", i32 1048575, i32 1}
 //.

@fmayer fmayer added the skip-precommit-approval PR for CI feedback, not intended for review label Nov 26, 2025
@fmayer fmayer enabled auto-merge (squash) November 26, 2025 01:46
Created using spr 1.3.7
@fmayer fmayer disabled auto-merge November 26, 2025 01:55
@fmayer fmayer closed this Nov 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clang Clang issues not falling into any other category skip-precommit-approval PR for CI feedback, not intended for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants