[clang] [clang][bytecode] Fix virtual-bases.cpp on 32 bit hosts (PR #209766)

via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 15 07:25:54 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Timm Baeder (tbaederr)

<details>
<summary>Changes</summary>

It currently fails on clang-armv8-quick with:
```console
# | error: diagnostics with 'error' severity seen but not expected: 
# |   File /home/tcwg-buildbot/worker/clang-armv8-quick/llvm/clang/test/AST/ByteCode/virtual-bases.cpp Line 441: static assertion failed due to requirement '((__builtin_constant_p((char *)&c.c) ? ((char *)&c.c) : ((char *)&c.c)) - (__builtin_constant_p((char *)&c) ? ((char *)&c) : ((char *)&c))) == 12'
# |   File /home/tcwg-buildbot/worker/clang-armv8-quick/llvm/clang/test/AST/ByteCode/virtual-bases.cpp Line 442: static assertion failed due to requirement '((__builtin_constant_p((char *)&c.b) ? ((char *)&c.b) : ((char *)&c.b)) - (__builtin_constant_p((char *)&c) ? ((char *)&c) : ((char *)&c))) == 8'
# |   File /home/tcwg-buildbot/worker/clang-armv8-quick/llvm/clang/test/AST/ByteCode/virtual-bases.cpp Line 443: static assertion failed due to requirement '((__builtin_constant_p((char *)&c.a) ? ((char *)&c.a) : ((char *)&c.a)) - (__builtin_constant_p((char *)&c) ? ((char *)&c) : ((char *)&c))) == 20'
# |   File /home/tcwg-buildbot/worker/clang-armv8-quick/llvm/clang/test/AST/ByteCode/virtual-bases.cpp Line 444: static assertion failed due to requirement '((__builtin_constant_p((char *)&c.x) ? ((char *)&c.x) : ((char *)&c.x)) - (__builtin_constant_p((char *)&c) ? ((char *)&c) : ((char *)&c))) == 16'
# | error: diagnostics with 'note' severity seen but not expected: 
# |   File /home/tcwg-buildbot/worker/clang-armv8-quick/llvm/clang/test/AST/ByteCode/virtual-bases.cpp Line 441: expression evaluates to '8 == 12'
# |   File /home/tcwg-buildbot/worker/clang-armv8-quick/llvm/clang/test/AST/ByteCode/virtual-bases.cpp Line 442: expression evaluates to '4 == 8'
# |   File /home/tcwg-buildbot/worker/clang-armv8-quick/llvm/clang/test/AST/ByteCode/virtual-bases.cpp Line 443: expression evaluates to '16 == 20'
# |   File /home/tcwg-buildbot/worker/clang-armv8-quick/llvm/clang/test/AST/ByteCode/virtual-bases.cpp Line 444: expression evaluates to '12 == 16'
# | 8 errors generated.
```

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


1 Files Affected:

- (modified) clang/test/AST/ByteCode/virtual-bases.cpp (+7) 


``````````diff
diff --git a/clang/test/AST/ByteCode/virtual-bases.cpp b/clang/test/AST/ByteCode/virtual-bases.cpp
index d690598dc1a5a..a41590b22d5a8 100644
--- a/clang/test/AST/ByteCode/virtual-bases.cpp
+++ b/clang/test/AST/ByteCode/virtual-bases.cpp
@@ -438,10 +438,17 @@ namespace Offsets {
 
   constexpr C c{12};
 #if !defined(_WIN32)
+#if __SIZEOF_SIZE_T == 8
   static_assert( (fold((char*)&c.c) - fold((char*)&c)) == 12);
   static_assert( (fold((char*)&c.b) - fold((char*)&c)) == 8);
   static_assert( (fold((char*)&c.a) - fold((char*)&c)) == 20);
   static_assert( (fold((char*)&c.x) - fold((char*)&c)) == 16);
+#else
+  static_assert( (fold((char*)&c.c) - fold((char*)&c)) == 8);
+  static_assert( (fold((char*)&c.b) - fold((char*)&c)) == 4);
+  static_assert( (fold((char*)&c.a) - fold((char*)&c)) == 16);
+  static_assert( (fold((char*)&c.x) - fold((char*)&c)) == 12);
+#endif
 # else
   static_assert( (fold((char*)&c.c) - fold((char*)&c)) == 16);
   static_assert( (fold((char*)&c.b) - fold((char*)&c)) == 8);

``````````

</details>


https://github.com/llvm/llvm-project/pull/209766


More information about the cfe-commits mailing list