[Ada] Crash on conversion in branch of if-expression

Programming / Compilers / GCC - pmderodat [138bc75d-0d04-0410-961f-82ee72b054a4] - 16 December 2019 10:33 UTC

2019-12-16 Ed Schonberg

gcc/ada/

- checks.adb (Apply_Float_Conversion_Check): Use node of type conversion and not its parent, when inserting the declaration for the temporary that hold the result of the conversion. Previously the declaration was inserted above the parent of the conversion, apparently as a small optimization for the subsequent traversal in Insert_Actions. Unfortunately a similar optimization takes place in Insert_Actions, assuming that the insertion point must be above the expression that creates the actions to insert. This is not correct in the presence of conditional expressions (i.e. since Ada2012), where the insertion must be in the list of actions attached to the current alternative.

e34803ca272 [Ada] Crash on conversion in branch of if-expression
gcc/ada/ChangeLog | 15 +++++++++++++++
gcc/ada/checks.adb | 12 +++++++++++-
2 files changed, 26 insertions(+), 1 deletion(-)

Upstream: gcc.gnu.org


  • Share