vla: update type from newly created value

Constructing a value based on a type and address might change the type
of the newly constructed value. Thus re-fetch type via value_type to ensure
we have the correct type at hand.

	* ada-lang.c (ada_value_primitive_packed_val): Re-fetch type from value.
	(ada_template_to_fixed_record_type_1): Likewise.
	(ada_to_fixed_type_1): Likewise.
	* cp-valprint.c (cp_print_value_fields_rtti): Likewise.
	(cp_print_value): Likewise.
	* d-valprint.c (dynamic_array_type): Likewise.
	* eval.c (evaluate_subexp_with_coercion): Likewise.
	* findvar.c (address_of_variable): Likewise.
	* jv-valprint.c (java_value_print): Likewise.
	* valops.c (value_ind): Likewise.
	* value.c (coerce_ref): Likewise.
This commit is contained in:
Sanimir Agovic 2013-10-14 08:36:13 +01:00
parent 04b19544ef
commit bcd629a44f
8 changed files with 35 additions and 2 deletions

View file

@ -2984,6 +2984,7 @@ evaluate_subexp_with_coercion (struct expression *exp,
{
(*pos) += 4;
val = address_of_variable (var, exp->elts[pc + 1].block);
type = value_type (val);
return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
val);
}