diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2025-03-14 23:08:16 +0100 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2025-03-16 21:06:07 +0100 |
commit | 7d6e5591e6ab1f5a24dcf007b17f81cc19987c47 (patch) | |
tree | fdc4ad1abac3bd4a831b5e72ec6e3003f88f872c /gcc/d/dmd/expression.h | |
parent | 26c4ea2ebcdcd0aa26350d04dc4cd38348148bd9 (diff) | |
download | gcc-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.h | 6 |
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); } |