From patchwork Wed Sep 18 08:39:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pierre-Marie de Rodat X-Patchwork-Id: 1163834 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-509172-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="f6c0A5ki"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46YD333jD2z9s4Y for ; Wed, 18 Sep 2019 18:41:03 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:mime-version:content-type; q=dns; s=default; b=BTDs/J2uuRcS96IWTVkGO7fB1ya+BL4f8FtzW1tcpD1ZOman++ LbSxUCr4UbE7ruI8bRZe3Ye1PsqESTc9YdaPGm37eaZXlx2ReqbZCdP9dJc7nQDD EI4yqZZP4JA7LA4L5qm7uyRi3kvAJiEUzFscTWQO91vMASqBU5k2TNuws= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:mime-version:content-type; s= default; bh=g8mnh4fz+LJeCIZ/l9zqLscCsmQ=; b=f6c0A5kiCVtVnqXaK7o7 j1dED6oqKWXCL7+BS2t6ifH7KiVNsUhgBDu33KoLyyZTCavPlbIcMmoY7QH+w8zf PO7mNQBqaFnnmcDZ+Bl0p7YB8MA+7tWf09Joh6d8GuLTD9ma/KYs/9Zcvn+X4Ua/ VOfyp2IWHXDxxv2F7O5uHhM= Received: (qmail 100814 invoked by alias); 18 Sep 2019 08:39:51 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 100765 invoked by uid 89); 18 Sep 2019 08:39:50 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-11.9 required=5.0 tests=BAYES_00, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=etype, Etype, Underlying_Type, underlying_type X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 18 Sep 2019 08:39:49 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 30C47117CDC; Wed, 18 Sep 2019 04:39:45 -0400 (EDT) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id WVGGxIhEj7Ey; Wed, 18 Sep 2019 04:39:45 -0400 (EDT) Received: from tron.gnat.com (tron.gnat.com [IPv6:2620:20:4000:0:46a8:42ff:fe0e:e294]) by rock.gnat.com (Postfix) with ESMTP id 1428D117BD9; Wed, 18 Sep 2019 04:39:45 -0400 (EDT) Received: by tron.gnat.com (Postfix, from userid 4862) id 0FFCC702; Wed, 18 Sep 2019 04:39:45 -0400 (EDT) Date: Wed, 18 Sep 2019 04:39:45 -0400 From: Pierre-Marie de Rodat To: gcc-patches@gcc.gnu.org Cc: Steve Baird Subject: [Ada] Don't fail a front-end assertion if errors have already been detected Message-ID: <20190918083945.GA145140@adacore.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-IsSubscribed: yes 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. Tested on x86_64-pc-linux-gnu, committed on trunk 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. --- gcc/ada/sem_eval.adb +++ 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