diff options
Diffstat (limited to 'gcc/d/decl.cc')
-rw-r--r-- | gcc/d/decl.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/d/decl.cc b/gcc/d/decl.cc index f5c21078aad..43c3d87cdd1 100644 --- a/gcc/d/decl.cc +++ b/gcc/d/decl.cc @@ -645,9 +645,12 @@ public: if (!d->isDataseg () && !d->isMember () && d->_init && !d->_init->isVoidInitializer ()) { + /* Evaluate RHS for side effects first. */ + Expression *ie = initializerToExpression (d->_init); + add_stmt (build_expr (ie)); + Expression *e = d->type->defaultInitLiteral (d->loc); - tree exp = build_expr (e); - add_stmt (exp); + add_stmt (build_expr (e)); } return; |