[clang] [clang][test] Make new absurdly_big_struct test more targeted (PR #219897)
Timm Baeder via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 8 20:46:46 PDT 2026
https://github.com/tbaederr updated https://github.com/llvm/llvm-project/pull/219897
>From bf287a1cafdba25c2bbf772438e80dc95e05006d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timm=20B=C3=A4der?= <tbaeder at redhat.com>
Date: Mon, 31 Aug 2026 09:08:50 +0200
Subject: [PATCH] [clang][test] Make new absurdly_big_struct test more targeted
The previous version of `y()` used `c2[i]`, which can't be evaluated at
compile-time.
The emitted diagnostic depends on something calling
`ASTContext::getASTRecordLayout()` for `b`, which currently happens in
the constant evaluator. If the evaluator decides to evaluate `c2[i]`
before calling `getASTRecordLayout()`, the test fails since the
diagnostic is never emitted.
Fix this by simply using `c2[0]` instead.
---
clang/test/AST/absurdly_big_struct.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/clang/test/AST/absurdly_big_struct.cpp b/clang/test/AST/absurdly_big_struct.cpp
index 69e191aaf70fa..8bb766fe6cd80 100644
--- a/clang/test/AST/absurdly_big_struct.cpp
+++ b/clang/test/AST/absurdly_big_struct.cpp
@@ -13,12 +13,11 @@ long long x3() { return sizeof(a::x2); }
long long x4() { return sizeof(z); }
// On 32-bit architectures, the struct size must be below (1 << 32).
-// This used to crash in CodeGen.
struct b { // bit32-error {{structure 'b' is too large, which exceeds maximum allowed size of 4294967296 bytes}}
char c[0xFFFFFFFE];
char c1[4];
char c2[2];
};
-long long y(int i) { return __builtin_offsetof(b, c2[i]); }
+long long y() { return __builtin_offsetof(b, c2[0]); }
More information about the cfe-commits
mailing list