Regenerate

llvm-svn: 35813
This commit is contained in:
Reid Spencer 2007-04-09 06:16:21 +00:00
parent 4d4d3f9682
commit f51a7050dd
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_RESTORE_YY_MORE_OFFSET
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
/*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
//
@ -884,7 +884,7 @@ char *yytext;
//
//===----------------------------------------------------------------------===*/
#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 "llvm/Module.h"
#include <list>
@ -1168,7 +1168,7 @@ YY_DECL
register char *yy_cp = NULL, *yy_bp = NULL;
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"
@ -1264,257 +1264,257 @@ do_action: /* This label is used only to access EOF actions. */
{ /* beginning of action switch */
case 1:
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 */ }
YY_BREAK
case 2:
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; }
YY_BREAK
case 3:
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; }
YY_BREAK
case 4:
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; }
YY_BREAK
case 5:
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; }
YY_BREAK
case 6:
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; }
YY_BREAK
case 7:
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; }
YY_BREAK
case 8:
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; }
YY_BREAK
case 9:
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; }
YY_BREAK
case 10:
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; }
YY_BREAK
case 11:
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; }
YY_BREAK
case 12:
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; }
YY_BREAK
case 13:
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; }
YY_BREAK
case 14:
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; }
YY_BREAK
case 15:
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; }
YY_BREAK
case 16:
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; }
YY_BREAK
case 17:
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; }
YY_BREAK
case 18:
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; }
YY_BREAK
case 19:
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; }
YY_BREAK
case 20:
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; }
YY_BREAK
case 21:
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; }
YY_BREAK
case 22:
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; }
YY_BREAK
case 23:
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; }
YY_BREAK
case 24:
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; }
YY_BREAK
case 25:
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; }
YY_BREAK
case 26:
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; }
YY_BREAK
case 27:
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; }
YY_BREAK
case 28:
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; }
YY_BREAK
case 29:
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; }
YY_BREAK
case 30:
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; }
YY_BREAK
case 31:
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; }
YY_BREAK
case 32:
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; }
YY_BREAK
case 33:
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; }
YY_BREAK
case 34:
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; }
YY_BREAK
case 35:
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; }
YY_BREAK
case 36:
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; }
YY_BREAK
case 37:
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; }
YY_BREAK
case 38:
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; }
YY_BREAK
case 39:
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; }
YY_BREAK
case 40:
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; }
YY_BREAK
case 41:
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; }
YY_BREAK
case 42:
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; }
YY_BREAK
case 43:
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; }
YY_BREAK
case 44:
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; }
YY_BREAK
case 45:
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); }
YY_BREAK
case 46:
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); }
YY_BREAK
case 47:
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);}
YY_BREAK
case 48:
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); }
YY_BREAK
case 49:
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; }
YY_BREAK
case 50:
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; }
YY_BREAK
case 51:
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);
if (NumBits < IntegerType::MIN_INT_BITS ||
NumBits > IntegerType::MAX_INT_BITS)
@ -1525,347 +1525,347 @@ YY_RULE_SETUP
YY_BREAK
case 52:
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); }
YY_BREAK
case 53:
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); }
YY_BREAK
case 54:
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); }
YY_BREAK
case 55:
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); }
YY_BREAK
case 56:
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); }
YY_BREAK
case 57:
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); }
YY_BREAK
case 58:
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); }
YY_BREAK
case 59:
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); }
YY_BREAK
case 60:
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); }
YY_BREAK
case 61:
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); }
YY_BREAK
case 62:
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); }
YY_BREAK
case 63:
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); }
YY_BREAK
case 64:
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); }
YY_BREAK
case 65:
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 ); }
YY_BREAK
case 66:
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); }
YY_BREAK
case 67:
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); }
YY_BREAK
case 68:
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); }
YY_BREAK
case 69:
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; }
YY_BREAK
case 70:
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; }
YY_BREAK
case 71:
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; }
YY_BREAK
case 72:
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; }
YY_BREAK
case 73:
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; }
YY_BREAK
case 74:
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; }
YY_BREAK
case 75:
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; }
YY_BREAK
case 76:
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; }
YY_BREAK
case 77:
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; }
YY_BREAK
case 78:
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; }
YY_BREAK
case 79:
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; }
YY_BREAK
case 80:
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; }
YY_BREAK
case 81:
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; }
YY_BREAK
case 82:
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; }
YY_BREAK
case 83:
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; }
YY_BREAK
case 84:
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; }
YY_BREAK
case 85:
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; }
YY_BREAK
case 86:
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; }
YY_BREAK
case 87:
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; }
YY_BREAK
case 88:
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; }
YY_BREAK
case 89:
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); }
YY_BREAK
case 90:
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); }
YY_BREAK
case 91:
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); }
YY_BREAK
case 92:
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); }
YY_BREAK
case 93:
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); }
YY_BREAK
case 94:
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); }
YY_BREAK
case 95:
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); }
YY_BREAK
case 96:
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); }
YY_BREAK
case 97:
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); }
YY_BREAK
case 98:
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); }
YY_BREAK
case 99:
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); }
YY_BREAK
case 100:
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); }
YY_BREAK
case 101:
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); }
YY_BREAK
case 102:
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); }
YY_BREAK
case 103:
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); }
YY_BREAK
case 104:
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); }
YY_BREAK
case 105:
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); }
YY_BREAK
case 106:
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); }
YY_BREAK
case 107:
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); }
YY_BREAK
case 108:
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); }
YY_BREAK
case 109:
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); }
YY_BREAK
case 110:
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); }
YY_BREAK
case 111:
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); }
YY_BREAK
case 112:
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); }
YY_BREAK
case 113:
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); }
YY_BREAK
case 114:
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); }
YY_BREAK
case 115:
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); }
YY_BREAK
case 116:
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); }
YY_BREAK
case 117:
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); }
YY_BREAK
case 118:
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); }
YY_BREAK
case 119:
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); }
YY_BREAK
case 120:
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);
llvmAsmlval.StrVal = strdup(yytext+1); // Skip %
@ -1874,7 +1874,7 @@ YY_RULE_SETUP
YY_BREAK
case 121:
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);
llvmAsmlval.StrVal = strdup(yytext+1); // Skip @
@ -1883,7 +1883,7 @@ YY_RULE_SETUP
YY_BREAK
case 122:
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
UnEscapeLexed(yytext);
@ -1893,7 +1893,7 @@ YY_RULE_SETUP
YY_BREAK
case 123:
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
UnEscapeLexed(yytext+1);
@ -1903,7 +1903,7 @@ YY_RULE_SETUP
YY_BREAK
case 124:
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
// string constant might contain a \00 which would not be
// understood by the string stuff. It is valid to make a
@ -1916,7 +1916,7 @@ YY_RULE_SETUP
YY_BREAK
case 125:
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
llvmAsmlval.StrVal = strdup(yytext+2); // Nuke @, quote
@ -1925,7 +1925,7 @@ YY_RULE_SETUP
YY_BREAK
case 126:
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);
uint32_t numBits = ((len * 64) / 19) + 1;
APInt Tmp(numBits, yytext, len, 10);
@ -1943,7 +1943,7 @@ YY_RULE_SETUP
YY_BREAK
case 127:
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);
uint32_t numBits = (((len-1) * 64) / 19) + 2;
APInt Tmp(numBits, yytext, len, 10);
@ -1961,7 +1961,7 @@ YY_RULE_SETUP
YY_BREAK
case 128:
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;
uint32_t bits = len * 4;
APInt Tmp(bits, yytext+3, len, 16);
@ -1982,7 +1982,7 @@ YY_RULE_SETUP
YY_BREAK
case 129:
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);
if ((unsigned)Val != Val)
@ -1993,7 +1993,7 @@ YY_RULE_SETUP
YY_BREAK
case 130:
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);
if ((unsigned)Val != Val)
@ -2004,16 +2004,16 @@ YY_RULE_SETUP
YY_BREAK
case 131:
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; }
YY_BREAK
case 132:
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; }
YY_BREAK
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
* done reading our input!
@ -2024,17 +2024,17 @@ case YY_STATE_EOF(INITIAL):
YY_BREAK
case 133:
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 */ }
YY_BREAK
case 134:
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]; }
YY_BREAK
case 135:
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_BREAK
#line 2041 "Lexer.cpp"
@ -2915,5 +2915,5 @@ int main()
return 0;
}
#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)
#line 939 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
#line 937 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
typedef union YYSTYPE {
llvm::Module *ModuleVal;
llvm::Function *FunctionVal;
@ -326,7 +326,7 @@ typedef union YYSTYPE {
llvm::GlobalValue::LinkageTypes Linkage;
llvm::GlobalValue::VisibilityTypes Visibility;
llvm::FunctionType::ParameterAttributes ParamAttrs;
uint16_t ParamAttrs;
llvm::APInt *APIntVal;
int64_t SInt64Val;
uint64_t UInt64Val;

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -335,7 +335,7 @@
#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 {
llvm::Module *ModuleVal;
llvm::Function *FunctionVal;

View File

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