]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
sem_ch13.adb (Analyze_Aspect_Specifications): For pre/postconditions copy the express...
authorEd Schonberg <schonberg@adacore.com>
Fri, 5 Jul 2013 10:52:13 +0000 (10:52 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 5 Jul 2013 10:52:13 +0000 (12:52 +0200)
2013-07-05  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (Analyze_Aspect_Specifications): For
pre/postconditions copy the expression to the generated pragma,
to avoid sharing between the original aspect and the pragma node,
because in ASIS_Mode both will be independently analyzed.

From-SVN: r200710

gcc/ada/ChangeLog
gcc/ada/sem_ch13.adb

index 24b3fd28fed7de7b5aae92bd4a983b675a2aab7f..6bec4e805d041fbe94b43007df0f631e70e0363b 100644 (file)
@@ -1,3 +1,10 @@
+2013-07-05  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch13.adb (Analyze_Aspect_Specifications): For
+       pre/postconditions copy the expression to the generated pragma,
+       to avoid sharing between the original aspect and the pragma node,
+       because in ASIS_Mode both will be independently analyzed.
+
 2013-07-05  Ed Schonberg  <schonberg@adacore.com>
 
        * exp_ch3.adb (Build_Variant_Record_Equality): Add pairs of
index 1496912cdb4f823367f377a4006214fac53f94a7..0eb18f1a9db3d1f7815dcb8e83ee0ca1eb68b1d5 100644 (file)
@@ -1799,13 +1799,16 @@ package body Sem_Ch13 is
                      end loop;
                   end if;
 
-                  --  Build the precondition/postcondition pragma
+                  --  Build the precondition/postcondition pragma. We copy
+                  --  the expression to avoid sharing between the original
+                  --  aspect and the pragma node, because in ASIS_Mode both
+                  --  will be independently analyzed.
 
                   Make_Aitem_Pragma
                     (Pragma_Argument_Associations => New_List (
                        Make_Pragma_Argument_Association (Eloc,
                          Chars      => Name_Check,
-                         Expression => Relocate_Node (Expr))),
+                         Expression => New_Copy_Tree (Expr))),
                        Pragma_Name                => Pname);
 
                   --  Add message unless exception messages are suppressed