basic asm and memory clobbers - Proposed solution
Paul_Koning@Dell.com
Paul_Koning@Dell.com
Mon Nov 30 15:55:00 GMT 2015
> On Nov 29, 2015, at 6:53 PM, David Wohlferd <dw@LimeGreenSocks.com> wrote:
>
>
>
> On 11/28/2015 10:30 AM, Paul_Koning@Dell.com wrote:
>>> On Nov 28, 2015, at 2:02 AM, Bernd Edlinger <bernd.edlinger@hotmail.de> wrote:
>>>
>>> ...
>>> Well, I start to think that Jeff is right, and we should treat a asm ("") as if it
>>> were asm volatile ("" ::: ) but if the asm ("nonempty with optional %") we should
>>> treat it as asm volatile ("nonempty with optional %%" ::: "memory").
>> I agree. Even if that goes beyond the letter of what the manual has promised before, it is the cautious answer, and it matches expectations of a lot of existing code.
>
> Trying to guess what people might have been expecting is a losing game. There is a way for people to be clear about what they want to clobber, and that's to use extended asm. The way to clear up the ambiguity is to start deprecating basic asm, not to add to the confusion by changing its behavior after all these years.
>
> And the first step to do that is to provide a means of finding them. That's what the patch at https://gcc.gnu.org/ml/gcc/2015-11/msg00198.html does.
>
> Once they are located, people can decide for themselves what to do. If they favor the 'cautious' approach, they can change their asms to use :::"memory" (or start clobbering registers too, to be *really* safe). For people who require maximum backward compatibility and/or minimum impact, they can use :::.
>
> Have you tried that patch? How many warnings does it kick out for your projects?
The trouble with warnings is that they only help with projects that are currently maintained.
paul
More information about the Gcc
mailing list