Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MS style ASM results in assertion failure #19368

Closed
llvmbot opened this issue Feb 27, 2014 · 2 comments
Closed

MS style ASM results in assertion failure #19368

llvmbot opened this issue Feb 27, 2014 · 2 comments
Labels
bugzilla Issues migrated from bugzilla clang:frontend Language frontend issues, e.g. anything involving "Sema"

Comments

@llvmbot
Copy link
Member

llvmbot commented Feb 27, 2014

Bugzilla Link 18994
Resolution FIXED
Resolved on Mar 07, 2014 22:26
Version 3.4
OS Windows XP
Attachments The crashed asked me to include this, so I did.
Reporter LLVM Bugzilla Contributor
CC @majnemer,@rnk

Extended Description

This bug was discovered when trying to include ntddk.h (from the 3790 version of the DDK). Minimal code necessary to reproduce is:

#define _PCR fs:[0]

typedef struct _s {
int value;
} s;

unsigned int DriverEntry()    
{
__asm { movzx eax, _PCR s.value }

}  

This results in the following output

$>clang-cl driver.c
driver.c(17,25) : error: unexpected type name 's': expected expression
__asm { movzx eax, _PCR s.value }
^
Assertion failed: End.getPointer() <= EndPtr && "frontend claimed part of a toke
n?", file ..........\lib\Target\X86\AsmParser\X86AsmParser.cpp, line 1481
Stack dump:
0. Program arguments: C:\WINDDK\37901.183\bin\clang-cl.exe -cc1 -triple i6
86-pc-win32 -emit-obj -mrelax-all -disable-free -main-file-name driver.c -mreloc
ation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-al
iases -target-cpu pentium4 -D_MT --dependent-lib=libcmt --dependent-lib=oldnames
-cxx-abi microsoft -fdiagnostics-format msvc -resource-dir C:\WINDDK\3790
1.183
\bin..\lib\clang\3.5 -internal-isystem C:\WINDDK\37901.183\bin..\lib\clang\3.
5\include -internal-isystem C:\WINDDK\3790
1.183\inc\w2K -fdebug-compilation-dir
C:\Users\XXX\Desktop\helloworld -ferror-limit 19 -fmessage-length 80 -mstackrea
lign -fms-extensions -fms-compatibility -fmsc-version=1700 -fdelayed-template-pa
rsing -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -vectoriz
e-slp -o C:\Users\XXX\AppData\Local\Temp\driver-224438.obj -x c driver.c

  1.  driver.c:19:1: current parser token '}'
    
  2.  driver.c:16:1: parsing function body 'DriverEntry'
    
  3.  driver.c:16:1: in compound statement ('{}')
    

