llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Timm Baeder (tbaederr)

<details>
<summary>Changes</summary>

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.

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


1 Files Affected:

- (modified) clang/test/AST/absurdly_big_struct.cpp (+1-1) 


``````````diff
diff --git a/clang/test/AST/absurdly_big_struct.cpp 
b/clang/test/AST/absurdly_big_struct.cpp
index 69e191aaf70fa..de44de2754727 100644
--- a/clang/test/AST/absurdly_big_struct.cpp
+++ b/clang/test/AST/absurdly_big_struct.cpp
@@ -20,5 +20,5 @@ struct b { // bit32-error {{structure 'b' is too large, which 
exceeds maximum al
   char c2[2];
 };
 
-long long y(int i) { return __builtin_offsetof(b, c2[i]); }
+long long y() { return __builtin_offsetof(b, c2[0]); }
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/219897
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to