diff --git a/src/ansi-c/c_typecheck_expr.cpp b/src/ansi-c/c_typecheck_expr.cpp index aff3fcd9ad3..e4f8eb9b5ca 100644 --- a/src/ansi-c/c_typecheck_expr.cpp +++ b/src/ansi-c/c_typecheck_expr.cpp @@ -1111,10 +1111,8 @@ void c_typecheck_baset::typecheck_expr_typecast(exprt &expr) if(base_type_eq(c.type(), op.type(), *this)) { // found! build union constructor - union_exprt union_expr(expr.type()); + union_exprt union_expr(c.get_name(), op, expr.type()); union_expr.add_source_location()=expr.source_location(); - union_expr.op()=op; - union_expr.set_component_name(c.get_name()); expr=union_expr; expr.set(ID_C_lvalue, true); return; diff --git a/src/util/expr_initializer.cpp b/src/util/expr_initializer.cpp index 50211115a22..dee57f88472 100644 --- a/src/util/expr_initializer.cpp +++ b/src/util/expr_initializer.cpp @@ -219,8 +219,6 @@ exprt expr_initializert::expr_initializer_rec( const union_typet::componentst &components= to_union_type(type).components(); - union_exprt value(type); - union_typet::componentt component; bool found=false; mp_integer component_size=0; @@ -243,12 +241,12 @@ exprt expr_initializert::expr_initializer_rec( } } + union_exprt value("", nil_exprt(), type); value.add_source_location()=source_location; if(!found) { // stupid empty union - value.op()=nil_exprt(); } else {