0x5C0A14FA (0x0000000A 0x00000000 0x04E7AF30 0x5C179AC4), memcmp() + 0xABA bytes
(s)
0x5C18B26C (0x04E7AF80 0x04E7AF44 0x0000009E 0x5C1EACA8), abort() + 0x1C bytes(s
)
0x5C179AC4 (0x03956888 0x03956810 0x000005C9 0x04E7B0D0), _wassert() + 0xD4 byte
s(s)
0x008086E7 (0x04E7B0B0 0x04E7B094 0x04E7B204 0x00000000), anonymous namespace': :X86AsmParser::ParseIntelIdentifier() + 0x127 bytes(s), c:\llvm\llvm\lib\target\ x86\asmparser\x86asmparser.cpp, line 1481 + 0x2D byte(s) 0x00807C61 (0x04E7B164 0x04E7B230 0x04E7B328 0x04E7B26C), anonymous namespace':
:X86AsmParser::ParseIntelExpression() + 0x251 bytes(s), c:\llvm\llvm\lib\target
x86\asmparser\x86asmparser.cpp, line 1338 + 0x1A byte(s)
0x008081CC (0x00000020 0x04E7C73F 0x00000000 0x00000000), anonymous namespace': :X86AsmParser::ParseIntelBracExpression() + 0xDC bytes(s), c:\llvm\llvm\lib\targ et\x86\asmparser\x86asmparser.cpp, line 1410 + 0x13 byte(s) 0x0080768B (0x00000020 0x04E7C73F 0x00000000 0x04E7B9C4), anonymous namespace':
:X86AsmParser::ParseIntelSegmentOverride() + 0x21B bytes(s), c:\llvm\llvm\lib\ta
rget\x86\asmparser\x86asmparser.cpp, line 1524 + 0x1C byte(s)
0x00806C7D (0x0513EDF8 0x04E7B9C4 0x0080D6A2 0x04E7BD2C), anonymous namespace': :X86AsmParser::ParseIntelOperand() + 0x64D bytes(s), c:\llvm\llvm\lib\target\x86 \asmparser\x86asmparser.cpp, line 1760 + 0x17 byte(s) 0x00806375 (0x04E7BD2C 0x04E7B9E0 0xCCCCCCCC 0xCCCCCCCC), anonymous namespace':
:X86AsmParser::ParseOperand() + 0x25 bytes(s), c:\llvm\llvm\lib\target\x86\asmpa
rser\x86asmparser.cpp, line 1180 + 0x8 byte(s)
0x0080D6A2 (0x04E7BC88 0x04E7BC98 0x00000005 0x04E7C734), anonymous namespace': :X86AsmParser::ParseInstruction() + 0xAD2 bytes(s), c:\llvm\llvm\lib\target\x86\ asmparser\x86asmparser.cpp, line 2068 + 0x8 byte(s) 0x00CAC89D (0x04E7BF24 0x04E7CB04 0x04E7C1A0 0xCCCCCCCC), anonymous namespace':
:AsmParser::parseStatement() + 0xFDD bytes(s), c:\llvm\llvm\lib\mc\mcparser\asmp
arser.cpp, line 1541 + 0x41 byte(s)
0x00CA94A0 (0x000000E3 0x04E7C414 0x04E7C444 0x04E7C438), `anonymous namespace':
:AsmParser::parseMSInlineAsm() + 0xF0 bytes(s), c:\llvm\llvm\lib\mc\mcparser\asm
parser.cpp, line 4194 + 0xF byte(s)
0x0219E4D1 (0x04E7CDF0 0x000000E3 0x04E7CEC0 0x04E7E104), clang::Parser::ParseMi
crosoftAsmStatement() + 0xAE1 bytes(s), c:\llvm\llvm\tools\clang\lib\parse\parse
stmt.cpp, line 2202 + 0x6E byte(s)
0x0219D1C2 (0x04E7CDF0 0x04E7CE33 0x04E7CF24 0x00000076), clang::Parser::ParseAs
mStatement() + 0xC2 bytes(s), c:\llvm\llvm\tools\clang\lib\parse\parsestmt.cpp,
line 2261 + 0x10 byte(s)
0x021989D5 (0x04E7CEE8 0x04E7D124 0x00000000 0x00000000), clang::Parser::ParseSt
atementOrDeclarationAfterAttributes() + 0x4E5 bytes(s), c:\llvm\llvm\tools\clang
\lib\parse\parsestmt.cpp, line 280 + 0x16 byte(s)
0x021983B7 (0x04E7CF5C 0x04E7D124 0x00000000 0x00000000), clang::Parser::ParseSt
atementOrDeclaration() + 0x67 bytes(s), c:\llvm\llvm\tools\clang\lib\parse\parse
stmt.cpp, line 121
0x0219A4E9 (0x04E7D260 0x00000000 0x04E7D48C 0x04E7E104), clang::Parser::ParseCo
mpoundStatementBody() + 0x399 bytes(s), c:\llvm\llvm\tools\clang\lib\parse\parse
stmt.cpp, line 902 + 0x1A byte(s)
0x021A038F (0x050FDAE0 0x04E7D378 0x04E7DA90 0x04E7E104), clang::Parser::ParseFu
nctionStatementBody() + 0xDF bytes(s), c:\llvm\llvm\tools\clang\lib\parse\parses
tmt.cpp, line 2459
0x02147976 (0x04E7D620 0x04E7D52C 0x04E7D600 0x04E7DB24), clang::Parser::ParseFu
nctionDefinition() + 0x9B6 bytes(s), c:\llvm\llvm\tools\clang\lib\parse\parser.c
pp, line 1186 + 0x16 byte(s)
0x02160BA9 (0x04E7E0A8 0x04E7DB5C 0x00000000 0x00000001), clang::Parser::ParseDe
clGroup() + 0x179 bytes(s), c:\llvm\llvm\tools\clang\lib\parse\parsedecl.cpp, li
ne 1700 + 0x22 byte(s)
0x02146F4E (0x04E7E0A8 0x04E7E0D0 0x04E7DB5C 0x00000003), clang::Parser::ParseDe
clOrFunctionDefInternal() + 0x2CE bytes(s), c:\llvm\llvm\tools\clang\lib\parse\p
arser.cpp, line 953 + 0x18 byte(s)
0x02146C09 (0x04E7E0A8 0x04E7E0D0 0x00000000 0x00000003), clang::Parser::ParseDe
clarationOrFunctionDefinition() + 0x89 bytes(s), c:\llvm\llvm\tools\clang\lib\pa
rse\parser.cpp, line 969 + 0x1B byte(s)
0x02146614 (0x04E7E0A8 0x04E7E0D0 0x00000000 0x04E7E188), clang::Parser::ParseEx
ternalDeclaration() + 0x934 bytes(s), c:\llvm\llvm\tools\clang\lib\parse\parser.
cpp, line 828 + 0x16 byte(s)
0x0214310F (0x04E7E140 0x04E7E394 0x04E7E198 0x0513B548), clang::Parser::ParseTo
pLevelDecl() + 0x1DF bytes(s), c:\llvm\llvm\tools\clang\lib\parse\parser.cpp, li
ne 633 + 0x12 byte(s)
0x02140E49 (0x0512D9B8 0x00000000 0x00000000 0x04E7E39C), clang::ParseAST() + 0x
1B9 bytes(s), c:\llvm\llvm\tools\clang\lib\parse\parseast.cpp, line 144 + 0xC by
te(s)
0x01603901 (0x04E7E418 0xCCCCCCCC 0xCCCCCCCC 0xCCCCCCCC), clang::ASTFrontendActi
on::ExecuteAction() + 0x101 bytes(s), c:\llvm\llvm\tools\clang\lib\frontend\fron
tendaction.cpp, line 477 + 0x30 byte(s)
0x01F64286 (0x04E7E3C4 0xCCCCCCCC 0xCCCCCCCC 0xCCCCCCCC), clang::CodeGenAction::
ExecuteAction() + 0x3A6 bytes(s), c:\llvm\llvm\tools\clang\lib\codegen\codegenac
tion.cpp, line 432
0x0160351C (0x04E7E4B4 0x04E7F51C 0xCCCCCCCC 0xCCCCCCCC), clang::FrontendAction:
:Execute() + 0xAC bytes(s), c:\llvm\llvm\tools\clang\lib\frontend\frontendaction
.cpp, line 379 + 0xF byte(s)
0x015D4E01 (0x050D28A0 0x04E7EA14 0xCCCCCCCC 0xCCCCCCCC), clang::CompilerInstanc
e::ExecuteAction() + 0x281 bytes(s), c:\llvm\llvm\tools\clang\lib\frontend\compi
lerinstance.cpp, line 708
0x01705C5B (0x050D13D0 0x04E7F93C 0xCCCCCCCC 0xCCCCCCCC), clang::ExecuteCompiler
Invocation() + 0x30B bytes(s), c:\llvm\llvm\tools\clang\lib\frontendtool\execute
compilerinvocation.cpp, line 238 + 0x11 byte(s)
0x0027B310 (0x04E7F524 0x04E7F5E4 0x050D41F8 0x001C12F3), cc1_main() + 0x2F0 byt
es(s), c:\llvm\llvm\tools\clang\tools\driver\cc1_main.cpp, line 101 + 0xE byte(s
)
0x0026BA3F (0x00000032 0x050D0F00 0x050C95A8 0x9303FCE3), main() + 0x22F bytes(s
), c:\llvm\llvm\tools\clang\tools\driver\driver.cpp, line 315 + 0x45 byte(s)
0x02BC29D9 (0x04E7F9A0 0x750333AA 0x7EFDE000 0x04E7F9E0), __tmainCRTStartup() +
0x199 bytes(s), f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c, line 626 + 0x19 byte
(s)
0x02BC2B1D (0x7EFDE000 0x04E7F9E0 0x76F19F72 0x7EFDE000), mainCRTStartup() + 0xD
bytes(s), f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c, line 466
0x750333AA (0x7EFDE000 0x7AB23ACF 0x00000000 0x00000000), BaseThreadInitThunk()

  • 0x12 bytes(s)
    0x76F19F72 (0x02BC2B10 0x7EFDE000 0x00000000 0x00000000), RtlInitializeException
    Chain() + 0x63 bytes(s)
    0x76F19F45 (0x02BC2B10 0x7EFDE000 0x00000000 0x00000000), RtlInitializeException
    Chain() + 0x36 bytes(s)
    clang-cl.exe: error: clang frontend command failed due to signal (use -v to see
    invocation)
    clang version 3.5
    Target: i686-pc-win32
    Thread model: posix
    clang-cl.exe: note: diagnostic msg: PLEASE submit a bug report to and include t
    he crash backtrace, preprocessed source, and associated run script.
    clang-cl.exe: note: diagnostic msg:

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-cl.exe: note: diagnostic msg: C:\Users\XXX\AppData\Local\Temp\driver-d39a4
4.c
clang-cl.exe: note: diagnostic msg: C:\Users\XXX\AppData\Local\Temp\driver-d39a4
4.sh
clang-cl.exe: note: diagnostic msg:


This code is mirrored nearly identically in ntddk.h

@rnk
Copy link
Collaborator

rnk commented Mar 6, 2014

Should be fixed in r203146. The solution was to use the code we already have for parsing field access, but let the leading dot be optional.

@llvmbot
Copy link
Member Author

llvmbot commented Mar 8, 2014

Tested against ntddk.h this morning without issue.

@llvmbot llvmbot transferred this issue from llvm/llvm-bugzilla-archive Dec 9, 2021
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugzilla Issues migrated from bugzilla clang:frontend Language frontend issues, e.g. anything involving "Sema"
Projects
None yet
Development

No branches or pull requests

2 participants