From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 72541 invoked by alias); 27 Nov 2017 12:44:41 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 72389 invoked by uid 89); 27 Nov 2017 12:44:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=BAYES_00,FREEMAIL_FROM,KB_WAM_FROM_NAME_SINGLEWORD,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=no version=3.3.2 spammy=H*r:2254, Hx-spam-relays-external:209.85.220.174, H*RU:209.85.220.174, sigh X-HELO: mail-qk0-f174.google.com Received: from mail-qk0-f174.google.com (HELO mail-qk0-f174.google.com) (209.85.220.174) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 27 Nov 2017 12:44:34 +0000 Received: by mail-qk0-f174.google.com with SMTP id 78so32135791qkz.0 for ; Mon, 27 Nov 2017 04:44:34 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=KbTbtOULA9PD5uLkVFdwncX4QbQz5CD5HNqF3x2EJMc=; b=jKIU+DFf1wsB5NOWuoR60YVF52EpwkZ7ntwsGQaUxIs6sriAADqts11IN1QPt0EfbS /xW+nvg8KXC3GO/Cvk6+Kzk55wXVo4RfNhWKwulVlU7/AT0jdSw02Oe4AM+zqY6/d03f BX/gYn9Nuuervl/F8iJ2ZVAwhmsDkzrxD1M0BZsTuJD75aP7LGCxP3m2YHr48Zt2jXpZ DE9yFnpmOnmNy9zVB+DZq8zDagoWX+1lYjzKLbMQCPWHrB4Hd8tn9o5KaDSZpiUzlcNo oJxO+JMPZ9qVo80eC+KurKH/sZ7gJKcS29CFkLK4Yeqr/7Rsbb2T2Fq/LXJkW1HRMovo kejQ== X-Gm-Message-State: AJaThX5Ax2rLQa9LbcPq31POW1fLPJp1f3xfrWqPOOQ0i1syoTh4/FTZ NPGgnpTHlZcKW/TViZg4Hk8= X-Google-Smtp-Source: AGs4zMYcx9HiC+GYj8fIBvAtrmzxxVSeNMNxBbGD5gH+8l6blzrMR1FLsokempfIxKB+hns3RYpPCw== X-Received: by 10.55.165.213 with SMTP id o204mr30771650qke.314.1511786673080; Mon, 27 Nov 2017 04:44:33 -0800 (PST) Received: from ?IPv6:2620:10d:c0a3:20fb:7500:e7fb:4a6f:2254? ([2620:10d:c091:200::3:38a4]) by smtp.googlemail.com with ESMTPSA id o5sm4278511qtc.72.2017.11.27.04.44.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 Nov 2017 04:44:32 -0800 (PST) Subject: Re: [C++ PATCH] Avoid -Wreturn-type warnings if a switch has default label, no breaks inside of it, but is followed by a break (PR sanitizer/81275) To: Jakub Jelinek , Jason Merrill Cc: gcc-patches@gcc.gnu.org References: <20171124215953.GE14653@tucnak> <20171125090122.GH14653@tucnak> From: Nathan Sidwell Message-ID: Date: Mon, 27 Nov 2017 12:49:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171125090122.GH14653@tucnak> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2017-11/txt/msg02295.txt.bz2 On 11/25/2017 04:01 AM, Jakub Jelinek wrote: > /* Set if the body of a switch stmt contains a default: case label > and does not contain any break; stmts, thus if SWITCH_STMT_BODY > is not empty and doesn't fallthru, then the whole switch stmt > can't. */ > #define SWITCH_STMT_CANT_FALLTHRU_P(NODE) \ > TREE_LANG_FLAG_0 (SWITCH_STMT_CHECK (NODE)) > > Seems the C++ FE already has switch_stack, so we could just add there > a has_default_p, has_break_stmt_p and inside_loop_p flags and both > inside of templates and outside in finish_case_label, in > finish_break_stmt if actually adding BREAK_STMT and when entering > a body of a FOR/DO/WHILE loop tweak those flags. Seems switch_stack > is also maintained during pt.c, but we should compute it both during > parsing and during pt.c (start with the bit clear on a new SWITCH_STMT). > > Thoughts on this? Sigh, should have read further. Yes, I'm all for setting such a flag during construction. (I presume doing so is essentially free) nathan -- Nathan Sidwell