[Ada] Spurious error on fixed-point operation whose operands are expressions
authorEd Schonberg <schonberg@adacore.com>
Fri, 25 May 2018 09:05:21 +0000 (09:05 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Fri, 25 May 2018 09:05:21 +0000 (09:05 +0000)
commit17dd35f448a689e51e8cd17138c6e942a343f894
tree64ae599cbb238ebc57934e818b72461bf4734d29
parentbf5899e71ea7ca1cc3ae9007c2d5e06ee4108d2a
[Ada] Spurious error on fixed-point operation whose operands are expressions

This patch fixes a spurious error in a fixed-point operand of a multiplying
operator M when the operand is an adding operation and the context imposes
a different fixed-point type to the result of M.

2018-05-25  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_res.adb (Set_Mixed_Mode_Operand): If the operand is an expression
of a fixed point type and the parent is a multiplying operation,
resolve the operand with its own type because the context will impose a
resulting type on the result of the multiplication by means of
approriate conversion.

gcc/testsuite/

* gnat.dg/fixedpnt4.adb: New testcase.

From-SVN: r260741
gcc/ada/ChangeLog
gcc/ada/sem_res.adb
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/fixedpnt4.adb [new file with mode: 0644]