[clang] [clang-repl] Don't check printf output order in pretty-print.cpp (PR #228349)

Jonas Rembser via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 2 00:23:23 PDT 2026


https://github.com/guitargeek created https://github.com/llvm/llvm-project/pull/228349

The test added in #<PR of the void-expression fix> checked the output of a JIT'd printf() with CHECK-NEXT between lines that clang-repl prints itself. The C runtime buffers the JIT'd code's stdout separately, so the order is not guaranteed: on llvm-clang-x86_64-sie-win, "foo()" came after all of clang-repl's output.

Remove that case. The case before it already checks that a void call without a semicolon is executed (through the value of a variable it sets), and so does the unit test ValueOfVoidCallExecutesTheCall.

Assisted-by: Claude Opus 5.5

Follows up on #228334, which introduced failures on Windows:

```
The Buildbot has detected a new failure on builder llvm-clang-x86_64-sie-win while building clang.

Full details are available at:
    https://lab.llvm.org/buildbot/#/builders/46/builds/42212

Worker for this Build: sie-win-worker
Blamelist:
    Frederik Harwath [<frederik.harwath at amd.com>](mailto:frederik.harwath at amd.com),
    Jonas Rembser [<jonas.rembser at cern.ch>](mailto:jonas.rembser at cern.ch),
    Lang Hames [<lhames at gmail.com>](mailto:lhames at gmail.com)

BUILD FAILED: failed test (failure)

Step 7 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'Clang :: Interpreter/pretty-print.cpp' FAILED ********************
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
z:\b\llvm-clang-x86_64-sie-win\build\bin\clang-repl.exe "int i = 10;" 'extern "C" int printf(const char*,...);'             'auto r1 = printf("i = %d\n", i);' | z:\b\llvm-clang-x86_64-sie-win\build\bin\filecheck.exe --check-prefix=CHECK-DRIVER Z:\b\llvm-clang-x86_64-sie-win\llvm-project\clang\test\Interpreter\pretty-print.cpp
# executed command: 'z:\b\llvm-clang-x86_64-sie-win\build\bin\clang-repl.exe' 'int i = 10;' 'extern "C" int printf(const char*,...);' 'auto r1 = printf("i = %d\n", i);'
# note: command had no output on stdout or stderr
# executed command: 'z:\b\llvm-clang-x86_64-sie-win\build\bin\filecheck.exe' --check-prefix=CHECK-DRIVER 'Z:\b\llvm-clang-x86_64-sie-win\llvm-project\clang\test\Interpreter\pretty-print.cpp'
# note: command had no output on stdout or stderr
# RUN: at line 6
cat Z:\b\llvm-clang-x86_64-sie-win\llvm-project\clang\test\Interpreter\pretty-print.cpp | z:\b\llvm-clang-x86_64-sie-win\build\bin\clang-repl.exe -Xcc -std=c++11 -Xcc -fno-delayed-template-parsing | z:\b\llvm-clang-x86_64-sie-win\build\bin\filecheck.exe Z:\b\llvm-clang-x86_64-sie-win\llvm-project\clang\test\Interpreter\pretty-print.cpp
# executed command: cat 'Z:\b\llvm-clang-x86_64-sie-win\llvm-project\clang\test\Interpreter\pretty-print.cpp'
# note: command had no output on stdout or stderr
# executed command: 'z:\b\llvm-clang-x86_64-sie-win\build\bin\clang-repl.exe' -Xcc -std=c++11 -Xcc -fno-delayed-template-parsing
# note: command had no output on stdout or stderr
# executed command: 'z:\b\llvm-clang-x86_64-sie-win\build\bin\filecheck.exe' 'Z:\b\llvm-clang-x86_64-sie-win\llvm-project\clang\test\Interpreter\pretty-print.cpp'
# .---command stderr------------
# | Z:\b\llvm-clang-x86_64-sie-win\llvm-project\clang\test\Interpreter\pretty-print.cpp:101:16: error: CHECK-NEXT: is not on the line after the previous match
# | // CHECK-NEXT: foo()
# |                ^
# | <stdin>:25:1: note: 'next' match was here
# | foo()
# | ^
# | <stdin>:23:10: note: previous match ended here
# | (int) 100
# |          ^
# | <stdin>:24:1: note: non-matching line after previous match is here
# | clang-repl> clang-repl... clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-re
 pl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> 
# | ^
# | 
# | Input file: <stdin>
# | Check file: Z:\b\llvm-clang-x86_64-sie-win\llvm-project\clang\test\Interpreter\pretty-print.cpp
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             1: (const char[3]) "ab" 
# | check:10       ^~~~~~~~~~~~~~~~~~~~
# |             2: (int) 123456 
# | next:13        ^~~~~~~~~~~~
# |             3: (char[2]) { '1', 'a' } 
# | next:16        ^~~~~~~~~~~~~~~~~~~~~~
# |             4: (char[3]) "1a" 
# | next:19        ^~~~~~~~~~~~~~
# |             5: (char[2][3][1]) { { { 'a' }, { 'b' }, { 'c' } }, { { 'd' }, { 'e' }, { 'f' } } } 
# | check:22       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             6: (S3) @0x1cf15f38540 
...

Sincerely,
LLVM Buildbot
```

>From 8fae4e44c7efccbf76ba5f04cc148ade121e1690 Mon Sep 17 00:00:00 2001
From: Jonas Rembser <jonas.rembser at cern.ch>
Date: Fri, 2 Oct 2026 07:04:01 +0000
Subject: [PATCH] [clang-repl] Don't check printf output order in
 pretty-print.cpp

The test added in #<PR of the void-expression fix> checked the output of
a JIT'd printf() with CHECK-NEXT between lines that clang-repl prints
itself. The C runtime buffers the JIT'd code's stdout separately, so the
order is not guaranteed: on llvm-clang-x86_64-sie-win, "foo()" came after
all of clang-repl's output.

Remove that case. The case before it already checks that a void call
without a semicolon is executed (through the value of a variable it
sets), and so does the unit test ValueOfVoidCallExecutesTheCall.

Assisted-by: Claude Opus 5.5
---
 clang/test/Interpreter/pretty-print.cpp | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/clang/test/Interpreter/pretty-print.cpp b/clang/test/Interpreter/pretty-print.cpp
index ed430d2db6d22..777d809873203 100644
--- a/clang/test/Interpreter/pretty-print.cpp
+++ b/clang/test/Interpreter/pretty-print.cpp
@@ -96,9 +96,6 @@ void set_void_x() { void_x = 100; }
 set_void_x()
 void_x
 // CHECK-NEXT: (int) 100
-void print_foo() { printf("foo()\n"); }
-print_foo()
-// CHECK-NEXT: foo()
 
 // int i = 12;
 // int &iref = i;



More information about the cfe-commits mailing list