[clang] 52efe03 - [clang][bytecode] Enable some placement-new tests (#171567)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Dec 10 00:56:40 PST 2025
Author: Timm Baeder
Date: 2025-12-10T09:56:35+01:00
New Revision: 52efe037cca529ed5f8e6ec8d0978f279c829eea
URL: https://github.com/llvm/llvm-project/commit/52efe037cca529ed5f8e6ec8d0978f279c829eea
DIFF: https://github.com/llvm/llvm-project/commit/52efe037cca529ed5f8e6ec8d0978f279c829eea.diff
LOG: [clang][bytecode] Enable some placement-new tests (#171567)
They used to cause problems. Use the BYTECODE define to enable them at
least for the bytecode interpreter.
Added:
Modified:
clang/test/AST/ByteCode/placement-new.cpp
Removed:
################################################################################
diff --git a/clang/test/AST/ByteCode/placement-new.cpp b/clang/test/AST/ByteCode/placement-new.cpp
index 1c015da7be54f..f458ea17b6cc6 100644
--- a/clang/test/AST/ByteCode/placement-new.cpp
+++ b/clang/test/AST/ByteCode/placement-new.cpp
@@ -68,41 +68,40 @@ consteval int ok5() {
} s;
new (&s) S[1]{{12, 13}};
+ /// FIXME: Broken in the current interpreter.
+#if BYTECODE
+ return s.a + s.b;
+#else
return 25;
- // return s.a + s.b; FIXME: Broken in the current interpreter.
+#endif
}
static_assert(ok5() == 25);
-/// FIXME: Broken in both interpreters.
-#if 0
-consteval int ok5() {
+consteval int ok6() {
+ int i[2];
+ new (i) int(100);
+ new (i + 1) int(200);
+ return i[0] + i[1];
+}
+static_assert(ok6() == 300);
+
+/// FIXME: Broken in the current interpreter.
+#if BYTECODE
+consteval int ok7() {
int i;
- new (&i) int[1]{1}; // expected-note {{assignment to dereferenced one-past-the-end pointer}}
+ new (&i) int[1]{1};
return i;
}
-static_assert(ok5() == 1); // expected-error {{not an integral constant expression}} \
- // expected-note {{in call to}}
-#endif
+static_assert(ok7() == 1);
-/// FIXME: Crashes the current interpreter.
-#if 0
-consteval int ok6() {
+consteval int ok8() {
int i[2];
new (&i) int(100);
return i[0];
}
-static_assert(ok6() == 100);
+static_assert(ok8() == 100);
#endif
-consteval int ok6() {
- int i[2];
- new (i) int(100);
- new (i + 1) int(200);
- return i[0] + i[1];
-}
-static_assert(ok6() == 300);
-
-
consteval auto fail1() {
int b;
new (&b) float(1.0); // both-note {{placement new would change type of storage from 'int' to 'float'}}
More information about the cfe-commits
mailing list