Regenerate

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35813 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer 2007-04-09 06:16:21 +00:00
parent 460dd9b644
commit 7b5d466c88
7 changed files with 917 additions and 815 deletions

View File

@ -869,7 +869,7 @@ goto find_rule; \
#define YY_MORE_ADJ 0 #define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET #define YY_RESTORE_YY_MORE_OFFSET
char *yytext; char *yytext;
#line 1 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 1 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
#define INITIAL 0 #define INITIAL 0
/*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===// /*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
// //
@ -884,7 +884,7 @@ char *yytext;
// //
//===----------------------------------------------------------------------===*/ //===----------------------------------------------------------------------===*/
#define YY_NEVER_INTERACTIVE 1 #define YY_NEVER_INTERACTIVE 1
#line 28 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 28 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
#include "ParserInternals.h" #include "ParserInternals.h"
#include "llvm/Module.h" #include "llvm/Module.h"
#include <list> #include <list>
@ -1168,7 +1168,7 @@ YY_DECL
register char *yy_cp = NULL, *yy_bp = NULL; register char *yy_cp = NULL, *yy_bp = NULL;
register int yy_act; register int yy_act;
#line 190 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 190 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
#line 1175 "Lexer.cpp" #line 1175 "Lexer.cpp"
@ -1264,257 +1264,257 @@ do_action: /* This label is used only to access EOF actions. */
{ /* beginning of action switch */ { /* beginning of action switch */
case 1: case 1:
YY_RULE_SETUP YY_RULE_SETUP
#line 192 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 192 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ /* Ignore comments for now */ } { /* Ignore comments for now */ }
YY_BREAK YY_BREAK
case 2: case 2:
YY_RULE_SETUP YY_RULE_SETUP
#line 194 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 194 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return BEGINTOK; } { return BEGINTOK; }
YY_BREAK YY_BREAK
case 3: case 3:
YY_RULE_SETUP YY_RULE_SETUP
#line 195 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 195 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ENDTOK; } { return ENDTOK; }
YY_BREAK YY_BREAK
case 4: case 4:
YY_RULE_SETUP YY_RULE_SETUP
#line 196 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 196 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return TRUETOK; } { return TRUETOK; }
YY_BREAK YY_BREAK
case 5: case 5:
YY_RULE_SETUP YY_RULE_SETUP
#line 197 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 197 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return FALSETOK; } { return FALSETOK; }
YY_BREAK YY_BREAK
case 6: case 6:
YY_RULE_SETUP YY_RULE_SETUP
#line 198 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 198 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DECLARE; } { return DECLARE; }
YY_BREAK YY_BREAK
case 7: case 7:
YY_RULE_SETUP YY_RULE_SETUP
#line 199 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 199 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DEFINE; } { return DEFINE; }
YY_BREAK YY_BREAK
case 8: case 8:
YY_RULE_SETUP YY_RULE_SETUP
#line 200 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 200 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return GLOBAL; } { return GLOBAL; }
YY_BREAK YY_BREAK
case 9: case 9:
YY_RULE_SETUP YY_RULE_SETUP
#line 201 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 201 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return CONSTANT; } { return CONSTANT; }
YY_BREAK YY_BREAK
case 10: case 10:
YY_RULE_SETUP YY_RULE_SETUP
#line 202 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 202 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return INTERNAL; } { return INTERNAL; }
YY_BREAK YY_BREAK
case 11: case 11:
YY_RULE_SETUP YY_RULE_SETUP
#line 203 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 203 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return LINKONCE; } { return LINKONCE; }
YY_BREAK YY_BREAK
case 12: case 12:
YY_RULE_SETUP YY_RULE_SETUP
#line 204 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 204 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return WEAK; } { return WEAK; }
YY_BREAK YY_BREAK
case 13: case 13:
YY_RULE_SETUP YY_RULE_SETUP
#line 205 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 205 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return APPENDING; } { return APPENDING; }
YY_BREAK YY_BREAK
case 14: case 14:
YY_RULE_SETUP YY_RULE_SETUP
#line 206 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 206 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DLLIMPORT; } { return DLLIMPORT; }
YY_BREAK YY_BREAK
case 15: case 15:
YY_RULE_SETUP YY_RULE_SETUP
#line 207 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 207 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DLLEXPORT; } { return DLLEXPORT; }
YY_BREAK YY_BREAK
case 16: case 16:
YY_RULE_SETUP YY_RULE_SETUP
#line 208 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 208 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return HIDDEN; } { return HIDDEN; }
YY_BREAK YY_BREAK
case 17: case 17:
YY_RULE_SETUP YY_RULE_SETUP
#line 209 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 209 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return EXTERN_WEAK; } { return EXTERN_WEAK; }
YY_BREAK YY_BREAK
case 18: case 18:
YY_RULE_SETUP YY_RULE_SETUP
#line 210 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 210 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return EXTERNAL; } { return EXTERNAL; }
YY_BREAK YY_BREAK
case 19: case 19:
YY_RULE_SETUP YY_RULE_SETUP
#line 211 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 211 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ZEROINITIALIZER; } { return ZEROINITIALIZER; }
YY_BREAK YY_BREAK
case 20: case 20:
YY_RULE_SETUP YY_RULE_SETUP
#line 212 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 212 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DOTDOTDOT; } { return DOTDOTDOT; }
YY_BREAK YY_BREAK
case 21: case 21:
YY_RULE_SETUP YY_RULE_SETUP
#line 213 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 213 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UNDEF; } { return UNDEF; }
YY_BREAK YY_BREAK
case 22: case 22:
YY_RULE_SETUP YY_RULE_SETUP
#line 214 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 214 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return NULL_TOK; } { return NULL_TOK; }
YY_BREAK YY_BREAK
case 23: case 23:
YY_RULE_SETUP YY_RULE_SETUP
#line 215 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 215 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return TO; } { return TO; }
YY_BREAK YY_BREAK
case 24: case 24:
YY_RULE_SETUP YY_RULE_SETUP
#line 216 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 216 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return TAIL; } { return TAIL; }
YY_BREAK YY_BREAK
case 25: case 25:
YY_RULE_SETUP YY_RULE_SETUP
#line 217 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 217 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return TARGET; } { return TARGET; }
YY_BREAK YY_BREAK
case 26: case 26:
YY_RULE_SETUP YY_RULE_SETUP
#line 218 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 218 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return TRIPLE; } { return TRIPLE; }
YY_BREAK YY_BREAK
case 27: case 27:
YY_RULE_SETUP YY_RULE_SETUP
#line 219 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 219 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DEPLIBS; } { return DEPLIBS; }
YY_BREAK YY_BREAK
case 28: case 28:
YY_RULE_SETUP YY_RULE_SETUP
#line 220 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 220 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DATALAYOUT; } { return DATALAYOUT; }
YY_BREAK YY_BREAK
case 29: case 29:
YY_RULE_SETUP YY_RULE_SETUP
#line 221 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 221 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return VOLATILE; } { return VOLATILE; }
YY_BREAK YY_BREAK
case 30: case 30:
YY_RULE_SETUP YY_RULE_SETUP
#line 222 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 222 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ALIGN; } { return ALIGN; }
YY_BREAK YY_BREAK
case 31: case 31:
YY_RULE_SETUP YY_RULE_SETUP
#line 223 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 223 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SECTION; } { return SECTION; }
YY_BREAK YY_BREAK
case 32: case 32:
YY_RULE_SETUP YY_RULE_SETUP
#line 224 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 224 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return MODULE; } { return MODULE; }
YY_BREAK YY_BREAK
case 33: case 33:
YY_RULE_SETUP YY_RULE_SETUP
#line 225 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 225 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ASM_TOK; } { return ASM_TOK; }
YY_BREAK YY_BREAK
case 34: case 34:
YY_RULE_SETUP YY_RULE_SETUP
#line 226 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 226 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SIDEEFFECT; } { return SIDEEFFECT; }
YY_BREAK YY_BREAK
case 35: case 35:
YY_RULE_SETUP YY_RULE_SETUP
#line 228 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 228 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return CC_TOK; } { return CC_TOK; }
YY_BREAK YY_BREAK
case 36: case 36:
YY_RULE_SETUP YY_RULE_SETUP
#line 229 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 229 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return CCC_TOK; } { return CCC_TOK; }
YY_BREAK YY_BREAK
case 37: case 37:
YY_RULE_SETUP YY_RULE_SETUP
#line 230 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 230 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return FASTCC_TOK; } { return FASTCC_TOK; }
YY_BREAK YY_BREAK
case 38: case 38:
YY_RULE_SETUP YY_RULE_SETUP
#line 231 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 231 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return COLDCC_TOK; } { return COLDCC_TOK; }
YY_BREAK YY_BREAK
case 39: case 39:
YY_RULE_SETUP YY_RULE_SETUP
#line 232 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 232 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return X86_STDCALLCC_TOK; } { return X86_STDCALLCC_TOK; }
YY_BREAK YY_BREAK
case 40: case 40:
YY_RULE_SETUP YY_RULE_SETUP
#line 233 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 233 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return X86_FASTCALLCC_TOK; } { return X86_FASTCALLCC_TOK; }
YY_BREAK YY_BREAK
case 41: case 41:
YY_RULE_SETUP YY_RULE_SETUP
#line 235 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 235 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return INREG; } { return INREG; }
YY_BREAK YY_BREAK
case 42: case 42:
YY_RULE_SETUP YY_RULE_SETUP
#line 236 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 236 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SRET; } { return SRET; }
YY_BREAK YY_BREAK
case 43: case 43:
YY_RULE_SETUP YY_RULE_SETUP
#line 237 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 237 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return NOUNWIND; } { return NOUNWIND; }
YY_BREAK YY_BREAK
case 44: case 44:
YY_RULE_SETUP YY_RULE_SETUP
#line 238 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 238 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return NORETURN; } { return NORETURN; }
YY_BREAK YY_BREAK
case 45: case 45:
YY_RULE_SETUP YY_RULE_SETUP
#line 240 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 240 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TY(Type::VoidTy, VOID); } { RET_TY(Type::VoidTy, VOID); }
YY_BREAK YY_BREAK
case 46: case 46:
YY_RULE_SETUP YY_RULE_SETUP
#line 241 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 241 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TY(Type::FloatTy, FLOAT); } { RET_TY(Type::FloatTy, FLOAT); }
YY_BREAK YY_BREAK
case 47: case 47:
YY_RULE_SETUP YY_RULE_SETUP
#line 242 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 242 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TY(Type::DoubleTy,DOUBLE);} { RET_TY(Type::DoubleTy,DOUBLE);}
YY_BREAK YY_BREAK
case 48: case 48:
YY_RULE_SETUP YY_RULE_SETUP
#line 243 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 243 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TY(Type::LabelTy, LABEL); } { RET_TY(Type::LabelTy, LABEL); }
YY_BREAK YY_BREAK
case 49: case 49:
YY_RULE_SETUP YY_RULE_SETUP
#line 244 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 244 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return TYPE; } { return TYPE; }
YY_BREAK YY_BREAK
case 50: case 50:
YY_RULE_SETUP YY_RULE_SETUP
#line 245 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 245 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return OPAQUE; } { return OPAQUE; }
YY_BREAK YY_BREAK
case 51: case 51:
YY_RULE_SETUP YY_RULE_SETUP
#line 246 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 246 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ uint64_t NumBits = atoull(yytext+1); { uint64_t NumBits = atoull(yytext+1);
if (NumBits < IntegerType::MIN_INT_BITS || if (NumBits < IntegerType::MIN_INT_BITS ||
NumBits > IntegerType::MAX_INT_BITS) NumBits > IntegerType::MAX_INT_BITS)
@ -1525,347 +1525,347 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 52: case 52:
YY_RULE_SETUP YY_RULE_SETUP
#line 254 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 254 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, Add, ADD); } { RET_TOK(BinaryOpVal, Add, ADD); }
YY_BREAK YY_BREAK
case 53: case 53:
YY_RULE_SETUP YY_RULE_SETUP
#line 255 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 255 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, Sub, SUB); } { RET_TOK(BinaryOpVal, Sub, SUB); }
YY_BREAK YY_BREAK
case 54: case 54:
YY_RULE_SETUP YY_RULE_SETUP
#line 256 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 256 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, Mul, MUL); } { RET_TOK(BinaryOpVal, Mul, MUL); }
YY_BREAK YY_BREAK
case 55: case 55:
YY_RULE_SETUP YY_RULE_SETUP
#line 257 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 257 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, UDiv, UDIV); } { RET_TOK(BinaryOpVal, UDiv, UDIV); }
YY_BREAK YY_BREAK
case 56: case 56:
YY_RULE_SETUP YY_RULE_SETUP
#line 258 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 258 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, SDiv, SDIV); } { RET_TOK(BinaryOpVal, SDiv, SDIV); }
YY_BREAK YY_BREAK
case 57: case 57:
YY_RULE_SETUP YY_RULE_SETUP
#line 259 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 259 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, FDiv, FDIV); } { RET_TOK(BinaryOpVal, FDiv, FDIV); }
YY_BREAK YY_BREAK
case 58: case 58:
YY_RULE_SETUP YY_RULE_SETUP
#line 260 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 260 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, URem, UREM); } { RET_TOK(BinaryOpVal, URem, UREM); }
YY_BREAK YY_BREAK
case 59: case 59:
YY_RULE_SETUP YY_RULE_SETUP
#line 261 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 261 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, SRem, SREM); } { RET_TOK(BinaryOpVal, SRem, SREM); }
YY_BREAK YY_BREAK
case 60: case 60:
YY_RULE_SETUP YY_RULE_SETUP
#line 262 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 262 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, FRem, FREM); } { RET_TOK(BinaryOpVal, FRem, FREM); }
YY_BREAK YY_BREAK
case 61: case 61:
YY_RULE_SETUP YY_RULE_SETUP
#line 263 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 263 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, Shl, SHL); } { RET_TOK(BinaryOpVal, Shl, SHL); }
YY_BREAK YY_BREAK
case 62: case 62:
YY_RULE_SETUP YY_RULE_SETUP
#line 264 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 264 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, LShr, LSHR); } { RET_TOK(BinaryOpVal, LShr, LSHR); }
YY_BREAK YY_BREAK
case 63: case 63:
YY_RULE_SETUP YY_RULE_SETUP
#line 265 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 265 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, AShr, ASHR); } { RET_TOK(BinaryOpVal, AShr, ASHR); }
YY_BREAK YY_BREAK
case 64: case 64:
YY_RULE_SETUP YY_RULE_SETUP
#line 266 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 266 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, And, AND); } { RET_TOK(BinaryOpVal, And, AND); }
YY_BREAK YY_BREAK
case 65: case 65:
YY_RULE_SETUP YY_RULE_SETUP
#line 267 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 267 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, Or , OR ); } { RET_TOK(BinaryOpVal, Or , OR ); }
YY_BREAK YY_BREAK
case 66: case 66:
YY_RULE_SETUP YY_RULE_SETUP
#line 268 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 268 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, Xor, XOR); } { RET_TOK(BinaryOpVal, Xor, XOR); }
YY_BREAK YY_BREAK
case 67: case 67:
YY_RULE_SETUP YY_RULE_SETUP
#line 269 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 269 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, ICmp, ICMP); } { RET_TOK(OtherOpVal, ICmp, ICMP); }
YY_BREAK YY_BREAK
case 68: case 68:
YY_RULE_SETUP YY_RULE_SETUP
#line 270 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 270 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, FCmp, FCMP); } { RET_TOK(OtherOpVal, FCmp, FCMP); }
YY_BREAK YY_BREAK
case 69: case 69:
YY_RULE_SETUP YY_RULE_SETUP
#line 272 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 272 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return EQ; } { return EQ; }
YY_BREAK YY_BREAK
case 70: case 70:
YY_RULE_SETUP YY_RULE_SETUP
#line 273 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 273 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return NE; } { return NE; }
YY_BREAK YY_BREAK
case 71: case 71:
YY_RULE_SETUP YY_RULE_SETUP
#line 274 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 274 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SLT; } { return SLT; }
YY_BREAK YY_BREAK
case 72: case 72:
YY_RULE_SETUP YY_RULE_SETUP
#line 275 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 275 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SGT; } { return SGT; }
YY_BREAK YY_BREAK
case 73: case 73:
YY_RULE_SETUP YY_RULE_SETUP
#line 276 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 276 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SLE; } { return SLE; }
YY_BREAK YY_BREAK
case 74: case 74:
YY_RULE_SETUP YY_RULE_SETUP
#line 277 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 277 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SGE; } { return SGE; }
YY_BREAK YY_BREAK
case 75: case 75:
YY_RULE_SETUP YY_RULE_SETUP
#line 278 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 278 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ULT; } { return ULT; }
YY_BREAK YY_BREAK
case 76: case 76:
YY_RULE_SETUP YY_RULE_SETUP
#line 279 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 279 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UGT; } { return UGT; }
YY_BREAK YY_BREAK
case 77: case 77:
YY_RULE_SETUP YY_RULE_SETUP
#line 280 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 280 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ULE; } { return ULE; }
YY_BREAK YY_BREAK
case 78: case 78:
YY_RULE_SETUP YY_RULE_SETUP
#line 281 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 281 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UGE; } { return UGE; }
YY_BREAK YY_BREAK
case 79: case 79:
YY_RULE_SETUP YY_RULE_SETUP
#line 282 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 282 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return OEQ; } { return OEQ; }
YY_BREAK YY_BREAK
case 80: case 80:
YY_RULE_SETUP YY_RULE_SETUP
#line 283 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 283 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ONE; } { return ONE; }
YY_BREAK YY_BREAK
case 81: case 81:
YY_RULE_SETUP YY_RULE_SETUP
#line 284 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 284 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return OLT; } { return OLT; }
YY_BREAK YY_BREAK
case 82: case 82:
YY_RULE_SETUP YY_RULE_SETUP
#line 285 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 285 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return OGT; } { return OGT; }
YY_BREAK YY_BREAK
case 83: case 83:
YY_RULE_SETUP YY_RULE_SETUP
#line 286 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 286 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return OLE; } { return OLE; }
YY_BREAK YY_BREAK
case 84: case 84:
YY_RULE_SETUP YY_RULE_SETUP
#line 287 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 287 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return OGE; } { return OGE; }
YY_BREAK YY_BREAK
case 85: case 85:
YY_RULE_SETUP YY_RULE_SETUP
#line 288 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 288 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ORD; } { return ORD; }
YY_BREAK YY_BREAK
case 86: case 86:
YY_RULE_SETUP YY_RULE_SETUP
#line 289 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 289 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UNO; } { return UNO; }
YY_BREAK YY_BREAK
case 87: case 87:
YY_RULE_SETUP YY_RULE_SETUP
#line 290 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 290 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UEQ; } { return UEQ; }
YY_BREAK YY_BREAK
case 88: case 88:
YY_RULE_SETUP YY_RULE_SETUP
#line 291 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 291 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UNE; } { return UNE; }
YY_BREAK YY_BREAK
case 89: case 89:
YY_RULE_SETUP YY_RULE_SETUP
#line 293 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 293 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, PHI, PHI_TOK); } { RET_TOK(OtherOpVal, PHI, PHI_TOK); }
YY_BREAK YY_BREAK
case 90: case 90:
YY_RULE_SETUP YY_RULE_SETUP
#line 294 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 294 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, Call, CALL); } { RET_TOK(OtherOpVal, Call, CALL); }
YY_BREAK YY_BREAK
case 91: case 91:
YY_RULE_SETUP YY_RULE_SETUP
#line 295 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 295 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, Trunc, TRUNC); } { RET_TOK(CastOpVal, Trunc, TRUNC); }
YY_BREAK YY_BREAK
case 92: case 92:
YY_RULE_SETUP YY_RULE_SETUP
#line 296 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 296 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, ZExt, ZEXT); } { RET_TOK(CastOpVal, ZExt, ZEXT); }
YY_BREAK YY_BREAK
case 93: case 93:
YY_RULE_SETUP YY_RULE_SETUP
#line 297 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 297 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, SExt, SEXT); } { RET_TOK(CastOpVal, SExt, SEXT); }
YY_BREAK YY_BREAK
case 94: case 94:
YY_RULE_SETUP YY_RULE_SETUP
#line 298 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 298 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); } { RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
YY_BREAK YY_BREAK
case 95: case 95:
YY_RULE_SETUP YY_RULE_SETUP
#line 299 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 299 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, FPExt, FPEXT); } { RET_TOK(CastOpVal, FPExt, FPEXT); }
YY_BREAK YY_BREAK
case 96: case 96:
YY_RULE_SETUP YY_RULE_SETUP
#line 300 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 300 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, UIToFP, UITOFP); } { RET_TOK(CastOpVal, UIToFP, UITOFP); }
YY_BREAK YY_BREAK
case 97: case 97:
YY_RULE_SETUP YY_RULE_SETUP
#line 301 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 301 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, SIToFP, SITOFP); } { RET_TOK(CastOpVal, SIToFP, SITOFP); }
YY_BREAK YY_BREAK
case 98: case 98:
YY_RULE_SETUP YY_RULE_SETUP
#line 302 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 302 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, FPToUI, FPTOUI); } { RET_TOK(CastOpVal, FPToUI, FPTOUI); }
YY_BREAK YY_BREAK
case 99: case 99:
YY_RULE_SETUP YY_RULE_SETUP
#line 303 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 303 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, FPToSI, FPTOSI); } { RET_TOK(CastOpVal, FPToSI, FPTOSI); }
YY_BREAK YY_BREAK
case 100: case 100:
YY_RULE_SETUP YY_RULE_SETUP
#line 304 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 304 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); } { RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
YY_BREAK YY_BREAK
case 101: case 101:
YY_RULE_SETUP YY_RULE_SETUP
#line 305 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 305 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); } { RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
YY_BREAK YY_BREAK
case 102: case 102:
YY_RULE_SETUP YY_RULE_SETUP
#line 306 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 306 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, BitCast, BITCAST); } { RET_TOK(CastOpVal, BitCast, BITCAST); }
YY_BREAK YY_BREAK
case 103: case 103:
YY_RULE_SETUP YY_RULE_SETUP
#line 307 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 307 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, Select, SELECT); } { RET_TOK(OtherOpVal, Select, SELECT); }
YY_BREAK YY_BREAK
case 104: case 104:
YY_RULE_SETUP YY_RULE_SETUP
#line 308 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 308 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, VAArg , VAARG); } { RET_TOK(OtherOpVal, VAArg , VAARG); }
YY_BREAK YY_BREAK
case 105: case 105:
YY_RULE_SETUP YY_RULE_SETUP
#line 309 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 309 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Ret, RET); } { RET_TOK(TermOpVal, Ret, RET); }
YY_BREAK YY_BREAK
case 106: case 106:
YY_RULE_SETUP YY_RULE_SETUP
#line 310 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 310 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Br, BR); } { RET_TOK(TermOpVal, Br, BR); }
YY_BREAK YY_BREAK
case 107: case 107:
YY_RULE_SETUP YY_RULE_SETUP
#line 311 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 311 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Switch, SWITCH); } { RET_TOK(TermOpVal, Switch, SWITCH); }
YY_BREAK YY_BREAK
case 108: case 108:
YY_RULE_SETUP YY_RULE_SETUP
#line 312 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 312 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Invoke, INVOKE); } { RET_TOK(TermOpVal, Invoke, INVOKE); }
YY_BREAK YY_BREAK
case 109: case 109:
YY_RULE_SETUP YY_RULE_SETUP
#line 313 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 313 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Unwind, UNWIND); } { RET_TOK(TermOpVal, Unwind, UNWIND); }
YY_BREAK YY_BREAK
case 110: case 110:
YY_RULE_SETUP YY_RULE_SETUP
#line 314 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 314 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); } { RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
YY_BREAK YY_BREAK
case 111: case 111:
YY_RULE_SETUP YY_RULE_SETUP
#line 316 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 316 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Malloc, MALLOC); } { RET_TOK(MemOpVal, Malloc, MALLOC); }
YY_BREAK YY_BREAK
case 112: case 112:
YY_RULE_SETUP YY_RULE_SETUP
#line 317 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 317 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Alloca, ALLOCA); } { RET_TOK(MemOpVal, Alloca, ALLOCA); }
YY_BREAK YY_BREAK
case 113: case 113:
YY_RULE_SETUP YY_RULE_SETUP
#line 318 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 318 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Free, FREE); } { RET_TOK(MemOpVal, Free, FREE); }
YY_BREAK YY_BREAK
case 114: case 114:
YY_RULE_SETUP YY_RULE_SETUP
#line 319 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 319 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Load, LOAD); } { RET_TOK(MemOpVal, Load, LOAD); }
YY_BREAK YY_BREAK
case 115: case 115:
YY_RULE_SETUP YY_RULE_SETUP
#line 320 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 320 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Store, STORE); } { RET_TOK(MemOpVal, Store, STORE); }
YY_BREAK YY_BREAK
case 116: case 116:
YY_RULE_SETUP YY_RULE_SETUP
#line 321 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 321 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); } { RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
YY_BREAK YY_BREAK
case 117: case 117:
YY_RULE_SETUP YY_RULE_SETUP
#line 323 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 323 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); } { RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); }
YY_BREAK YY_BREAK
case 118: case 118:
YY_RULE_SETUP YY_RULE_SETUP
#line 324 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 324 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); } { RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); }
YY_BREAK YY_BREAK
case 119: case 119:
YY_RULE_SETUP YY_RULE_SETUP
#line 325 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 325 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); } { RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
YY_BREAK YY_BREAK
case 120: case 120:
YY_RULE_SETUP YY_RULE_SETUP
#line 328 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 328 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ {
UnEscapeLexed(yytext+1); UnEscapeLexed(yytext+1);
llvmAsmlval.StrVal = strdup(yytext+1); // Skip % llvmAsmlval.StrVal = strdup(yytext+1); // Skip %
@ -1874,7 +1874,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 121: case 121:
YY_RULE_SETUP YY_RULE_SETUP
#line 333 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 333 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ {
UnEscapeLexed(yytext+1); UnEscapeLexed(yytext+1);
llvmAsmlval.StrVal = strdup(yytext+1); // Skip @ llvmAsmlval.StrVal = strdup(yytext+1); // Skip @
@ -1883,7 +1883,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 122: case 122:
YY_RULE_SETUP YY_RULE_SETUP
#line 338 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 338 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ {
yytext[strlen(yytext)-1] = 0; // nuke colon yytext[strlen(yytext)-1] = 0; // nuke colon
UnEscapeLexed(yytext); UnEscapeLexed(yytext);
@ -1893,7 +1893,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 123: case 123:
YY_RULE_SETUP YY_RULE_SETUP
#line 344 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 344 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ {
yytext[strlen(yytext)-2] = 0; // nuke colon, end quote yytext[strlen(yytext)-2] = 0; // nuke colon, end quote
UnEscapeLexed(yytext+1); UnEscapeLexed(yytext+1);
@ -1903,7 +1903,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 124: case 124:
YY_RULE_SETUP YY_RULE_SETUP
#line 351 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 351 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ // Note that we cannot unescape a string constant here! The { // Note that we cannot unescape a string constant here! The
// string constant might contain a \00 which would not be // string constant might contain a \00 which would not be
// understood by the string stuff. It is valid to make a // understood by the string stuff. It is valid to make a
@ -1916,7 +1916,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 125: case 125:
YY_RULE_SETUP YY_RULE_SETUP
#line 360 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 360 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ {
yytext[strlen(yytext)-1] = 0; // nuke end quote yytext[strlen(yytext)-1] = 0; // nuke end quote
llvmAsmlval.StrVal = strdup(yytext+2); // Nuke @, quote llvmAsmlval.StrVal = strdup(yytext+2); // Nuke @, quote
@ -1925,7 +1925,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 126: case 126:
YY_RULE_SETUP YY_RULE_SETUP
#line 366 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 366 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ int len = strlen(yytext); { int len = strlen(yytext);
uint32_t numBits = ((len * 64) / 19) + 1; uint32_t numBits = ((len * 64) / 19) + 1;
APInt Tmp(numBits, yytext, len, 10); APInt Tmp(numBits, yytext, len, 10);
@ -1943,7 +1943,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 127: case 127:
YY_RULE_SETUP YY_RULE_SETUP
#line 380 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 380 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ int len = strlen(yytext); { int len = strlen(yytext);
uint32_t numBits = (((len-1) * 64) / 19) + 2; uint32_t numBits = (((len-1) * 64) / 19) + 2;
APInt Tmp(numBits, yytext, len, 10); APInt Tmp(numBits, yytext, len, 10);
@ -1961,7 +1961,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 128: case 128:
YY_RULE_SETUP YY_RULE_SETUP
#line 395 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 395 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ int len = strlen(yytext+3) - 3; { int len = strlen(yytext+3) - 3;
uint32_t bits = len * 4; uint32_t bits = len * 4;
APInt Tmp(bits, yytext+3, len, 16); APInt Tmp(bits, yytext+3, len, 16);
@ -1982,7 +1982,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 129: case 129:
YY_RULE_SETUP YY_RULE_SETUP
#line 413 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 413 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ {
uint64_t Val = atoull(yytext+1); uint64_t Val = atoull(yytext+1);
if ((unsigned)Val != Val) if ((unsigned)Val != Val)
@ -1993,7 +1993,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 130: case 130:
YY_RULE_SETUP YY_RULE_SETUP
#line 420 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 420 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ {
uint64_t Val = atoull(yytext+1); uint64_t Val = atoull(yytext+1);
if ((unsigned)Val != Val) if ((unsigned)Val != Val)
@ -2004,16 +2004,16 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 131: case 131:
YY_RULE_SETUP YY_RULE_SETUP
#line 428 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 428 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ llvmAsmlval.FPVal = atof(yytext); return FPVAL; } { llvmAsmlval.FPVal = atof(yytext); return FPVAL; }
YY_BREAK YY_BREAK
case 132: case 132:
YY_RULE_SETUP YY_RULE_SETUP
#line 429 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 429 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ llvmAsmlval.FPVal = HexToFP(yytext); return FPVAL; } { llvmAsmlval.FPVal = HexToFP(yytext); return FPVAL; }
YY_BREAK YY_BREAK
case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INITIAL):
#line 431 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 431 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ {
/* Make sure to free the internal buffers for flex when we are /* Make sure to free the internal buffers for flex when we are
* done reading our input! * done reading our input!
@ -2024,17 +2024,17 @@ case YY_STATE_EOF(INITIAL):
YY_BREAK YY_BREAK
case 133: case 133:
YY_RULE_SETUP YY_RULE_SETUP
#line 439 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 439 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ /* Ignore whitespace */ } { /* Ignore whitespace */ }
YY_BREAK YY_BREAK
case 134: case 134:
YY_RULE_SETUP YY_RULE_SETUP
#line 440 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 440 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return yytext[0]; } { return yytext[0]; }
YY_BREAK YY_BREAK
case 135: case 135:
YY_RULE_SETUP YY_RULE_SETUP
#line 442 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 442 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
YY_FATAL_ERROR( "flex scanner jammed" ); YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK YY_BREAK
#line 2041 "Lexer.cpp" #line 2041 "Lexer.cpp"
@ -2915,5 +2915,5 @@ int main()
return 0; return 0;
} }
#endif #endif
#line 442 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #line 442 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"

