================

----------------
jinhuang1102 wrote:

I have added `--include-generated-funcs` as suggested. But the upstream CI now 
fails on `coro-noop.ll` with the following error:
```
# .---command stderr------------
  # | 
/__w/llvm-project/llvm-project/llvm/test/Transforms/Coroutines/coro-noop.ll:30:15:
 error: CHECK-SAME: expected string not found in input
  # | ; CHECK-SAME: ) !prof [[PROF5:![0-9]+]] {
  # |               ^
  # | <stdin>:8:18: note: scanning from here
  # | define ptr @noop() {
  # |                  ^
  # | <stdin>:13:25: note: possible intended match here
  # | ; Function Attrs: nounwind memory(none)
  # |                         ^
  # | 
/__w/llvm-project/llvm-project/llvm/test/Transforms/Coroutines/coro-noop.ll:48:12:
 error: undefined variable: PROF5
  # | ; CHECK: [[PROF5]] = !{!"function_entry_count", i64 1000}
  # |            ^
  # | <stdin>:34:2: note: possible intended match here
  # | !8 = !{!"function_entry_count", i64 0}
  # |  ^
  # | 
  # | Input file: <stdin>
  # | Check file: 
/__w/llvm-project/llvm-project/llvm/test/Transforms/Coroutines/coro-noop.ll
  # | 
  # | -dump-input=help explains the following input dump.
  # | 
  # | Input was:
  # | <<<<<<
  # |             1: ; ModuleID = '<stdin>' 
  # |             2: source_filename = "<stdin>" 
  # |             3:  
  # |             4: %NoopCoro.Frame = type { ptr, ptr } 
  # |             5:  
  # |             6: @NoopCoro.Frame.Const = private constant %NoopCoro.Frame { 
ptr @__NoopCoro_ResumeDestroy, ptr @__NoopCoro_ResumeDestroy }, 
no_sanitize_address, no_sanitize_hwaddress 
  # |             7:  
  # |             8: define ptr @noop() { 
  # | same:30'0                      {      search range start (exclusive)
  # | same:30'1                             error: no match found in search 
range
  # |             9: entry: 
  # |            10:  ret ptr @NoopCoro.Frame.Const 
  # |            11: } 
  # |            12:  
  # |            13: ; Function Attrs: nounwind memory(none) 
  # | same:30'2                              ?                 possible 
intended match
  # |            14: declare ptr @llvm.coro.noop() #0 
  # |            15:  
  # |            16: define internal void @__NoopCoro_ResumeDestroy(ptr %0) 
!dbg !5 !prof !8 { 
  # | same:30'3                                                     }           
                 search range end (exclusive)
  # |            17: entry: 
  # |            18:  ret void 
  # |            19: } 
  # |            20:  
  # |            21: attributes #0 = { nounwind memory(none) } 
  # |            22:  
  # |            23: !llvm.dbg.cu = !{!0} 
  # |            24: !llvm.module.flags = !{!3, !4} 
  # |            25:  
  # |            26: !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: 
!1, producer: "hand-written", isOptimized: false, runtimeVersion: 0, 
emissionKind: FullDebug, enums: !2) 
  # |            27: !1 = !DIFile(filename: "<stdin>", directory: "") 
  # |            28: !2 = !{} 
  # |            29: !3 = !{i32 2, !"Dwarf Version", i32 4} 
  # |            30: !4 = !{i32 2, !"Debug Info Version", i32 3} 
  # | check:48'0                                               {   search range 
start (exclusive)
  # | check:48'1                                                   error: match 
failed for invalid pattern
  # | check:48'2                                                   undefined 
variable: PROF5
  # |            31: !5 = distinct !DISubprogram(name: 
"__NoopCoro_ResumeDestroy", linkageName: "__NoopCoro_ResumeDestroy", scope: 
null, file: !1, type: !6, flags: DIFlagArtificial, spFlags: DISPFlagDefinition, 
unit: !0) 
  # |            32: !6 = !DISubroutineType(types: !7) 
  # |            33: !7 = !{null, null} 
  # |            34: !8 = !{!"function_entry_count", i64 0} 
  # | check:48'3      ?                                       possible intended 
match
  # | check:48'4                                            } search range end 
(exclusive)
  # | >>>>>>
  # `-----------------------------
  # error: command failed with exit status: 1
```

Strangely, this test passes locally in my environment, even when I configured 
CMake with `-DLLVM_ENABLE_ASSERTIONS=Off` to match a potential release-build 
behavior:
```
cmake -GNinja ../llvm -DCMAKE_C_COMPILER=clang-19 
-DCMAKE_CXX_COMPILER=clang++-19 -DCMAKE_BUILD_TYPE=Release 
-DLLVM_ENABLE_ASSERTIONS=Off -DCMAKE_EXPORT_COMPILE_COMMANDS=On 
-DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' 
-DLLVM_LIT_ARGS="--exclude-xfail" -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON 
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON 
-DCMAKE_C_COMPILER_TARGET=x86_64-unknown-linux-gnu
```

The failure is because `noop()` function in upstream `opt` output doesn't have 
`!porf` metadata, while in my local `opt` output it has `!prof !5`.

Since my local workspace is clean and fully pushed, I suspect there might be 
some environmental or implicit CMake configuration differences that affect how 
PGO metadata is attached to this no-op coroutine.

Any insights on what might cause this divergence would be greatly appreciated!

https://github.com/llvm/llvm-project/pull/184466
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to