exp_attr.adb (Expand_N_Attribute_Reference): Apply a predicate check when evaluating...
authorGary Dismukes <dismukes@adacore.com>
Tue, 6 Nov 2012 10:22:42 +0000 (10:22 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 6 Nov 2012 10:22:42 +0000 (11:22 +0100)
commit3d6db7f84dd4dd52ebc9436b462f599d9fb0564b
treeb41ad66af2ac765d8c0d188a4f2e96c2fe27d1f4
parent150ac76e0e29ec57850fca545b0e26530adf9adc
exp_attr.adb (Expand_N_Attribute_Reference): Apply a predicate check when evaluating the attribute Valid...

2012-11-06  Gary Dismukes  <dismukes@adacore.com>

* exp_attr.adb (Expand_N_Attribute_Reference): Apply a predicate
check when evaluating the attribute Valid, and issue a warning
about infinite recursion when the check occurs within the
predicate function of the prefix's subtype.
* exp_ch4.adb (Expand_N_In): Remove test for Is_Discrete_Type
when we're checking that there's no predicate check function as a
condition for substituting a Valid check for a scalar membership
test (substitution should be suppressed for any kind of scalar
subtype with a predicate check). Also, don't emit a predicate
check when the right operand is a range.

From-SVN: r193228
gcc/ada/ChangeLog
gcc/ada/exp_attr.adb
gcc/ada/exp_ch4.adb