[Ada] Incorrect error on inline protected function
authorBob Duff <duff@adacore.com>
Wed, 14 Aug 2019 09:52:24 +0000 (09:52 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 14 Aug 2019 09:52:24 +0000 (09:52 +0000)
commitdba246bfabc54c9a97304f4ab65fda62bd2936c8
tree802500001857fadec9dcc6a5b14f93c9223b3321
parent2d1439c7ad59625fea5598dda6679c6f3be1fa1c
[Ada] Incorrect error on inline protected function

This patch fixes a bug where if a protected function has a pragma
Inline, and has no local variables, and the body consists of a single
extended_return_statement, and the result type is an indefinite
composite subtype, and inlining is enabled, the compiler gives an error,
even though the program is legal.

2019-08-14  Bob Duff  <duff@adacore.com>

gcc/ada/

* inline.adb (Check_And_Split_Unconstrained_Function): Ignore
protected functions to get rid of spurious error. The
transformation done by this procedure triggers legality errors
in the generated code in this case.

gcc/testsuite/

* gnat.dg/inline19.adb, gnat.dg/inline19.ads: New testcase.

From-SVN: r274467
gcc/ada/ChangeLog
gcc/ada/inline.adb
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/inline19.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/inline19.ads [new file with mode: 0644]