X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f From: "Bob W" Newsgroups: comp.os.msdos.djgpp Subject: Re: new gcc 4.10 behaviour Date: 28 Mar 2006 11:16:20 -0800 Organization: http://groups.google.com Lines: 31 Message-ID: <1143573380.032350.9140@g10g2000cwb.googlegroups.com> References: <1143542847 DOT 613686 DOT 87820 AT v46g2000cwv DOT googlegroups DOT com> <48sjvaFlir4cU1 AT news DOT dfncis DOT de> NNTP-Posting-Host: 84.102.38.180 Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" X-Trace: posting.google.com 1143573388 26327 127.0.0.1 (28 Mar 2006 19:16:28 GMT) X-Complaints-To: groups-abuse AT google DOT com NNTP-Posting-Date: Tue, 28 Mar 2006 19:16:28 +0000 (UTC) User-Agent: G2/0.2 X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727),gzip(gfe),gzip(gfe) Complaints-To: groups-abuse AT google DOT com Injection-Info: g10g2000cwb.googlegroups.com; posting-host=84.102.38.180; posting-account=CXf2IQ0AAADhHwR4LIBYSPHMQKV3cPd3 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Good post, thanks! This has finally forced me into checking the assembly output and the following seems to occur: Gcc creates its own global version of Ack(), which is called either once or twice by main() - depending on the supplied parameter value. Unfortunately t1=clock() is executed before Ack() is eventually called the second time by main(). There is no obvious performance reason why this is happening, although it might have minor effects on code size. But I have to admit that there is also no reason to expect gcc to be in conformance with my expectations. At least I now think to understand why and how timing of Ack() gets distorted by gcc's optimisation. The only remidy to synchronize calls to Ack() and clock() seems to be to assign the return value of Ack() to either a global variable or declare "ackret" static. The second phenomenon ("program terminates without output") might be caused by a stack overflow if the parameter value gets too high. As for "to speed up things even more" - I have not noticed any breathtaking speed improvements of gcc 4.10 over previous versions.