Skip to content

Conversation

@tbaederr
Copy link
Contributor

One iteration of this loop might've already fixed up the pointers of coming globals, so check for that explicitly.

Fixes #164151

One iteration of this loop might've already fixed up the pointers of
coming globals, so check for that explicitly.
@llvmbot llvmbot added clang Clang issues not falling into any other category clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:bytecode Issues for the clang bytecode constexpr interpreter labels Oct 20, 2025
@llvmbot
Copy link
Member

llvmbot commented Oct 20, 2025

@llvm/pr-subscribers-clang

Author: Timm Baeder (tbaederr)

Changes

One iteration of this loop might've already fixed up the pointers of coming globals, so check for that explicitly.

Fixes #164151


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

2 Files Affected:

  • (modified) clang/lib/AST/ByteCode/Program.cpp (+4-1)
  • (modified) clang/test/AST/ByteCode/extern.cpp (+4-2)
diff --git a/clang/lib/AST/ByteCode/Program.cpp b/clang/lib/AST/ByteCode/Program.cpp
index e653782f61fdf..e0b2852f0e906 100644
--- a/clang/lib/AST/ByteCode/Program.cpp
+++ b/clang/lib/AST/ByteCode/Program.cpp
@@ -226,7 +226,10 @@ UnsignedOrNone Program::createGlobal(const ValueDecl *VD, const Expr *Init) {
         Globals[PIdx] = NewGlobal;
         // All pointers pointing to the previous extern decl now point to the
         // new decl.
-        RedeclBlock->movePointersTo(NewGlobal->block());
+        // A previous iteration might've already fixed up the pointers for this
+        // global.
+        if (RedeclBlock != NewGlobal->block())
+          RedeclBlock->movePointersTo(NewGlobal->block());
       }
     }
     PIdx = *Idx;
diff --git a/clang/test/AST/ByteCode/extern.cpp b/clang/test/AST/ByteCode/extern.cpp
index a616269911a7e..c3215931d41f8 100644
--- a/clang/test/AST/ByteCode/extern.cpp
+++ b/clang/test/AST/ByteCode/extern.cpp
@@ -1,9 +1,11 @@
 // RUN: %clang_cc1 -fexperimental-new-constant-interpreter -verify=both,expected %s
-// RUN: %clang_cc1 -verify=both,ref %s
-
+// RUN: %clang_cc1                                         -verify=both,ref      %s
 
 // both-no-diagnostics
 