File diff suppressed because it is too large Load Diff

View File

@ -299,7 +299,7 @@
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
#line 939 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" #line 937 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
typedef union YYSTYPE { typedef union YYSTYPE {
llvm::Module *ModuleVal; llvm::Module *ModuleVal;
llvm::Function *FunctionVal; llvm::Function *FunctionVal;
@ -326,7 +326,7 @@ typedef union YYSTYPE {
llvm::GlobalValue::LinkageTypes Linkage; llvm::GlobalValue::LinkageTypes Linkage;
llvm::GlobalValue::VisibilityTypes Visibility; llvm::GlobalValue::VisibilityTypes Visibility;
llvm::FunctionType::ParameterAttributes ParamAttrs; uint16_t ParamAttrs;
llvm::APInt *APIntVal; llvm::APInt *APIntVal;
int64_t SInt64Val; int64_t SInt64Val;
uint64_t UInt64Val; uint64_t UInt64Val;

View File

@ -200,8 +200,6 @@ static struct PerModuleInfo {
} }
return false; return false;
} }
} CurModule; } CurModule;
static struct PerFunctionInfo { static struct PerFunctionInfo {
@ -962,7 +960,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
llvm::GlobalValue::LinkageTypes Linkage; llvm::GlobalValue::LinkageTypes Linkage;
llvm::GlobalValue::VisibilityTypes Visibility; llvm::GlobalValue::VisibilityTypes Visibility;
llvm::FunctionType::ParameterAttributes ParamAttrs; uint16_t ParamAttrs;
llvm::APInt *APIntVal; llvm::APInt *APIntVal;
int64_t SInt64Val; int64_t SInt64Val;
uint64_t UInt64Val; uint64_t UInt64Val;
@ -1191,26 +1189,26 @@ OptCallingConv : /*empty*/ { $$ = CallingConv::C; } |
CHECK_FOR_ERROR CHECK_FOR_ERROR
}; };
ParamAttr : ZEXT { $$ = FunctionType::ZExtAttribute; } ParamAttr : ZEXT { $$ = ZExtAttribute; }
| SEXT { $$ = FunctionType::SExtAttribute; } | SEXT { $$ = SExtAttribute; }
| INREG { $$ = FunctionType::InRegAttribute; } | INREG { $$ = InRegAttribute; }
| SRET { $$ = FunctionType::StructRetAttribute; } | SRET { $$ = StructRetAttribute; }
; ;
OptParamAttrs : /* empty */ { $$ = FunctionType::NoAttributeSet; } OptParamAttrs : /* empty */ { $$ = NoAttributeSet; }
| OptParamAttrs ParamAttr { | OptParamAttrs ParamAttr {
$$ = FunctionType::ParameterAttributes($1 | $2); $$ = $1 | $2;
} }
; ;
FuncAttr : NORETURN { $$ = FunctionType::NoReturnAttribute; } FuncAttr : NORETURN { $$ = NoReturnAttribute; }
| NOUNWIND { $$ = FunctionType::NoUnwindAttribute; } | NOUNWIND { $$ = NoUnwindAttribute; }
| ParamAttr | ParamAttr
; ;
OptFuncAttrs : /* empty */ { $$ = FunctionType::NoAttributeSet; } OptFuncAttrs : /* empty */ { $$ = NoAttributeSet; }
| OptFuncAttrs FuncAttr { | OptFuncAttrs FuncAttr {
$$ = FunctionType::ParameterAttributes($1 | $2); $$ = $1 | $2;
} }
; ;
@ -1299,18 +1297,25 @@ Types
} }
| Types '(' ArgTypeListI ')' OptFuncAttrs { | Types '(' ArgTypeListI ')' OptFuncAttrs {
std::vector<const Type*> Params; std::vector<const Type*> Params;
std::vector<FunctionType::ParameterAttributes> Attrs; ParamAttrsList Attrs;
Attrs.push_back($5); if ($5 != NoAttributeSet)
for (TypeWithAttrsList::iterator I=$3->begin(), E=$3->end(); I != E; ++I) { Attrs.addAttributes(0, $5);
unsigned index = 1;
TypeWithAttrsList::iterator I = $3->begin(), E = $3->end();
for (; I != E; ++I, ++index) {
const Type *Ty = I->Ty->get(); const Type *Ty = I->Ty->get();
Params.push_back(Ty); Params.push_back(Ty);
if (Ty != Type::VoidTy) if (Ty != Type::VoidTy)
Attrs.push_back(I->Attrs); if (I->Attrs != NoAttributeSet)
Attrs.addAttributes(index, I->Attrs);
} }
bool isVarArg = Params.size() && Params.back() == Type::VoidTy; bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
if (isVarArg) Params.pop_back(); if (isVarArg) Params.pop_back();
FunctionType *FT = FunctionType::get(*$1, Params, isVarArg, Attrs); ParamAttrsList *ActualAttrs = 0;
if (!Attrs.empty())
ActualAttrs = new ParamAttrsList(Attrs);
FunctionType *FT = FunctionType::get(*$1, Params, isVarArg, ActualAttrs);
delete $3; // Delete the argument list delete $3; // Delete the argument list
delete $1; // Delete the return type handle delete $1; // Delete the return type handle
$$ = new PATypeHolder(HandleUpRefs(FT)); $$ = new PATypeHolder(HandleUpRefs(FT));
@ -1318,18 +1323,26 @@ Types
} }
| VOID '(' ArgTypeListI ')' OptFuncAttrs { | VOID '(' ArgTypeListI ')' OptFuncAttrs {
std::vector<const Type*> Params; std::vector<const Type*> Params;
std::vector<FunctionType::ParameterAttributes> Attrs; ParamAttrsList Attrs;
Attrs.push_back($5); if ($5 != NoAttributeSet)
for (TypeWithAttrsList::iterator I=$3->begin(), E=$3->end(); I != E; ++I) { Attrs.addAttributes(0, $5);
TypeWithAttrsList::iterator I = $3->begin(), E = $3->end();
unsigned index = 1;
for ( ; I != E; ++I, ++index) {
const Type* Ty = I->Ty->get(); const Type* Ty = I->Ty->get();
Params.push_back(Ty); Params.push_back(Ty);
if (Ty != Type::VoidTy) if (Ty != Type::VoidTy)
Attrs.push_back(I->Attrs); if (I->Attrs != NoAttributeSet)
Attrs.addAttributes(index, I->Attrs);
} }
bool isVarArg = Params.size() && Params.back() == Type::VoidTy; bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
if (isVarArg) Params.pop_back(); if (isVarArg) Params.pop_back();
FunctionType *FT = FunctionType::get($1, Params, isVarArg, Attrs); ParamAttrsList *ActualAttrs = 0;
if (!Attrs.empty())
ActualAttrs = new ParamAttrsList(Attrs);
FunctionType *FT = FunctionType::get($1, Params, isVarArg, ActualAttrs);
delete $3; // Delete the argument list delete $3; // Delete the argument list
$$ = new PATypeHolder(HandleUpRefs(FT)); $$ = new PATypeHolder(HandleUpRefs(FT));
CHECK_FOR_ERROR CHECK_FOR_ERROR
@ -1417,14 +1430,14 @@ ArgTypeListI
: ArgTypeList : ArgTypeList
| ArgTypeList ',' DOTDOTDOT { | ArgTypeList ',' DOTDOTDOT {
$$=$1; $$=$1;
TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; TypeWithAttrs TWA; TWA.Attrs = NoAttributeSet;
TWA.Ty = new PATypeHolder(Type::VoidTy); TWA.Ty = new PATypeHolder(Type::VoidTy);
$$->push_back(TWA); $$->push_back(TWA);
CHECK_FOR_ERROR CHECK_FOR_ERROR
} }
| DOTDOTDOT { | DOTDOTDOT {
$$ = new TypeWithAttrsList; $$ = new TypeWithAttrsList;
TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; TypeWithAttrs TWA; TWA.Attrs = NoAttributeSet;
TWA.Ty = new PATypeHolder(Type::VoidTy); TWA.Ty = new PATypeHolder(Type::VoidTy);
$$->push_back(TWA); $$->push_back(TWA);
CHECK_FOR_ERROR CHECK_FOR_ERROR
@ -2087,7 +2100,7 @@ ArgList : ArgListH {
struct ArgListEntry E; struct ArgListEntry E;
E.Ty = new PATypeHolder(Type::VoidTy); E.Ty = new PATypeHolder(Type::VoidTy);
E.Name = 0; E.Name = 0;
E.Attrs = FunctionType::NoAttributeSet; E.Attrs = NoAttributeSet;
$$->push_back(E); $$->push_back(E);
CHECK_FOR_ERROR CHECK_FOR_ERROR
} }
@ -2096,7 +2109,7 @@ ArgList : ArgListH {
struct ArgListEntry E; struct ArgListEntry E;
E.Ty = new PATypeHolder(Type::VoidTy); E.Ty = new PATypeHolder(Type::VoidTy);
E.Name = 0; E.Name = 0;
E.Attrs = FunctionType::NoAttributeSet; E.Attrs = NoAttributeSet;
$$->push_back(E); $$->push_back(E);
CHECK_FOR_ERROR CHECK_FOR_ERROR
} }
@ -2117,24 +2130,31 @@ FunctionHeaderH : OptCallingConv ResultTypes GlobalName '(' ArgList ')'
GEN_ERROR("Reference to abstract result: "+ $2->get()->getDescription()); GEN_ERROR("Reference to abstract result: "+ $2->get()->getDescription());
std::vector<const Type*> ParamTypeList; std::vector<const Type*> ParamTypeList;
std::vector<FunctionType::ParameterAttributes> ParamAttrs; ParamAttrsList ParamAttrs;
ParamAttrs.push_back($7); if ($7 != NoAttributeSet)
ParamAttrs.addAttributes(0, $7);
if ($5) { // If there are arguments... if ($5) { // If there are arguments...
for (ArgListType::iterator I = $5->begin(); I != $5->end(); ++I) { unsigned index = 1;
for (ArgListType::iterator I = $5->begin(); I != $5->end(); ++I, ++index) {
const Type* Ty = I->Ty->get(); const Type* Ty = I->Ty->get();
if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(I->Ty)) if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(I->Ty))
GEN_ERROR("Reference to abstract argument: " + Ty->getDescription()); GEN_ERROR("Reference to abstract argument: " + Ty->getDescription());
ParamTypeList.push_back(Ty); ParamTypeList.push_back(Ty);
if (Ty != Type::VoidTy) if (Ty != Type::VoidTy)
ParamAttrs.push_back(I->Attrs); if (I->Attrs != NoAttributeSet)
ParamAttrs.addAttributes(index, I->Attrs);
} }
} }
bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy; bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy;
if (isVarArg) ParamTypeList.pop_back(); if (isVarArg) ParamTypeList.pop_back();
ParamAttrsList *ActualAttrs = 0;
if (!ParamAttrs.empty())
ActualAttrs = new ParamAttrsList(ParamAttrs);
FunctionType *FT = FunctionType::get(*$2, ParamTypeList, isVarArg, FunctionType *FT = FunctionType::get(*$2, ParamTypeList, isVarArg,
ParamAttrs); ActualAttrs);
const PointerType *PFT = PointerType::get(FT); const PointerType *PFT = PointerType::get(FT);
delete $2; delete $2;
@ -2465,17 +2485,24 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result...
!(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) { !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
// Pull out the types of all of the arguments... // Pull out the types of all of the arguments...
std::vector<const Type*> ParamTypes; std::vector<const Type*> ParamTypes;
FunctionType::ParamAttrsList ParamAttrs; ParamAttrsList ParamAttrs;
ParamAttrs.push_back($8); if ($8 != NoAttributeSet)
for (ValueRefList::iterator I = $6->begin(), E = $6->end(); I != E; ++I) { ParamAttrs.addAttributes(0, $8);
ValueRefList::iterator I = $6->begin(), E = $6->end();
unsigned index = 1;
for (; I != E; ++I, ++index) {
const Type *Ty = I->Val->getType(); const Type *Ty = I->Val->getType();
if (Ty == Type::VoidTy) if (Ty == Type::VoidTy)
GEN_ERROR("Short call syntax cannot be used with varargs"); GEN_ERROR("Short call syntax cannot be used with varargs");
ParamTypes.push_back(Ty); ParamTypes.push_back(Ty);
ParamAttrs.push_back(I->Attrs); if (I->Attrs != NoAttributeSet)
ParamAttrs.addAttributes(index, I->Attrs);
} }
Ty = FunctionType::get($3->get(), ParamTypes, false, ParamAttrs); ParamAttrsList *Attrs = 0;
if (!ParamAttrs.empty())
Attrs = new ParamAttrsList(ParamAttrs);
Ty = FunctionType::get($3->get(), ParamTypes, false, Attrs);
PFTy = PointerType::get(Ty); PFTy = PointerType::get(Ty);
} }
@ -2764,17 +2791,25 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
!(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) { !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
// Pull out the types of all of the arguments... // Pull out the types of all of the arguments...
std::vector<const Type*> ParamTypes; std::vector<const Type*> ParamTypes;
FunctionType::ParamAttrsList ParamAttrs; ParamAttrsList ParamAttrs;
ParamAttrs.push_back($8); if ($8 != NoAttributeSet)
for (ValueRefList::iterator I = $6->begin(), E = $6->end(); I != E; ++I) { ParamAttrs.addAttributes(0, $8);
unsigned index = 1;
ValueRefList::iterator I = $6->begin(), E = $6->end();
for (; I != E; ++I, ++index) {
const Type *Ty = I->Val->getType(); const Type *Ty = I->Val->getType();
if (Ty == Type::VoidTy) if (Ty == Type::VoidTy)
GEN_ERROR("Short call syntax cannot be used with varargs"); GEN_ERROR("Short call syntax cannot be used with varargs");
ParamTypes.push_back(Ty); ParamTypes.push_back(Ty);
ParamAttrs.push_back(I->Attrs); if (I->Attrs != NoAttributeSet)
ParamAttrs.addAttributes(index, I->Attrs);
} }
Ty = FunctionType::get($3->get(), ParamTypes, false, ParamAttrs); ParamAttrsList *Attrs = 0;
if (!ParamAttrs.empty())
Attrs = new ParamAttrsList(ParamAttrs);
Ty = FunctionType::get($3->get(), ParamTypes, false, Attrs);
PFTy = PointerType::get(Ty); PFTy = PointerType::get(Ty);
} }

