From 09adaa8d122955d9661b01d2fe005975e1331f46 Mon Sep 17 00:00:00 2001 From: Javier Miranda Date: Mon, 11 Jun 2018 09:18:33 +0000 Subject: [Ada] Crash on protected type entry family The compiler may blow up compiling a the body of a protected type that has a family entry whose entry index specification contains a call to a function. 2018-06-11 Javier Miranda gcc/ada/ * exp_ch9.adb (Expand_N_Protected_Body): Add missing handling of N_Call_Marker nodes. gcc/testsuite/ * gnat.dg/prot4.adb: New testcase. From-SVN: r261417 --- gcc/ada/ChangeLog | 5 +++++ gcc/ada/exp_ch9.adb | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'gcc/ada') diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 3314303..cafac4f 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2018-06-11 Javier Miranda + + * exp_ch9.adb (Expand_N_Protected_Body): Add missing handling of + N_Call_Marker nodes. + 2018-06-11 Arnaud Charlet * exp_ch3.adb, exp_unst.adb, inline.adb, sem_prag.adb: Minor diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index 981c0ee..7cb5068 100644 --- a/gcc/ada/exp_ch9.adb +++ b/gcc/ada/exp_ch9.adb @@ -8653,8 +8653,11 @@ package body Exp_Ch9 is when N_Implicit_Label_Declaration => null; - when N_Itype_Reference => - Insert_After (Current_Node, New_Copy (Op_Body)); + when N_Call_Marker | + N_Itype_Reference => + New_Op_Body := New_Copy (Op_Body); + Insert_After (Current_Node, New_Op_Body); + Current_Node := New_Op_Body; when N_Freeze_Entity => New_Op_Body := New_Copy (Op_Body); -- cgit v1.1