+extern const double Num;
+extern const double Num = 12;
+
 extern const int E;
 constexpr int getE() {
   return E;

@tbaederr tbaederr merged commit 7b0c51a into llvm:main Oct 20, 2025
14 checks passed
@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 20, 2025

LLVM Buildbot has detected a new failure on builder llvm-clang-x86_64-sie-ubuntu-fast running on sie-linux-worker while building clang at step 6 "test-build-unified-tree-check-all".

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

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'lld :: ELF/lto/inline-asm.ll' FAILED ********************
Exit Code: 250

Command Output (stdout):
--
# RUN: at line 2
/home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/bin/llvm-as /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/lld/test/ELF/lto/inline-asm.ll -o /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/tools/lld/test/ELF/lto/Output/inline-asm.ll.tmp.o
# executed command: /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/bin/llvm-as /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/lld/test/ELF/lto/inline-asm.ll -o /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/tools/lld/test/ELF/lto/Output/inline-asm.ll.tmp.o
# note: command had no output on stdout or stderr
# RUN: at line 3
/home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/bin/ld.lld /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/tools/lld/test/ELF/lto/Output/inline-asm.ll.tmp.o -o /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/tools/lld/test/ELF/lto/Output/inline-asm.ll.tmp.so -shared
# executed command: /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/bin/ld.lld /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/tools/lld/test/ELF/lto/Output/inline-asm.ll.tmp.o -o /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/tools/lld/test/ELF/lto/Output/inline-asm.ll.tmp.so -shared
# .---command stderr------------
# | terminate called after throwing an instance of 'std::system_error'
# |   what():  Resource temporarily unavailable
# `-----------------------------
# error: command failed with exit status: 250

--

********************


@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 20, 2025

LLVM Buildbot has detected a new failure on builder flang-x86_64-windows running on minipc-ryzen-win while building clang at step 7 "test-build-unified-tree-check-flang".

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

Here is the relevant piece of the build log for the reference
Step 7 (test-build-unified-tree-check-flang) failure: test (failure)
Statistics zeroed
2.186 [36/1/1] Generating VCSRevision.h, __FakeVCSRevision.h
5.175 [1/2/2] Linking CXX executable tools\flang\unittests\Optimizer\FlangOptimizerTests.exe
7.784 [1/1/3] Linking CXX executable tools\flang\unittests\Frontend\FlangFrontendTests.exe
FAILED: [code=4294967295] tools/flang/unittests/Frontend/FlangFrontendTests.exe 
C:\Windows\system32\cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_exe --msvc-ver=1944 --intdir=tools\flang\unittests\Frontend\CMakeFiles\FlangFrontendTests.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\mt.exe --manifests  -- C:\PROGRA~1\MICROS~2\2022\COMMUN~1\VC\Tools\MSVC\1444~1.352\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\FlangFrontendTests.rsp  /out:tools\flang\unittests\Frontend\FlangFrontendTests.exe /implib:tools\flang\unittests\Frontend\FlangFrontendTests.lib /pdb:tools\flang\unittests\Frontend\FlangFrontendTests.pdb /version:0.0 /machine:x64 /STACK:10000000 /INCREMENTAL:NO /subsystem:console && cd ."
LINK: command "C:\PROGRA~1\MICROS~2\2022\COMMUN~1\VC\Tools\MSVC\1444~1.352\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\FlangFrontendTests.rsp /out:tools\flang\unittests\Frontend\FlangFrontendTests.exe /implib:tools\flang\unittests\Frontend\FlangFrontendTests.lib /pdb:tools\flang\unittests\Frontend\FlangFrontendTests.pdb /version:0.0 /machine:x64 /STACK:10000000 /INCREMENTAL:NO /subsystem:console /MANIFEST:EMBED,ID=1" failed (exit code 1190) with the following output:
LLVMObject.lib(COFFObjectFile.cpp.obj) : fatal error LNK1190: invalid fixup found, type 0x28EC
ninja: build stopped: subcommand failed.
Cache directory:    C:\Users\buildbot-worker\AppData\Local\ccache
Config file:        C:\Users\buildbot-worker\AppData\Local\ccache\ccache.conf
System config file: C:\ProgramData\ccache\ccache.conf
Stats updated:      10/20/25 04:05:53
Local storage:
  Cache size (GB):    5.0 / 5.0 (99.90%)
  Files:            22620
  Hits:                 0
  Misses:               0
  Reads:                0
  Writes:               0

@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 20, 2025

LLVM Buildbot has detected a new failure on builder clang-m68k-linux-cross running on suse-gary-m68k-cross while building clang at step 5 "ninja check 1".

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

Here is the relevant piece of the build log for the reference
Step 5 (ninja check 1) failure: stage 1 checked (failure)
******************** TEST 'LLVM :: ExecutionEngine/JITLink/x86-64/MachO_archive_two_objects_same_name.s' FAILED ********************
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 5
rm -rf /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp && mkdir -p /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp
# executed command: rm -rf /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp
# executed command: mkdir -p /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp
# RUN: at line 6
split-file /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/llvm/test/ExecutionEngine/JITLink/x86-64/MachO_archive_two_objects_same_name.s /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp
# executed command: split-file /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/llvm/test/ExecutionEngine/JITLink/x86-64/MachO_archive_two_objects_same_name.s /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp
# RUN: at line 8
/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-mc -triple x86_64-apple-macosx10.9 -filetype=obj    -o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir1/myobj.o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir1/myobj.s
# executed command: /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-mc -triple x86_64-apple-macosx10.9 -filetype=obj -o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir1/myobj.o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir1/myobj.s
# RUN: at line 10
/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-ar crs /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/libmyobj1.a /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir1/myobj.o
# executed command: /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-ar crs /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/libmyobj1.a /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir1/myobj.o
# RUN: at line 12
/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-mc -triple x86_64-apple-macosx10.9 -filetype=obj    -o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir2/myobj.o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir2/myobj.s
# executed command: /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-mc -triple x86_64-apple-macosx10.9 -filetype=obj -o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir2/myobj.o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir2/myobj.s
# RUN: at line 14
/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-ar crs /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/libmyobj2.a /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir2/myobj.o
# executed command: /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-ar crs /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/libmyobj2.a /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/dir2/myobj.o
# RUN: at line 16
/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-mc -triple x86_64-apple-macosx10.9 -filetype=obj    -o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/main.o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/main.s
# executed command: /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-mc -triple x86_64-apple-macosx10.9 -filetype=obj -o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/main.o /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/main.s
# RUN: at line 19
/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-jitlink -noexec /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/main.o -lmyobj1 -lmyobj2 -L/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp
# executed command: /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/bin/llvm-jitlink -noexec /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp/main.o -lmyobj1 -lmyobj2 -L/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/test/ExecutionEngine/JITLink/x86-64/Output/MachO_archive_two_objects_same_name.s.tmp
# .---command stderr------------
# | llvm-jitlink error: Cannot allocate memory
# `-----------------------------
# error: command failed with exit status: 1

--

********************


Lukacma pushed a commit to Lukacma/llvm-project that referenced this pull request Oct 29, 2025
…64204)

One iteration of this loop might've already fixed up the pointers of
coming globals, so check for that explicitly.

Fixes llvm#164151
aokblast pushed a commit to aokblast/llvm-project that referenced this pull request Oct 30, 2025
…64204)

One iteration of this loop might've already fixed up the pointers of
coming globals, so check for that explicitly.

Fixes llvm#164151
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clang:bytecode Issues for the clang bytecode constexpr interpreter clang:frontend Language frontend issues, e.g. anything involving "Sema" clang Clang issues not falling into any other category

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[clang][bytecode] Assertion `B != this' failed.

3 participants