File diff suppressed because it is too large Load Diff

View File

@ -335,7 +335,7 @@
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
#line 1731 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" #line 1741 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
typedef union YYSTYPE { typedef union YYSTYPE {
llvm::Module *ModuleVal; llvm::Module *ModuleVal;
llvm::Function *FunctionVal; llvm::Function *FunctionVal;

View File

@ -17,6 +17,7 @@
#include "llvm/InlineAsm.h" #include "llvm/InlineAsm.h"
#include "llvm/Instructions.h" #include "llvm/Instructions.h"
#include "llvm/Module.h" #include "llvm/Module.h"
#include "llvm/ParameterAttributes.h"
#include "llvm/ValueSymbolTable.h" #include "llvm/ValueSymbolTable.h"
#include "llvm/Support/GetElementPtrTypeIterator.h" #include "llvm/Support/GetElementPtrTypeIterator.h"
#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/STLExtras.h"
@ -377,14 +378,21 @@ static Signedness getElementSign(const ConstInfo& CI,
static bool FuncTysDifferOnlyBySRet(const FunctionType *F1, static bool FuncTysDifferOnlyBySRet(const FunctionType *F1,
const FunctionType *F2) { const FunctionType *F2) {
if (F1->getReturnType() != F2->getReturnType() || if (F1->getReturnType() != F2->getReturnType() ||
F1->getNumParams() != F2->getNumParams() || F1->getNumParams() != F2->getNumParams())
F1->getParamAttrs(0) != F2->getParamAttrs(0))
return false; return false;
unsigned SRetMask = ~unsigned(FunctionType::StructRetAttribute); ParamAttrsList PAL1;
if (F1->getParamAttrs())
PAL1 = *F1->getParamAttrs();
ParamAttrsList PAL2;
if (F2->getParamAttrs())
PAL2 = *F2->getParamAttrs();
if (PAL1.getParamAttrs(0) != PAL2.getParamAttrs(0))
return false;
unsigned SRetMask = ~unsigned(StructRetAttribute);
for (unsigned i = 0; i < F1->getNumParams(); ++i) { for (unsigned i = 0; i < F1->getNumParams(); ++i) {
if (F1->getParamType(i) != F2->getParamType(i) || if (F1->getParamType(i) != F2->getParamType(i) ||
unsigned(F1->getParamAttrs(i+1)) & SRetMask != unsigned(PAL1.getParamAttrs(i+1)) & SRetMask !=
unsigned(F2->getParamAttrs(i+1)) & SRetMask) unsigned(PAL2.getParamAttrs(i+1)) & SRetMask)
return false; return false;
} }
return true; return true;
@ -423,13 +431,15 @@ static Value* handleSRetFuncTypeMerge(Value *V, const Type* Ty) {
if (PF1 && PF2) { if (PF1 && PF2) {
const FunctionType *FT1 = dyn_cast<FunctionType>(PF1->getElementType()); const FunctionType *FT1 = dyn_cast<FunctionType>(PF1->getElementType());
const FunctionType *FT2 = dyn_cast<FunctionType>(PF2->getElementType()); const FunctionType *FT2 = dyn_cast<FunctionType>(PF2->getElementType());
if (FT1 && FT2 && FuncTysDifferOnlyBySRet(FT1, FT2)) if (FT1 && FT2 && FuncTysDifferOnlyBySRet(FT1, FT2)) {
if (FT2->paramHasAttr(1, FunctionType::StructRetAttribute)) const ParamAttrsList *PAL2 = FT2->getParamAttrs();
if (PAL2 && PAL2->paramHasAttr(1, StructRetAttribute))
return V; return V;
else if (Constant *C = dyn_cast<Constant>(V)) else if (Constant *C = dyn_cast<Constant>(V))
return ConstantExpr::getBitCast(C, PF1); return ConstantExpr::getBitCast(C, PF1);
else else
return new BitCastInst(V, PF1, "upgrd.cast", CurBB); return new BitCastInst(V, PF1, "upgrd.cast", CurBB);
}
} }
return 0; return 0;
@ -2103,13 +2113,13 @@ UpRTypes
Params.push_back(I->PAT->get()); Params.push_back(I->PAT->get());
$$.S.add(I->S); $$.S.add(I->S);
} }
FunctionType::ParamAttrsList ParamAttrs;
bool isVarArg = Params.size() && Params.back() == Type::VoidTy; bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
if (isVarArg) Params.pop_back(); if (isVarArg) Params.pop_back();
$$.PAT = new PATypeHolder( const FunctionType *FTy =
HandleUpRefs(FunctionType::get($1.PAT->get(), Params, isVarArg, FunctionType::get($1.PAT->get(), Params, isVarArg, 0);
ParamAttrs), $$.S));
$$.PAT = new PATypeHolder( HandleUpRefs(FTy, $$.S) );
delete $1.PAT; // Delete the return type handle delete $1.PAT; // Delete the return type handle
delete $3; // Delete the argument list delete $3; // Delete the argument list
} }
@ -2891,14 +2901,15 @@ FunctionHeaderH
// Convert the CSRet calling convention into the corresponding parameter // Convert the CSRet calling convention into the corresponding parameter
// attribute. // attribute.
FunctionType::ParamAttrsList ParamAttrs; ParamAttrsList *ParamAttrs = 0;
if ($1 == OldCallingConv::CSRet) { if ($1 == OldCallingConv::CSRet) {
ParamAttrs.push_back(FunctionType::NoAttributeSet); // result ParamAttrs = new ParamAttrsList();
ParamAttrs.push_back(FunctionType::StructRetAttribute); // first arg ParamAttrs->addAttributes(0, NoAttributeSet); // result
ParamAttrs->addAttributes(1, StructRetAttribute); // first arg
} }
const FunctionType *FT = FunctionType::get(RetTy, ParamTyList, isVarArg, const FunctionType *FT =
ParamAttrs); FunctionType::get(RetTy, ParamTyList, isVarArg, ParamAttrs);
const PointerType *PFT = PointerType::get(FT); const PointerType *PFT = PointerType::get(FT);
delete $2.PAT; delete $2.PAT;
@ -3279,10 +3290,11 @@ BBTerminatorInst
FTySign.add(I->S); FTySign.add(I->S);
} }
} }
FunctionType::ParamAttrsList ParamAttrs; ParamAttrsList *ParamAttrs = 0;
if ($2 == OldCallingConv::CSRet) { if ($2 == OldCallingConv::CSRet) {
ParamAttrs.push_back(FunctionType::NoAttributeSet); ParamAttrs = new ParamAttrsList();
ParamAttrs.push_back(FunctionType::StructRetAttribute); ParamAttrs->addAttributes(0, NoAttributeSet); // Function result
ParamAttrs->addAttributes(1, StructRetAttribute); // first param
} }
bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy;
if (isVarArg) ParamTypes.pop_back(); if (isVarArg) ParamTypes.pop_back();
@ -3296,6 +3308,7 @@ BBTerminatorInst
// and then the 0th element again to get the result type. // and then the 0th element again to get the result type.
$$.S.copy($3.S.get(0).get(0)); $$.S.copy($3.S.get(0).get(0));
} }
$4.S.makeComposite(FTySign); $4.S.makeComposite(FTySign);
Value *V = getVal(PFTy, $4); // Get the function we're calling... Value *V = getVal(PFTy, $4); // Get the function we're calling...
BasicBlock *Normal = getBBVal($10); BasicBlock *Normal = getBBVal($10);
@ -3674,11 +3687,6 @@ InstVal
} }
} }
FunctionType::ParamAttrsList ParamAttrs;
if ($2 == OldCallingConv::CSRet) {
ParamAttrs.push_back(FunctionType::NoAttributeSet);
ParamAttrs.push_back(FunctionType::StructRetAttribute);
}
bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy;
if (isVarArg) ParamTypes.pop_back(); if (isVarArg) ParamTypes.pop_back();
@ -3686,6 +3694,14 @@ InstVal
if (!RetTy->isFirstClassType() && RetTy != Type::VoidTy) if (!RetTy->isFirstClassType() && RetTy != Type::VoidTy)
error("Functions cannot return aggregate types"); error("Functions cannot return aggregate types");
// Deal with CSRetCC
ParamAttrsList *ParamAttrs = 0;
if ($2 == OldCallingConv::CSRet) {
ParamAttrs = new ParamAttrsList();
ParamAttrs->addAttributes(0, NoAttributeSet); // function result
ParamAttrs->addAttributes(1, StructRetAttribute); // first parameter
}
FTy = FunctionType::get(RetTy, ParamTypes, isVarArg, ParamAttrs); FTy = FunctionType::get(RetTy, ParamTypes, isVarArg, ParamAttrs);
PFTy = PointerType::get(FTy); PFTy = PointerType::get(FTy);
$$.S.copy($3.S); $$.S.copy($3.S);