utils.c (maybe_pad_type): In type_annotate_only mode...
* gcc-interface/utils.c (maybe_pad_type): In type_annotate_only mode, retrieve the component type if this is an array and do not issue the warning for concurrent types. From-SVN: r231859
This commit is contained in:
parent
afeb246c1b
commit
80746f5d88
@ -1,3 +1,9 @@
|
||||
2015-12-20 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc-interface/utils.c (maybe_pad_type): In type_annotate_only mode,
|
||||
retrieve the component type if this is an array and do not issue the
|
||||
warning for concurrent types.
|
||||
|
||||
2015-12-18 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc-interface/ada-tree.h (TYPE_DEBUG_TYPE): Remove duplicate.
|
||||
|
@ -1411,19 +1411,28 @@ maybe_pad_type (tree type, tree size, unsigned int align,
|
||||
rest_of_record_type_compilation (record);
|
||||
|
||||
built:
|
||||
/* If the size was widened explicitly, maybe give a warning. Take the
|
||||
original size as the maximum size of the input if there was an
|
||||
unconstrained record involved and round it up to the specified alignment,
|
||||
if one was specified. But don't do it if we are just annotating types
|
||||
and the type is tagged, since tagged types aren't fully laid out in this
|
||||
mode. */
|
||||
/* If a simple size was explicitly given, maybe issue a warning. */
|
||||
if (!size
|
||||
|| TREE_CODE (size) == COND_EXPR
|
||||
|| TREE_CODE (size) == MAX_EXPR
|
||||
|| No (gnat_entity)
|
||||
|| (type_annotate_only && Is_Tagged_Type (Etype (gnat_entity))))
|
||||
|| No (gnat_entity))
|
||||
return record;
|
||||
|
||||
/* But don't do it if we are just annotating types and the type is tagged or
|
||||
concurrent, since these types aren't fully laid out in this mode. */
|
||||
if (type_annotate_only)
|
||||
{
|
||||
Entity_Id gnat_type
|
||||
= is_component_type
|
||||
? Component_Type (gnat_entity) : Etype (gnat_entity);
|
||||
|
||||
if (Is_Tagged_Type (gnat_type) || Is_Concurrent_Type (gnat_type))
|
||||
return record;
|
||||
}
|
||||
|
||||
/* Take the original size as the maximum size of the input if there was an
|
||||
unconstrained record involved and round it up to the specified alignment,
|
||||
if one was specified, but only for aggregate types. */
|
||||
if (CONTAINS_PLACEHOLDER_P (orig_size))
|
||||
orig_size = max_size (orig_size, true);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user