[clang] [clang][bytecode] Fix allocating primitive arrays of unknown bound (PR #127788)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 19 03:48:51 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Timm Baeder (tbaederr)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/127788.diff
2 Files Affected:
- (modified) clang/lib/AST/ByteCode/Compiler.cpp (+2-1)
- (modified) clang/test/AST/ByteCode/new-delete.cpp (+6)
``````````diff
diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp
index 503c58a67adeb..a35aa9471a73d 100644
--- a/clang/lib/AST/ByteCode/Compiler.cpp
+++ b/clang/lib/AST/ByteCode/Compiler.cpp
@@ -3397,7 +3397,8 @@ bool Compiler<Emitter>::VisitCXXNewExpr(const CXXNewExpr *E) {
CtorFunc = getFunction(CE->getConstructor());
if (!CtorFunc)
return false;
- }
+ } else if (!DynamicInit)
+ DynamicInit = Init;
LabelTy EndLabel = this->getLabel();
LabelTy StartLabel = this->getLabel();
diff --git a/clang/test/AST/ByteCode/new-delete.cpp b/clang/test/AST/ByteCode/new-delete.cpp
index 7e5f6ab8815ea..5be1bb944c18c 100644
--- a/clang/test/AST/ByteCode/new-delete.cpp
+++ b/clang/test/AST/ByteCode/new-delete.cpp
@@ -907,6 +907,12 @@ namespace IncompleteArray {
return c;
}
static_assert(test4() == 12);
+
+
+ constexpr char *f(int n) {
+ return new char[n]();
+ }
+ static_assert((delete[] f(2), true));
}
namespace NonConstexprArrayCtor {
``````````
</details>
https://github.com/llvm/llvm-project/pull/127788
More information about the cfe-commits
mailing list