[LLVMbugs] [Bug 18994] New: MS style ASM results in assertion failure

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Feb 27 10:31:13 PST 2014


http://llvm.org/bugs/show_bug.cgi?id=18994

            Bug ID: 18994
           Summary: MS style ASM results in assertion failure
           Product: clang
           Version: 3.4
          Hardware: PC
                OS: Windows XP
            Status: NEW
          Severity: normal
          Priority: P
         Component: Frontend
          Assignee: unassignedclangbugs at nondot.org
          Reporter: jb.feldman at kyrus-tech.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Created attachment 12159
  --> http://llvm.org/bugs/attachment.cgi?id=12159&action=edit
The crashed asked me to include this, so I did.

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\3790~1.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\3790~1.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

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140227/1b824d0e/attachment.html>


More information about the llvm-bugs mailing list