]> git.ipfire.org Git - thirdparty/gcc.git/commit
[Ada] Fix dispatching call to primitive function with controlling tagged result
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 1 Jun 2022 22:45:14 +0000 (00:45 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Mon, 4 Jul 2022 07:46:00 +0000 (07:46 +0000)
commit1f03b43fc7552fe105d33612b3b89b4f0b222798
treef57e2570922b954aae109ca384b43db44a06eba4
parent4dab9bed7bd173e55fa44b9d8f4a01dfd8566553
[Ada] Fix dispatching call to primitive function with controlling tagged result

When a dispatching call is made to a primitive function with a controlling
tagged result, the call is dispatching on result and thus must return the
class-wide type of the tagged type to accommodate all possible results.

This was ensured by Expand_Dispatching_Call only in the common case where
the result type is the type of the controlling argument, which does not
cover the case of a primitive function inherited from an ancestor type.

gcc/ada/

* exp_disp.adb (Expand_Dispatching_Call): Fix detection of calls
that are dispatching on tagged result.
gcc/ada/exp_disp.adb