[cfe-dev] MS style ASM failure and crash
JB Feldman
jb.feldman at kyrus-tech.com
Thu Feb 27 17:47:50 PST 2014
I don't understand what you mean by that. By Decl, I assumed you meant the
TypedefNameDecl created for the object "KPCR", but as far as I can tell,
only types have a getAs field.
For actually solving the problem, it seems that "fs:[0] 12" is equivalent
to "fs:[12]". I see that there are several calls to
AsmRewrites->push_back... is there a way to amend the most recent thing you
pushed onto that object?
Thanks,
JB
On Thu, Feb 27, 2014 at 12:23 PM, Reid Kleckner <rnk at google.com> wrote:
> It is, but you probably want to look for any RecordDecl to see if it's
> possible to do a field access. You can use Decl->getAs<RecordDecl>() to
> look through typedefs automatically.
>
>
> On Thu, Feb 27, 2014 at 11:12 AM, JB Feldman <jb.feldman at kyrus-tech.com>wrote:
>
>> I'm trying to track this down, am I correct that in the example I pasted
>> above: "KPCR" (in the bug report, "s") should be a TypedefNameDecl?
>>
>>
>> On Thu, Feb 27, 2014 at 11:38 AM, JB Feldman <jb.feldman at kyrus-tech.com>wrote:
>>
>>> Bug has been filed: http://llvm.org/bugs/show_bug.cgi?id=18994
>>>
>>>
>>> On Thu, Feb 27, 2014 at 10:52 AM, Reid Kleckner <rnk at google.com> wrote:
>>>
>>>> This also happens (just once) in the Chromium build:
>>>>
>>>> http://build.chromium.org/p/chromium.fyi/builders/Chromium%20Win%20Clang/builds/645/steps/compile/logs/stdio
>>>>
>>>> Parsing this involves Clang and
>>>> llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp. It's really tricky because
>>>> C++ expressions can occur in lots of places, making it harder to parse the
>>>> assembly.
>>>>
>>>> Feel free to file a bug on this.
>>>>
>>>>
>>>> On Thu, Feb 27, 2014 at 7:22 AM, JB Feldman <jb.feldman at kyrus-tech.com>wrote:
>>>>
>>>>> Hi guys,
>>>>>
>>>>> I will file a bug report in a little bit (once I get a minimal test
>>>>> case) but I wanted to ask if anyone understands the problem I'm seeing.
>>>>>
>>>>> Trying to include ntddk.h and compiling with clang-cl, I get the
>>>>> following message:
>>>>>
>>>>> In file included from kbfiltr.c:19:
>>>>> In file included from ./kbfiltr.h:28:
>>>>> C:\WINDDK\3790.1830\inc\ddk\wxp\ntddk.h(7149,29) : error: unexpected
>>>>> type name
>>>>> 'KPCR': expected expression
>>>>> __asm { movzx eax, _PCR KPCR.Number }
>>>>> ^
>>>>> Assertion failed: End.getPointer() <= EndPtr && "frontend claimed part
>>>>> of a token?", file
>>>>> ..\..\..\..\..\lib\Target\X86\AsmParser\X86AsmParser.cpp, line 1481
>>>>> clang-cl.exe: error: clang frontend command failed with exit code 3
>>>>> (use -v to s
>>>>> ee invocation)
>>>>>
>>>>> The assertion failure obviously results in a crash.
>>>>>
>>>>> So my initial guess was some kind of Lexer issue, maybe because of no
>>>>> semicolon, or... who knows. But then, I rewrote that code to read:
>>>>>
>>>>> int x = FIELD_OFFSET(KPCR, Number);
>>>>> __asm { movzx eax, fs:[x] }
>>>>>
>>>>> Which compiles to the same code, and that actually did work with
>>>>> clang-cl. Can anyone tell me why one works and the other doesn't? (My
>>>>> guess: MS not following standard Intel notation spec)
>>>>>
>>>>> Thanks,
>>>>> JB
>>>>>
>>>>> _______________________________________________
>>>>> cfe-dev mailing list
>>>>> cfe-dev at cs.uiuc.edu
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140227/d6ed46b5/attachment.html>
More information about the cfe-dev
mailing list