[llvm] [PGOVerify] Add end-to-end IPGOVerifier infrastructure, validations, and function filtering (PR #196295)

via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 10 00:06:32 PDT 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Linux-->
# :penguin: Linux x64 Test Results

* 152944 tests passed
* 3312 tests skipped
* 2 tests failed

## Failed Tests
(click on a test name to see its output)

### Clang
<details>
<summary>Clang.CodeGen/cfi-check-fail-nomerge.c</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 8
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/24/include -nostdsysteminc -O3 -triple x86_64-unknown-linux -fsanitize-cfi-cross-dso      -fsanitize=cfi-icall,cfi-nvcall,cfi-vcall,cfi-unrelated-cast,cfi-derived-cast      -fsanitize-trap=cfi-icall,cfi-nvcall      -fsanitize-merge=cfi-icall,cfi-nvcall      -emit-llvm -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail-nomerge.c | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail-nomerge.c --check-prefix=MERGE
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/24/include -nostdsysteminc -O3 -triple x86_64-unknown-linux -fsanitize-cfi-cross-dso -fsanitize=cfi-icall,cfi-nvcall,cfi-vcall,cfi-unrelated-cast,cfi-derived-cast -fsanitize-trap=cfi-icall,cfi-nvcall -fsanitize-merge=cfi-icall,cfi-nvcall -emit-llvm -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail-nomerge.c
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail-nomerge.c --check-prefix=MERGE
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail-nomerge.c:53:16: error: MERGE-SAME: expected string not found in input
# | // MERGE-SAME: ptr noundef [[TMP0:%.*]], ptr noundef [[TMP1:%.*]]) #[[ATTR0]] {
# |                ^
# | <stdin>:29:47: note: scanning from here
# | define weak_odr hidden void @__cfi_check_fail(ptr noundef %0, ptr noundef %1) #2 {
# |                                               ^
# | <stdin>:29:47: note: with "ATTR0" equal to "0"
# | define weak_odr hidden void @__cfi_check_fail(ptr noundef %0, ptr noundef %1) #2 {
# |                                               ^
# | <stdin>:29:47: note: pattern attempts to capture variables: "TMP0", "TMP1"
# | define weak_odr hidden void @__cfi_check_fail(ptr noundef %0, ptr noundef %1) #2 {
# |                                               ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail-nomerge.c:94:88: error: undefined variable: PROF9
# | // MERGE-NEXT: br i1 [[DOTNOT_I]], label %[[TRAP_I:.*]], label %[[CONT_I:.*]], !prof [[PROF9]], !nosanitize [[META7]]
# |                                                                                        ^
# | <stdin>:81:49: note: with "DOTNOT_I" equal to "%.not.i"
# |  %.not.i = icmp eq ptr %2, null, !nosanitize !11
# |                                                 ^
# | <stdin>:81:49: note: with "META7" equal to "!11"
# |  %.not.i = icmp eq ptr %2, null, !nosanitize !11
# |                                                 ^
# | <stdin>:81:49: note: pattern attempts to capture variables: "CONT_I", "TRAP_I"
# |  %.not.i = icmp eq ptr %2, null, !nosanitize !11
# |                                                 ^
# | <stdin>:82:14: note: possible intended match here
# |  br i1 %.not.i, label %trap.i, label %cont.i, !prof !13, !nosanitize !11
# |              ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail-nomerge.c
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |           24: declare i1 @llvm.type.test(ptr, metadata) #1 
# |           25:  
# |           26: declare void @__cfi_slowpath(i64, ptr) local_unnamed_addr 
# |           27:  
# |           28: ; Function Attrs: approxprofile nounwind 
# |           29: define weak_odr hidden void @__cfi_check_fail(ptr noundef %0, ptr noundef %1) #2 { 
# | same:53'0                                                  {                                       search range start (exclusive)
# | same:53'1                                                                                          error: no match found in search range
# | same:53'2                                                                                          with "ATTR0" equal to "0"
# | same:53'3                                                                                          pattern attempts to capture variables: "TMP0", "TMP1"
# |           30: entry: 
# |           31:  %.not = icmp eq ptr %0, null, !nosanitize !11 
# |           32:  br i1 %.not, label %trap, label %cont, !prof !13, !nosanitize !11 
# |           33:  
# |           34: trap: ; preds = %cont, %cont, %entry 
# |            .
# |            .
# |            .
# |           74:  
# |           75: ; Function Attrs: noreturn nounwind uwtable 
# |           76: declare void @__ubsan_handle_cfi_check_fail_abort(i64, i64, i64) local_unnamed_addr #4 
# |           77:  
# |           78: ; Function Attrs: approxprofile nounwind 
# |           79: define weak void @__cfi_check(i64 noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #5 align 4096 { 
# | same:53'4                                   }                                                                                    search range end (exclusive)
# |           80: entry: 
# |           81:  %.not.i = icmp eq ptr %2, null, !nosanitize !11 
# | next:94'0                                                    {   search range start (exclusive)
# | next:94'1                                                        error: match failed for invalid pattern
# | next:94'2                                                        undefined variable: PROF9
# | next:94'3                                                        with "DOTNOT_I" equal to "%.not.i"
# | next:94'4                                                        with "META7" equal to "!11"
# | next:94'5                                                        pattern attempts to capture variables: "CONT_I", "TRAP_I"
# |           82:  br i1 %.not.i, label %trap.i, label %cont.i, !prof !13, !nosanitize !11 
# | next:94'6                  ?                                                             possible intended match
# |           83:  
# |           84: trap.i: ; preds = %cont.i, %cont.i, %entry 
# |           85:  tail call void @llvm.ubsantrap(i8 2) #7, !nosanitize !11 
# |           86:  unreachable, !nosanitize !11 
# |           87:  
# |            .
# |            .
# |            .
# |          145: !9 = !{i64 0, !"_ZTSFvPvE.generalized"} 
# |          146: !10 = !{i64 0, i64 2451761621477796417} 
# |          147: !11 = !{} 
# |          148: !12 = !{!"branch_weights", i32 1048575, i32 1} 
# |          149: !13 = !{!"branch_weights", i32 1, i32 1048575} 
# |          150: !14 = !{!"branch_weights", i32 -20480, i32 4096, i32 4095, i32 4095, i32 4095, i32 4095} 
# | next:94'7                                                                                              } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Clang.CodeGen/cfi-check-fail2-nomerge.c</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 4
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/24/include -nostdsysteminc -triple x86_64-unknown-linux -O3 -fsanitize-cfi-cross-dso      -fsanitize=cfi-vcall      -emit-llvm -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail2-nomerge.c | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail2-nomerge.c --check-prefix=NO-MERGE
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/24/include -nostdsysteminc -triple x86_64-unknown-linux -O3 -fsanitize-cfi-cross-dso -fsanitize=cfi-vcall -emit-llvm -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail2-nomerge.c
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail2-nomerge.c --check-prefix=NO-MERGE
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail2-nomerge.c:87:19: error: NO-MERGE-SAME: expected string not found in input
# | // NO-MERGE-SAME: ptr noundef [[TMP0:%.*]], ptr noundef [[TMP1:%.*]]) #[[ATTR0]] {
# |                   ^
# | <stdin>:16:47: note: scanning from here
# | define weak_odr hidden void @__cfi_check_fail(ptr noundef %0, ptr noundef %1) #1 {
# |                                               ^
# | <stdin>:16:47: note: with "ATTR0" equal to "0"
# | define weak_odr hidden void @__cfi_check_fail(ptr noundef %0, ptr noundef %1) #1 {
# |                                               ^
# | <stdin>:16:47: note: pattern attempts to capture variables: "TMP0", "TMP1"
# | define weak_odr hidden void @__cfi_check_fail(ptr noundef %0, ptr noundef %1) #1 {
# |                                               ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail2-nomerge.c:117:80: error: undefined variable: META6
# | // NO-MERGE-NEXT: [[DOTNOT_I:%.*]] = icmp eq ptr [[TMP2]], null, !nosanitize [[META6]]
# |                                                                                ^
# | <stdin>:58:7: note: with "TMP2" equal to "%2"
# | entry:
# |       ^
# | <stdin>:58:7: note: pattern attempts to capture variables: "DOTNOT_I"
# | entry:
# |       ^
# | <stdin>:59:6: note: possible intended match here
# |  %.not.i = icmp eq ptr %2, null, !nosanitize !7
# |      ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/cfi-check-fail2-nomerge.c
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |            11:  tail call void %f() #6 
# |            12:  ret void 
# |            13: } 
# |            14:  
# |            15: ; Function Attrs: approxprofile nounwind 
# |            16: define weak_odr hidden void @__cfi_check_fail(ptr noundef %0, ptr noundef %1) #1 { 
# | same:87'0                                                   {                                       search range start (exclusive)
# | same:87'1                                                                                           error: no match found in search range
# | same:87'2                                                                                           with "ATTR0" equal to "0"
# | same:87'3                                                                                           pattern attempts to capture variables: "TMP0", "TMP1"
# |            17: entry: 
# |            18:  %.not = icmp eq ptr %0, null, !nosanitize !7 
# |            19:  br i1 %.not, label %trap, label %cont, !prof !8, !nosanitize !7 
# |            20:  
# |            21: trap: ; preds = %cont, %cont, %cont, %cont, %entry 
# |             .
# |             .
# |             .
# |            52:  
# |            53: ; Function Attrs: noreturn nounwind uwtable 
# |            54: declare void @__ubsan_handle_cfi_check_fail_abort(i64, i64, i64) local_unnamed_addr #4 
# |            55:  
# |            56: ; Function Attrs: approxprofile nounwind 
# |            57: define weak void @__cfi_check(i64 noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #5 align 4096 { 
# | same:87'4                                    }                                                                                    search range end (exclusive)
# |            58: entry: 
# | next:117'0          {   search range start (exclusive)
# | next:117'1              error: match failed for invalid pattern
# | next:117'2              undefined variable: META6
# | next:117'3              with "TMP2" equal to "%2"
# | next:117'4              pattern attempts to capture variables: "DOTNOT_I"
# |            59:  %.not.i = icmp eq ptr %2, null, !nosanitize !7 
# | next:117'5          ?                                            possible intended match
# |            60:  br i1 %.not.i, label %trap.i, label %cont.i, !prof !8, !nosanitize !7 
# |            61:  
# |            62: trap.i: ; preds = %cont.i, %cont.i, %cont.i, %cont.i, %entry 
# |            63:  tail call void @llvm.ubsantrap(i8 2) #7, !nosanitize !7 
# |            64:  unreachable, !nosanitize !7 
# |             .
# |             .
# |             .
# |           106: !4 = !{!"int", !5, i64 0} 
# |           107: !5 = !{!"omnipotent char", !6, i64 0} 
# |           108: !6 = !{!"Simple C/C++ TBAA"} 
# |           109: !7 = !{} 
# |           110: !8 = !{!"branch_weights", i32 1, i32 1048575} 
# |           111: !9 = !{!"branch_weights", i32 -20480, i32 4096, i32 4095, i32 4095, i32 4095, i32 4095} 
# | next:117'6                                                                                             } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

https://github.com/llvm/llvm-project/pull/196295


More information about the llvm-commits mailing list