diff --git a/src/Type.cc b/src/Type.cc index c2966cbef6..923a71c23f 100644 --- a/src/Type.cc +++ b/src/Type.cc @@ -1071,6 +1071,12 @@ void RecordType::AddField(unsigned int field, const TypeDecl* td) { init = std::make_shared(zv); } + else if ( def_expr->Tag() == detail::EXPR_ARITH_COERCE && + (def_expr->GetOp1()->IsZero() || def_expr->GetOp1()->IsOne()) ) { + auto zv = ZVal(def_expr->Eval(nullptr), type); + init = std::make_shared(zv); + } + else { auto efi = std::make_shared(def_expr, type); creation_inits.emplace_back(field, std::move(efi));