On Fri, 26 Oct 2007, Andrew Haley wrote:Note that doing so is perfectly fine. But only for local variables that haven't had their addresses taken. The fact is, those kinds of variables really *are* special. They are provably not accessible from any other context, and re-ordering them (or doing anything AT ALL to them - the most basic and very important optimization is caching them in registers, of course) is always purely an internal compiler issue. But if gcc re-orders functions calls with *other* memory accesses, gcc is totally broken. I doubt it does that. It would break on all but the most trivial programs, and it would be a clear violation of even standard C. HOWEVER: the bug that started this thread isn't even "reordering accesses", it's *adding* accesses that weren't there (and please don't mix this up with "volatile", since volatile is a totally unrelated issue and has nothing what-so-ever to do with anything). Linus -
| Jan Engelhardt | intel iommu (Re: -mm merge plans for 2.6.23) |
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Rafael J. Wysocki | Re: Linux 2.6.27-rc5: System boot regression caused by commit a2bd7274b47124d2fc4d... |
git: | |
| Gerrit Renker | [PATCH 0/37] dccp: Feature negotiation - last call for comments |
| David Miller | [GIT]: Networking |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
