aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/dmd/expression.h
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2025-03-14 23:08:16 +0100
committerIain Buclaw <ibuclaw@gdcproject.org>2025-03-16 21:06:07 +0100
commit7d6e5591e6ab1f5a24dcf007b17f81cc19987c47 (patch)
treefdc4ad1abac3bd4a831b5e72ec6e3003f88f872c /gcc/d/dmd/expression.h
parent26c4ea2ebcdcd0aa26350d04dc4cd38348148bd9 (diff)
downloadgcc-7d6e5591e6ab1f5a24dcf007b17f81cc19987c47.zip
gcc-7d6e5591e6ab1f5a24dcf007b17f81cc19987c47.tar.gz
gcc-7d6e5591e6ab1f5a24dcf007b17f81cc19987c47.tar.bz2
d: Merge upstream dmd, druntime 603225372b
D front-end changes: - Import dmd v2.111.0-beta.1. - Added placement `new' expressions. D runtime changes: - Import druntime v2.111.0-beta.1. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 603225372b. * dmd/VERSION: Bump version to v2.111.0-beta.1. * d-builtins.cc (build_frontend_type): Update for new front-end interface. * decl.cc (Class DeclVisitor): Likewise. (maybe_build_decl_tree): Likewise. (get_vtable_decl): Likewise. (layout_class_initializer): Likewise. * expr.cc (class ExprVisitor): Likewise. (ExprVisitor::visit (NewExp *)): Implement placement new for class, struct, and pointer types. * modules.cc (get_internal_fn): Update for new front-end interface. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime 603225372b.
Diffstat (limited to 'gcc/d/dmd/expression.h')
-rw-r--r--gcc/d/dmd/expression.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/d/dmd/expression.h b/gcc/d/dmd/expression.h
index a4bb019..9c1e17a 100644
--- a/gcc/d/dmd/expression.h
+++ b/gcc/d/dmd/expression.h
@@ -40,6 +40,7 @@ class OverloadSet;
class StringExp;
class InterpExp;
class LoweredAssignExp;
+class StaticForeach;
#ifdef IN_GCC
typedef union tree_node Symbol;
#else
@@ -50,6 +51,7 @@ namespace dmd
{
// in expressionsem.d
Expression *expressionSemantic(Expression *e, Scope *sc);
+ void lowerNonArrayAggregate(StaticForeach *sfe, Scope *sc);
// in typesem.d
Expression *defaultInit(Type *mt, Loc loc, const bool isCfile = false);
@@ -517,6 +519,7 @@ public:
Type *newtype;
Expressions *arguments; // Array of Expression's
Identifiers *names; // Array of names corresponding to expressions
+ Expression *placement; // if !NULL, placement expression
Expression *argprefix; // expression to be evaluated just before arguments[]
@@ -526,7 +529,7 @@ public:
Expression *lowering; // lowered druntime hook: `_d_newclass`
- static NewExp *create(Loc loc, Expression *thisexp, Type *newtype, Expressions *arguments);
+ static NewExp *create(Loc loc, Expression *placement, Expression *thisexp, Type *newtype, Expressions *arguments);
NewExp *syntaxCopy() override;
void accept(Visitor *v) override { v->visit(this); }
@@ -540,6 +543,7 @@ public:
Expression *thisexp; // if !NULL, 'this' for class being allocated
ClassDeclaration *cd; // class being instantiated
Expressions *arguments; // Array of Expression's to call class constructor
+ Expression *placement; // if !NULL, placement expression
NewAnonClassExp *syntaxCopy() override;
void accept(Visitor *v) override { v->visit(this); }