[Ada] Implement AI12-0101
authorSteve Baird <baird@adacore.com>
Fri, 13 Dec 2019 09:03:23 +0000 (09:03 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Fri, 13 Dec 2019 09:03:23 +0000 (09:03 +0000)
commitd7c37f454912c398302679e780ff69c76a3f843a
treecc993cb5ae5c6ea6313b482185f3bb896799859e
parent08f4f1721a05c77c8ee0cbd437c944d7c795f0d5
[Ada] Implement AI12-0101

2019-12-13  Steve Baird  <baird@adacore.com>

gcc/ada/

* exp_ch4.adb (Expand_N_Op_Eq.Is_Equality): Move this function
from within Expand_N_Op_Eq.Find_Equality out to immediately
within Expand_N_Op_Eq in order to give it greater visibility.
Add a new Typ parameter (defaulted to Empty) which, if
non-empty, means the function will return False in the case of
an equality op for some other type.
* (Expand_N_Op_Eq.User_Defined_Primitive_Equality_Op): A new
function. Given an untagged record type, finds the corresponding
user-defined primitive equality op (if any).  May return Empty.
Ignores visibility.
* (Expand_N_Op): For Ada2012 or later, check for presence of a
user-defined primitive equality op before falling back on the
usual predefined component-by-component comparison. If found,
then call the user-defined op instead.

From-SVN: r279341
gcc/ada/ChangeLog
gcc/ada/exp_ch4.adb