From: | George Neuner <gneuner2@comcast.net> |
Newsgroups: | comp.compilers |
Date: | Thu, 08 Sep 2016 11:58:41 -0400 |
Organization: | A noiseless patient Spider |
References: | 16-09-001 16-09-005 16-09-009 16-09-012 |
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 |
On Tue, 6 Sep 2016 21:35:30 +0100, BartC <bc@freeuk.com> 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
Return to the
comp.compilers page.
Search the
comp.compilers archives again.