Thread (121 messages) 121 messages, 13 authors, 2021-09-24

Re: [RFC] LKMM: Add volatile_if()

From: Alan Stern <stern@rowland.harvard.edu>
Date: 2021-06-06 13:45:37
Also in: linux-toolchains, lkml

On Sun, Jun 06, 2021 at 06:53:36AM -0500, Segher Boessenkool wrote:
On Sat, Jun 05, 2021 at 09:29:03PM -0400, Alan Stern wrote:
quoted
Interesting.  And changing one of the branches from barrier() to __asm__ 
__volatile__("nop": : :"memory") also causes a branch to be emitted.  So 
even though the compiler doesn't "look inside" assembly code, it does 
compare two pieces at least textually and apparently assumes if they are 
identical then they do the same thing.
And that is a simple fact, since the same assembler code (at the same
spot in the program) will do the same thing no matter how that ended up
there.
Sure.  But the same assembler code at two different spots in the program 
might not do the same thing.  (Think of code that stores the current EIP 
register's value into a variable.)

So while de-duplicating such code may be allowed, it will give rise to 
observable results at execution time.

Alan
And the compiler always is allowed to duplicate, join, delete, you name
it, inline assembler code.  The only thing that it cares about is
semantics of the code, just like for any other code.


Segher
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help