* [Ada] Fix spurious warning in ASIS mode
@ 2015-12-20 10:27 Eric Botcazou
0 siblings, 0 replies; only message in thread
From: Eric Botcazou @ 2015-12-20 10:27 UTC (permalink / raw)
To: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 298 bytes --]
Tested on x86_64-suse-linux, applied on the mainline.
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.
--
Eric Botcazou
[-- Attachment #2: p.diff --]
[-- Type: text/x-patch, Size: 1718 bytes --]
Index: gcc-interface/utils.c
===================================================================
--- gcc-interface/utils.c (revision 231856)
+++ gcc-interface/utils.c (working copy)
@@ -1411,19 +1411,28 @@ maybe_pad_type (tree type, tree size, un
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);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2015-12-20 10:27 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-20 10:27 [Ada] Fix spurious warning in ASIS mode Eric Botcazou
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).