public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r12-1572] [Ada] Apply aliasing checks only to names and not to objects as actuals
@ 2021-06-17 14:33 Pierre-Marie de Rodat
0 siblings, 0 replies; only message in thread
From: Pierre-Marie de Rodat @ 2021-06-17 14:33 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:9e1ca4e3ab0fb7156fed4480c8f35810d00ff84d
commit r12-1572-g9e1ca4e3ab0fb7156fed4480c8f35810d00ff84d
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Mon Mar 1 16:23:38 2021 +0100
[Ada] Apply aliasing checks only to names and not to objects as actuals
gcc/ada/
* checks.adb (Apply_Parameter_Aliasing_Checks): Replace calls to
Is_Object_Reference with calls to Is_Name_Reference; remove
asymmetric condition that only detected an aggregate as the
first actual (aggregate objects were just a special case of an
object reference that was not a name).
Diff:
---
gcc/ada/checks.adb | 21 ++++-----------------
1 file changed, 4 insertions(+), 17 deletions(-)
diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb
index 877a982b840..d8cdb64c454 100644
--- a/gcc/ada/checks.adb
+++ b/gcc/ada/checks.adb
@@ -2507,29 +2507,16 @@ package body Checks is
while Present (Actual_1) and then Present (Formal_1) loop
Orig_Act_1 := Original_Actual (Actual_1);
- -- Ensure that the actual is an object that is not passed by value.
- -- Elementary types are always passed by value, therefore actuals of
- -- such types cannot lead to aliasing. An aggregate is an object in
- -- Ada 2012, but an actual that is an aggregate cannot overlap with
- -- another actual.
-
- if Nkind (Orig_Act_1) = N_Aggregate
- or else (Nkind (Orig_Act_1) = N_Qualified_Expression
- and then Nkind (Expression (Orig_Act_1)) = N_Aggregate)
- then
- null;
-
- elsif Is_Object_Reference (Orig_Act_1) then
+ if Is_Name_Reference (Orig_Act_1) then
Actual_2 := Next_Actual (Actual_1);
Formal_2 := Next_Formal (Formal_1);
while Present (Actual_2) and then Present (Formal_2) loop
Orig_Act_2 := Original_Actual (Actual_2);
- -- The other actual we are testing against must also denote
- -- a non pass-by-value object. Generate the check only when
- -- the mode of the two formals may lead to aliasing.
+ -- Generate the check only when the mode of the two formals may
+ -- lead to aliasing.
- if Is_Object_Reference (Orig_Act_2)
+ if Is_Name_Reference (Orig_Act_2)
and then May_Cause_Aliasing (Formal_1, Formal_2)
then
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-06-17 14:33 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-17 14:33 [gcc r12-1572] [Ada] Apply aliasing checks only to names and not to objects as actuals Pierre-Marie de Rodat
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).