From 50a7395372ba8a082fc0514a16a3f381ec1e49e7 Mon Sep 17 00:00:00 2001 From: Steve Baird Date: Wed, 18 Sep 2019 08:32:37 +0000 Subject: [PATCH] [Ada] Don't fail a front-end assertion if errors have already been detected In sem_eval.adb, we have an assertion that the type of a "null" literal is an access type. It turns out that this assertion can fail when processing an illegal program, e.g. one that contains something like "Integer'(null)". This leads to differences in the compiler's generated output for such tests depending on whether assertions are/aren't enabled; in particular, the "compilation abandoned due to previous error" message generated in Comperr.Compiler_Abort. In order to avoid these differences, we change the assertion so that it does not fail if errors have already been posted on the given node. 2019-09-18 Steve Baird gcc/ada/ * sem_eval.adb (Expr_Value): Do not fail "the type of a null literal must be an access type" assertion if errors have already been posted on the given node. From-SVN: r275852 --- gcc/ada/ChangeLog | 6 ++++++ gcc/ada/sem_eval.adb | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 8b044d1744b..88957a24b1b 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2019-09-18 Steve Baird + + * sem_eval.adb (Expr_Value): Do not fail "the type of a null + literal must be an access type" assertion if errors have already + been posted on the given node. + 2019-09-18 Piotr Trojanek * exp_dbug.ads, exp_dbug.adb (Get_Homonym_Number): Refine type diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb index 5c41642cea2..5f26ecd834d 100644 --- a/gcc/ada/sem_eval.adb +++ b/gcc/ada/sem_eval.adb @@ -4278,7 +4278,8 @@ package body Sem_Eval is -- The NULL access value elsif Kind = N_Null then - pragma Assert (Is_Access_Type (Underlying_Type (Etype (N)))); + pragma Assert (Is_Access_Type (Underlying_Type (Etype (N))) + or else Error_Posted (N)); Val := Uint_0; -- Character literal -- 2.30.2