[cfe-commits] r161703 - in /cfe/trunk: include/clang/AST/Stmt.h lib/AST/Stmt.cpp
Abramo Bagnara
abramo.bagnara at gmail.com
Mon Aug 13 23:11:57 PDT 2012
Il 13/08/2012 23:54, Eli Friedman ha scritto:
> On Mon, Aug 13, 2012 at 2:01 PM, Richard Smith <richard at metafoo.co.uk> wrote:
>> According to the documentation I can find[1], multiple __asm constructs are
>> separate statements. In particular, the documentation suggests that here:
>>
>> void f() {
>> if (false)
>> __asm mov eax, ebx
>> __asm mov ebx, eax
>> }
>>
>> the second __asm statement is not controlled by the 'if'. If the
>> documentation is correct, we currently misparse this.
>>
>> [1] http://msdn.microsoft.com/en-us/library/45yd4tzz(v=vs.110).aspx
>
> I think clang's interpretation is actually right here, but someone
> should actually try that on MSVC.
void f(int x) {
if (x)
__asm out dx, ax
__asm out dx, ax
if (x)
__asm out dx, ax;
__asm out dx, ax;
if (x)
__asm { out dx, ax };
__asm { out dx, ax };
if (x)
__asm { out dx, ax }
__asm { out dx, ax }
}
For all these case Microsoft Visual C++ 2010 Express has the very same
interpretation that Richard describes and conformant to the documentation.
More information about the cfe-commits
mailing list