]> git.ipfire.org Git - thirdparty/gcc.git/commit
[Ada] Spurious tampering check failure
authorpmderodat <pmderodat@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 31 May 2018 10:46:48 +0000 (10:46 +0000)
committerpmderodat <pmderodat@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 31 May 2018 10:46:48 +0000 (10:46 +0000)
commit52fa5b7a3731d8ae8b6887a5557909b176602fc5
tree4f8b88b82317629d19adaee152802d2727c26189
parentabf3a9a19d9ab25113e585cabc08821845c5acab
[Ada] Spurious tampering check failure

This patch modifies the transient scope mechanism to create a scope when the
condition of an iteration scheme returns a controlled result or involves the
secondary stack. As a result, a while loop which iterates over a container
properly manages the tampering bit at each iteration of the loop.

2018-05-31  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* exp_ch7.adb (Find_Transient_Context): An iteration scheme is a valid
boudary for a transient scope.

gcc/testsuite/

* gnat.dg/tampering_check1.adb, gnat.dg/tampering_check1_ivectors.ads,
gnat.dg/tampering_check1_trim.adb, gnat.dg/tampering_check1_trim.ads:
New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@261006 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ada/ChangeLog
gcc/ada/exp_ch7.adb
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/tampering_check1.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/tampering_check1_ivectors.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/tampering_check1_trim.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/tampering_check1_trim.ads [new file with mode: 0644]