On Sun, 22 May 2016, Andrew Haley wrote: > On 05/20/2016 07:50 AM, David Wohlferd wrote: > > > At a minimum, suddenly forcing an unexpected/unneeded memory clobber > > can adversely impact the optimization of surrounding code. This can > > be particularly annoying if the reason for the asm was to improve > > performance. And adding a memory clobber does add a dependency of > > sorts, which might cause the location of the asm to shift in an > > unfortunate way. And there's always the long-shot possibility that > > some weird quirk or (very) badly-written code will cause the asm to > > flat out fail when used with a memory clobber. And if this change > > does produce any of these problems, I feel pity for whoever has to > > track it down. > > OTOH, if a memory clobber does change code gen it probably changes it > in a way which better fits user expectations, and perhaps it fixes a > bug. That's a win, and it is far, far more important than any other > consideration. > > Given that a basic asm statements has neither inputs nor outputs, it > must have side effects to be useful. All this patch does is recognize > that fact. I'm not saying your scenario won't occur, but it won't in > the majority of cases. > > > I realize deprecation/removal is drastic. Especially since basic > > asm (mostly) works as is. But fixing memory clobbers while leaving > > the rest broken feels like half a solution, meaning that some day > > we're going to have to fiddle with this again. > > Yes, we will undoubtedly have to fiddle with basic asm again. We > should plan for deprecation. > > But I think you're close to the all-or-nothing fallacy: that because > this patch doesn't solve all the problems with basic asm, it isn't > worth having.
I think adding memory clobbers is worth having. I also think that deprecating basic asms would be a good thing, so can we please add a new warning for that? "warning: basic asms are deprecated" Richard.