Re: Bounds checking, Optimization techniques and undefined behavior

Bart <bc@freeuk.com>
Wed, 8 May 2019 14:37:31 +0100

          From comp.compilers

Related articles
[29 earlier articles]
Re: Bounds checking, Optimization techniques and undefined behavior bc@freeuk.com (Bart) (2019-05-08)
Re: Bounds checking, Optimization techniques and undefined behavior anw@cuboid.co.uk (Andy Walker) (2019-05-08)
Re: Bounds checking, Optimization techniques and undefined behavior david.brown@hesbynett.no (David Brown) (2019-05-08)
Re: Bounds checking, Optimization techniques and undefined behavior david.brown@hesbynett.no (David Brown) (2019-05-08)
Re: Bounds checking, Optimization techniques and undefined behavior david.brown@hesbynett.no (David Brown) (2019-05-08)
Re: Bounds checking, Optimization techniques and undefined behavior david.brown@hesbynett.no (David Brown) (2019-05-08)
Re: Bounds checking, Optimization techniques and undefined behavior bc@freeuk.com (Bart) (2019-05-08)
Re: Bounds checking, Optimization techniques and undefined behavior derek@_NOSPAM_knosof.co.uk (Derek M. Jones) (2019-05-08)
Re: Bounds checking, Optimization techniques and undefined behavior bc@freeuk.com (Bart) (2019-05-09)
Re: Bounds checking, Optimization techniques and undefined behavior david.brown@hesbynett.no (David Brown) (2019-05-09)
Re: Bounds checking, Optimization techniques and undefined behavior david.brown@hesbynett.no (David Brown) (2019-05-09)
Re: Bounds checking, Optimization techniques and undefined behavior 847-115-0292@kylheku.com (Kaz Kylheku) (2019-05-10)
| List of all articles for this month |
From: Bart <bc@freeuk.com>
Newsgroups: comp.compilers
Date: Wed, 8 May 2019 14:37:31 +0100
Organization: virginmedia.com
References: 19-04-021 19-04-023 19-04-037 19-04-039 19-04-042 19-04-044 19-04-047 19-05-004 19-05-006 19-05-016 19-05-020 19-05-024 19-05-025 19-05-028 19-05-029 19-05-034 19-05-045
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="57482"; mail-complaints-to="abuse@iecc.com"
Keywords: C, design
Posted-Date: 08 May 2019 12:46:45 EDT
Content-Language: en-GB

On 07/05/2019 10:04, David Brown wrote:
> On 06/05/2019 10:15, Hans-Peter Diettrich wrote:


>> I learned to love the Pascal indexing instead of pointers, because a
>> loop like
>>   for i := 1 to 10 do sum := sum + A[i];
>> can be optimized safely by the Pascal/Delphi compiler into pointer and
>> auto increment, so that no speed penalty exists vs. explicit pointer
>> usage. But in a C for loop the index variable can be changed in code, so
>> that even above code would execute slower with bounds checks.
>>
>
> It will not be slower in C - because the compiler knows that "i" is
> never changed in the loop. (I'd like some way to have that enforced in
> C, but I don't know of any good method.)


Making loop variables declared in a for-header be implicitly 'const'
could be done:


        for (int i=0; i<N; ++i)


This can be the same as 'const i=0'.


The problem is that in such a loop (of the kind I frequently malign in
c.l.c and you always disagree), the code to increment this loop variable
is in user-code. So it is subject to the same rules as all other code,
and i cannot be changed.


In a more typical for-loop, such increments are done behind the scenes,
while still keeping the loop index read-only in user-code.


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.