[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------------
# | [1mZ:\b\llvm-clang-x86_64-sie-win\llvm-project\clang\test\Interpreter\pretty-print.cpp:101:16: [0m[0;1;31merror: [0m[1mCHECK-NEXT: is not on the line after the previous match
[0m# | [1m[0m// CHECK-NEXT: foo()
# | [0;1;32m ^
[0m# | [0;1;32m[0m[1m<stdin>:25:1: [0m[0;1;30mnote: [0m[1m'next' match was here
[0m# | [1m[0mfoo()
# | [0;1;32m^
[0m# | [0;1;32m[0m[1m<stdin>:23:10: [0m[0;1;30mnote: [0m[1mprevious match ended here
[0m# | [1m[0m(int) 100
# | [0;1;32m ^
[0m# | [0;1;32m[0m[1m<stdin>:24:1: [0m[0;1;30mnote: [0m[1mnon-matching line after previous match is here
[0m# | [1m[0mclang-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>
# | [0;1;32m^
[0m# | [0;1;32m[0m
# | 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:
# | <<<<<<
# | [1m[0m[0;1;90m 1: [0m[1m[0;1;46m[0m(const char[3]) "ab"[0;1;46m [0m
# | [0;1;32mcheck:10 ^~~~~~~~~~~~~~~~~~~~
[0m# | [0;1;32m[0m[0;1;90m 2: [0m[1m[0;1;46m[0m(int) 123456[0;1;46m [0m
# | [0;1;32mnext:13 ^~~~~~~~~~~~
[0m# | [0;1;32m[0m[0;1;90m 3: [0m[1m[0;1;46m[0m(char[2]) { '1', 'a' }[0;1;46m [0m
# | [0;1;32mnext:16 ^~~~~~~~~~~~~~~~~~~~~~
[0m# | [0;1;32m[0m[0;1;90m 4: [0m[1m[0;1;46m[0m(char[3]) "1a"[0;1;46m [0m
# | [0;1;32mnext:19 ^~~~~~~~~~~~~~
[0m# | [0;1;32m[0m[0;1;90m 5: [0m[1m[0;1;46m[0m(char[2][3][1]) { { { 'a' }, { 'b' }, { 'c' } }, { { 'd' }, { 'e' }, { 'f' } } }[0;1;46m [0m
# | [0;1;32mcheck:22 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[0m# | [0;1;32m[0m[0;1;90m 6: [0m[1m[0;1;46m[0m(S3) @0x1cf15f38540[0;1;46m [0m
...
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