diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2006-09-17 20:25:45 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2006-09-17 20:25:45 +0000 |
commit | 6f7072c66a84a26644572efb1a0ba35bb7e70732 (patch) | |
tree | c3f37b02038c1aa88e40a67b768f86f21bb1347d /llvm/lib/AsmParser/llvmAsmParser.y | |
parent | f16dc007e652c6d935abef319db8f0cbc9912416 (diff) | |
download | bcm5719-llvm-6f7072c66a84a26644572efb1a0ba35bb7e70732.tar.gz bcm5719-llvm-6f7072c66a84a26644572efb1a0ba35bb7e70732.zip |
Added some eye-candy for Subtarget type checking
Added X86 StdCall & FastCall calling conventions. Codegen will follow.
llvm-svn: 30446
Diffstat (limited to 'llvm/lib/AsmParser/llvmAsmParser.y')
-rw-r--r-- | llvm/lib/AsmParser/llvmAsmParser.y | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/llvm/lib/AsmParser/llvmAsmParser.y b/llvm/lib/AsmParser/llvmAsmParser.y index bdfa07af437..a3ff24346ba 100644 --- a/llvm/lib/AsmParser/llvmAsmParser.y +++ b/llvm/lib/AsmParser/llvmAsmParser.y @@ -1006,6 +1006,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { %token OPAQUE NOT EXTERNAL TARGET TRIPLE ENDIAN POINTERSIZE LITTLE BIG ALIGN %token DEPLIBS CALL TAIL ASM_TOK MODULE SIDEEFFECT %token CC_TOK CCC_TOK CSRETCC_TOK FASTCC_TOK COLDCC_TOK +%token X86_STDCALLCC_TOK X86_FASTCALLCC_TOK %type <UIntVal> OptCallingConv // Basic Block Terminating Operators @@ -1083,12 +1084,14 @@ OptLinkage : INTERNAL { $$ = GlobalValue::InternalLinkage; } | EXTERN_WEAK { $$ = GlobalValue::ExternalWeakLinkage; } | /*empty*/ { $$ = GlobalValue::ExternalLinkage; }; -OptCallingConv : /*empty*/ { $$ = CallingConv::C; } | - CCC_TOK { $$ = CallingConv::C; } | - CSRETCC_TOK { $$ = CallingConv::CSRet; } | - FASTCC_TOK { $$ = CallingConv::Fast; } | - COLDCC_TOK { $$ = CallingConv::Cold; } | - CC_TOK EUINT64VAL { +OptCallingConv : /*empty*/ { $$ = CallingConv::C; } | + CCC_TOK { $$ = CallingConv::C; } | + CSRETCC_TOK { $$ = CallingConv::CSRet; } | + FASTCC_TOK { $$ = CallingConv::Fast; } | + COLDCC_TOK { $$ = CallingConv::Cold; } | + X86_STDCALLCC_TOK { $$ = CallingConv::X86_StdCall; } | + X86_FASTCALLCC_TOK { $$ = CallingConv::X86_FastCall; } | + CC_TOK EUINT64VAL { if ((unsigned)$2 != $2) GEN_ERROR("Calling conv too large!"); $$ = $2; |