| delorie.com/archives/browse.cgi | search |
| X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f |
| NNTP-Posting-Date: | Wed, 18 Apr 2007 21:17:31 -0500 |
| From: | "Alexei A. Frounze" <alexfru AT chat DOT ru> |
| Newsgroups: | comp.os.msdos.djgpp |
| References: | <LbadnVsa3_H-ornbnZ2dnUVZ_sudnZ2d AT comcast DOT com> <200704181529 DOT l3IFT3UV004286 AT localhost DOT localdomain> <e5ydncgDqNRPVLvbnZ2dnUVZ_uSgnZ2d AT comcast DOT com> |
| Subject: | Re: gcc bug? |
| Date: | Wed, 18 Apr 2007 19:14:11 -0700 |
| MIME-Version: | 1.0 |
| X-Priority: | 3 |
| X-MSMail-Priority: | Normal |
| X-Newsreader: | Microsoft Outlook Express 6.00.2900.3028 |
| X-MimeOLE: | Produced By Microsoft MimeOLE V6.00.2900.3028 |
| Message-ID: | <3bGdnV_ErqKmTLvbnZ2dnUVZ_sWdnZ2d@comcast.com> |
| Lines: | 26 |
| NNTP-Posting-Host: | 67.170.72.236 |
| X-Trace: | sv3-4yGhW0ca7rFhv0YriURK9VMuwopz0xNxN2ESbPTswuZzCRIb1+Vuo5qEPh2jsK7YLb5u2tgs/XNJ4CL!Iw5b+ME2KByl/lT9dunjJUNpnrT4aWaF8wJtfgQ+P5VaBKjU4hCpRuoyyG83atdcWxuf9O0VMWB3!ElFhdqYfGHwLUyqNHP3Oc9nCTd1y4g== |
| X-Complaints-To: | abuse AT comcast DOT net |
| X-DMCA-Complaints-To: | dmca AT comcast DOT net |
| X-Abuse-and-DMCA-Info: | Please be sure to forward a copy of ALL headers |
| X-Abuse-and-DMCA-Info: | Otherwise we will be unable to process your complaint properly |
| X-Postfilter: | 1.3.34 |
| To: | djgpp AT delorie DOT com |
| DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
| Reply-To: | djgpp AT delorie DOT com |
Alexei A. Frounze wrote:
> DJ Delorie wrote:
>> Part of the problem may be that your volatile variable is on the
>> stack, rather than being a global or static variable. You've also
>> defined it as "pointer to volatile T" not "volatile pointer to T".
>
> But from where did gcc get the idea of the variable (to which the
> pointer points, at address 0) being zero?
Oh, I see. If in f1() I assign the pointer to 1, then the asm output
(obtained with -O2 optimization switch) is this:
_f1:
pushl %ebp
movl %esp, %ebp
.p2align 4,,7
L2:
movb 1, %al
testb %al, %al
jne L2
popl %ebp
ret
For some reason the compiler decides that the pointer to the variable and
that variable are the same thing.
Alex
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |