On Thu, 16 Aug 2007, Linus Torvalds wrote: > On Fri, 17 Aug 2007, Paul Mackerras wrote: > > I'm really surprised it's as much as a few K. I tried it on powerpc > > and it only saved 40 bytes (10 instructions) for a G5 config. > > One of the things that "volatile" generally screws up is a simple > > volatile int i; > > i++; > > which a compiler will generally get horribly, horribly wrong. > > In a reasonable world, gcc should just make that be (on x86) > > addl $1,i(%rip) > > on x86-64, which is indeed what it does without the volatile. But with the > volatile, the compiler gets really nervous, and doesn't dare do it in one > instruction, and thus generates crap like > > movl i(%rip), %eax > addl $1, %eax > movl %eax, i(%rip) > > instead. For no good reason, except that "volatile" just doesn't have any > good/clear semantics for the compiler, so most compilers will just make it > be "I will not touch this access in any way, shape, or form". Including > even trivially correct instruction optimization/combination.
Apart from having to fetch more bytes for the instructions (which does matter), execution time is probably the same on modern processors, as they convert the single instruction to RISC-style load, modify, store anyway. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html