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

--

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


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