diff options
Diffstat (limited to 'gcc/d/expr.cc')
-rw-r--r-- | gcc/d/expr.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/d/expr.cc b/gcc/d/expr.cc index 73dab463926..6fba382f0ed 100644 --- a/gcc/d/expr.cc +++ b/gcc/d/expr.cc @@ -916,6 +916,17 @@ public: gcc_unreachable (); } + /* Look for exp = noreturn; */ + if (e->e2->type->isTypeNoreturn ()) + { + /* If the RHS is a `noreturn' expression, there is no point generating + any code for the assignment, just evaluate side effects. */ + tree t1 = build_expr (e->e1); + tree t2 = build_expr (e->e2); + this->result_ = compound_expr (t1, t2); + return; + } + /* Look for array[] = n; */ if (e->e1->op == EXP::slice) { |