From: Eric Botcazou <ebotcazou@adacore.com>
To: gcc-patches@gcc.gnu.org
Subject: [Ada] Silence useless -Wuninitialized warning
Date: Mon, 27 May 2019 12:18:00 -0000 [thread overview]
Message-ID: <1750736.742D92u1z0@polaris> (raw)
[-- Attachment #1: Type: text/plain, Size: 461 bytes --]
This silences a warning issued for the call to the initialization procedure of
a record type on a misaligned component of another record type.
Tested on x86_64-suse-linux, applied on the mainline and 9 branch.
2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (Call_to_gnu): Do not initialize the temporary
created out of addressability concerns if it's for the _Init parameter
of an initialization procedure.
--
Eric Botcazou
[-- Attachment #2: p.diff --]
[-- Type: text/x-patch, Size: 1470 bytes --]
Index: gcc-interface/trans.c
===================================================================
--- gcc-interface/trans.c (revision 271658)
+++ gcc-interface/trans.c (working copy)
@@ -5313,13 +5313,23 @@ Call_to_gnu (Node_Id gnat_node, tree *gn
/* Create an explicit temporary holding the copy. */
if (atomic_p)
gnu_name = build_atomic_load (gnu_name, sync);
- gnu_temp
- = create_init_temporary ("A", gnu_name, &gnu_stmt, gnat_actual);
- /* But initialize it on the fly like for an implicit temporary as
- we aren't necessarily having a statement list. */
- gnu_name = build_compound_expr (TREE_TYPE (gnu_name), gnu_stmt,
- gnu_temp);
+ /* Do not initialize it for the _Init parameter of an initialization
+ procedure since no data is meant to be passed in. */
+ if (Ekind (gnat_formal) == E_Out_Parameter
+ && Is_Entity_Name (Name (gnat_node))
+ && Is_Init_Proc (Entity (Name (gnat_node))))
+ gnu_name = gnu_temp = create_temporary ("A", TREE_TYPE (gnu_name));
+
+ /* Initialize it on the fly like for an implicit temporary in the
+ other cases, as we don't necessarily have a statement list. */
+ else
+ {
+ gnu_temp = create_init_temporary ("A", gnu_name, &gnu_stmt,
+ gnat_actual);
+ gnu_name = build_compound_expr (TREE_TYPE (gnu_name), gnu_stmt,
+ gnu_temp);
+ }
/* Set up to move the copy back to the original if needed. */
if (!in_param)
reply other threads:[~2019-05-27 11:44 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1750736.742D92u1z0@polaris \
--to=ebotcazou@adacore.com \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).