Path: csiph.com!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: George Neuner Newsgroups: comp.compilers Subject: Re: dead code or otherwise, was Alternative C compilers on x86_64 Linux? Date: Thu, 08 Sep 2016 11:58:41 -0400 Organization: A noiseless patient Spider Lines: 36 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <16-09-015@comp.compilers> References: <16-09-001@comp.compilers> <16-09-005@comp.compilers> <16-09-009@comp.compilers> <16-09-012@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit Injection-Info: miucha.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="92304"; mail-complaints-to="abuse@iecc.com" Keywords: C, optimize Posted-Date: 08 Sep 2016 16:48:10 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:1754 On Tue, 6 Sep 2016 21:35:30 +0100, BartC wrote: >On 06/09/2016 03:15, Kaz Kylheku wrote: > >> A duplicate condition in an if-else chain is unreachable code, which is >> probably a bug. >> >> if (foo) { >> ... >> } else if (foo) { >> /* unreachable */ >> } else if (bar) { >> ... >> } > >It's not necessarily unreachable. For example: > > if (foo()) { ...} > elsif if (foo()) { ... } > >foo() could return false the first time and true the second time. In such cases foo doesn't need to be function - it only needs to be a [moral equivalent of a C] volatile to exhibit strange behavior. Writing an IF chain with multiple identical tests probably should be a style warning in and of itself. >In general detecting duplication conditions for if-else can involve >comparing expressions of arbitrary complexity, and it can be harder to >determine if they will always yield the same value. Yes. It's infeasible in most circumstances. George