| /* A Bison parser, made by GNU Bison 2.3.  */ | 
 |  | 
 | /* Skeleton implementation for Bison's Yacc-like parsers in C | 
 |  | 
 |    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 | 
 |    Free Software Foundation, Inc. | 
 |  | 
 |    This program is free software; you can redistribute it and/or modify | 
 |    it under the terms of the GNU General Public License as published by | 
 |    the Free Software Foundation; either version 2, or (at your option) | 
 |    any later version. | 
 |  | 
 |    This program is distributed in the hope that it will be useful, | 
 |    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
 |    GNU General Public License for more details. | 
 |  | 
 |    You should have received a copy of the GNU General Public License | 
 |    along with this program; if not, write to the Free Software | 
 |    Foundation, Inc., 51 Franklin Street, Fifth Floor, | 
 |    Boston, MA 02110-1301, USA.  */ | 
 |  | 
 | /* As a special exception, you may create a larger work that contains | 
 |    part or all of the Bison parser skeleton and distribute that work | 
 |    under terms of your choice, so long as that work isn't itself a | 
 |    parser generator using the skeleton or a modified version thereof | 
 |    as a parser skeleton.  Alternatively, if you modify or redistribute | 
 |    the parser skeleton itself, you may (at your option) remove this | 
 |    special exception, which will cause the skeleton and the resulting | 
 |    Bison output files to be licensed under the GNU General Public | 
 |    License without this special exception. | 
 |  | 
 |    This special exception was added by the Free Software Foundation in | 
 |    version 2.2 of Bison.  */ | 
 |  | 
 | /* C LALR(1) parser skeleton written by Richard Stallman, by | 
 |    simplifying the original so-called "semantic" parser.  */ | 
 |  | 
 | /* All symbols defined below should begin with yy or YY, to avoid | 
 |    infringing on user name space.  This should be done even for local | 
 |    variables, as they might otherwise be expanded by user macros. | 
 |    There are some unavoidable exceptions within include files to | 
 |    define necessary library symbols; they are noted "INFRINGES ON | 
 |    USER NAME SPACE" below.  */ | 
 |  | 
 | /* Identify Bison output.  */ | 
 | #define YYBISON 1 | 
 |  | 
 | /* Bison version.  */ | 
 | #define YYBISON_VERSION "2.3" | 
 |  | 
 | /* Skeleton name.  */ | 
 | #define YYSKELETON_NAME "yacc.c" | 
 |  | 
 | /* Pure parsers.  */ | 
 | #define YYPURE 0 | 
 |  | 
 | /* Using locations.  */ | 
 | #define YYLSP_NEEDED 0 | 
 |  | 
 | /* Substitute the variable and function names.  */ | 
 | #define yyparse llvmAsmparse | 
 | #define yylex   llvmAsmlex | 
 | #define yyerror llvmAsmerror | 
 | #define yylval  llvmAsmlval | 
 | #define yychar  llvmAsmchar | 
 | #define yydebug llvmAsmdebug | 
 | #define yynerrs llvmAsmnerrs | 
 |  | 
 |  | 
 | /* Tokens.  */ | 
 | #ifndef YYTOKENTYPE | 
 | # define YYTOKENTYPE | 
 |    /* Put the tokens into the symbol table, so that GDB and other debuggers | 
 |       know about them.  */ | 
 |    enum yytokentype { | 
 |      ESINT64VAL = 258, | 
 |      EUINT64VAL = 259, | 
 |      ESAPINTVAL = 260, | 
 |      EUAPINTVAL = 261, | 
 |      LOCALVAL_ID = 262, | 
 |      GLOBALVAL_ID = 263, | 
 |      FPVAL = 264, | 
 |      VOID = 265, | 
 |      INTTYPE = 266, | 
 |      FLOAT = 267, | 
 |      DOUBLE = 268, | 
 |      X86_FP80 = 269, | 
 |      FP128 = 270, | 
 |      PPC_FP128 = 271, | 
 |      LABEL = 272, | 
 |      TYPE = 273, | 
 |      LOCALVAR = 274, | 
 |      GLOBALVAR = 275, | 
 |      LABELSTR = 276, | 
 |      STRINGCONSTANT = 277, | 
 |      ATSTRINGCONSTANT = 278, | 
 |      PCTSTRINGCONSTANT = 279, | 
 |      ZEROINITIALIZER = 280, | 
 |      TRUETOK = 281, | 
 |      FALSETOK = 282, | 
 |      BEGINTOK = 283, | 
 |      ENDTOK = 284, | 
 |      DECLARE = 285, | 
 |      DEFINE = 286, | 
 |      GLOBAL = 287, | 
 |      CONSTANT = 288, | 
 |      SECTION = 289, | 
 |      ALIAS = 290, | 
 |      VOLATILE = 291, | 
 |      THREAD_LOCAL = 292, | 
 |      TO = 293, | 
 |      DOTDOTDOT = 294, | 
 |      NULL_TOK = 295, | 
 |      UNDEF = 296, | 
 |      INTERNAL = 297, | 
 |      LINKONCE = 298, | 
 |      WEAK = 299, | 
 |      APPENDING = 300, | 
 |      DLLIMPORT = 301, | 
 |      DLLEXPORT = 302, | 
 |      EXTERN_WEAK = 303, | 
 |      OPAQUE = 304, | 
 |      EXTERNAL = 305, | 
 |      TARGET = 306, | 
 |      TRIPLE = 307, | 
 |      ALIGN = 308, | 
 |      ADDRSPACE = 309, | 
 |      DEPLIBS = 310, | 
 |      CALL = 311, | 
 |      TAIL = 312, | 
 |      ASM_TOK = 313, | 
 |      MODULE = 314, | 
 |      SIDEEFFECT = 315, | 
 |      CC_TOK = 316, | 
 |      CCC_TOK = 317, | 
 |      FASTCC_TOK = 318, | 
 |      COLDCC_TOK = 319, | 
 |      X86_STDCALLCC_TOK = 320, | 
 |      X86_FASTCALLCC_TOK = 321, | 
 |      DATALAYOUT = 322, | 
 |      UNWINDS = 323, | 
 |      RET = 324, | 
 |      BR = 325, | 
 |      SWITCH = 326, | 
 |      INVOKE = 327, | 
 |      UNWIND = 328, | 
 |      UNREACHABLE = 329, | 
 |      ADD = 330, | 
 |      SUB = 331, | 
 |      MUL = 332, | 
 |      UDIV = 333, | 
 |      SDIV = 334, | 
 |      FDIV = 335, | 
 |      UREM = 336, | 
 |      SREM = 337, | 
 |      FREM = 338, | 
 |      AND = 339, | 
 |      OR = 340, | 
 |      XOR = 341, | 
 |      SHL = 342, | 
 |      LSHR = 343, | 
 |      ASHR = 344, | 
 |      ICMP = 345, | 
 |      FCMP = 346, | 
 |      EQ = 347, | 
 |      NE = 348, | 
 |      SLT = 349, | 
 |      SGT = 350, | 
 |      SLE = 351, | 
 |      SGE = 352, | 
 |      ULT = 353, | 
 |      UGT = 354, | 
 |      ULE = 355, | 
 |      UGE = 356, | 
 |      OEQ = 357, | 
 |      ONE = 358, | 
 |      OLT = 359, | 
 |      OGT = 360, | 
 |      OLE = 361, | 
 |      OGE = 362, | 
 |      ORD = 363, | 
 |      UNO = 364, | 
 |      UEQ = 365, | 
 |      UNE = 366, | 
 |      MALLOC = 367, | 
 |      ALLOCA = 368, | 
 |      FREE = 369, | 
 |      LOAD = 370, | 
 |      STORE = 371, | 
 |      GETELEMENTPTR = 372, | 
 |      TRUNC = 373, | 
 |      ZEXT = 374, | 
 |      SEXT = 375, | 
 |      FPTRUNC = 376, | 
 |      FPEXT = 377, | 
 |      BITCAST = 378, | 
 |      UITOFP = 379, | 
 |      SITOFP = 380, | 
 |      FPTOUI = 381, | 
 |      FPTOSI = 382, | 
 |      INTTOPTR = 383, | 
 |      PTRTOINT = 384, | 
 |      PHI_TOK = 385, | 
 |      SELECT = 386, | 
 |      VAARG = 387, | 
 |      EXTRACTELEMENT = 388, | 
 |      INSERTELEMENT = 389, | 
 |      SHUFFLEVECTOR = 390, | 
 |      GETRESULT = 391, | 
 |      SIGNEXT = 392, | 
 |      ZEROEXT = 393, | 
 |      NORETURN = 394, | 
 |      INREG = 395, | 
 |      SRET = 396, | 
 |      NOUNWIND = 397, | 
 |      NOALIAS = 398, | 
 |      BYVAL = 399, | 
 |      NEST = 400, | 
 |      READNONE = 401, | 
 |      READONLY = 402, | 
 |      GC = 403, | 
 |      DEFAULT = 404, | 
 |      HIDDEN = 405, | 
 |      PROTECTED = 406 | 
 |    }; | 
 | #endif | 
 | /* Tokens.  */ | 
 | #define ESINT64VAL 258 | 
 | #define EUINT64VAL 259 | 
 | #define ESAPINTVAL 260 | 
 | #define EUAPINTVAL 261 | 
 | #define LOCALVAL_ID 262 | 
 | #define GLOBALVAL_ID 263 | 
 | #define FPVAL 264 | 
 | #define VOID 265 | 
 | #define INTTYPE 266 | 
 | #define FLOAT 267 | 
 | #define DOUBLE 268 | 
 | #define X86_FP80 269 | 
 | #define FP128 270 | 
 | #define PPC_FP128 271 | 
 | #define LABEL 272 | 
 | #define TYPE 273 | 
 | #define LOCALVAR 274 | 
 | #define GLOBALVAR 275 | 
 | #define LABELSTR 276 | 
 | #define STRINGCONSTANT 277 | 
 | #define ATSTRINGCONSTANT 278 | 
 | #define PCTSTRINGCONSTANT 279 | 
 | #define ZEROINITIALIZER 280 | 
 | #define TRUETOK 281 | 
 | #define FALSETOK 282 | 
 | #define BEGINTOK 283 | 
 | #define ENDTOK 284 | 
 | #define DECLARE 285 | 
 | #define DEFINE 286 | 
 | #define GLOBAL 287 | 
 | #define CONSTANT 288 | 
 | #define SECTION 289 | 
 | #define ALIAS 290 | 
 | #define VOLATILE 291 | 
 | #define THREAD_LOCAL 292 | 
 | #define TO 293 | 
 | #define DOTDOTDOT 294 | 
 | #define NULL_TOK 295 | 
 | #define UNDEF 296 | 
 | #define INTERNAL 297 | 
 | #define LINKONCE 298 | 
 | #define WEAK 299 | 
 | #define APPENDING 300 | 
 | #define DLLIMPORT 301 | 
 | #define DLLEXPORT 302 | 
 | #define EXTERN_WEAK 303 | 
 | #define OPAQUE 304 | 
 | #define EXTERNAL 305 | 
 | #define TARGET 306 | 
 | #define TRIPLE 307 | 
 | #define ALIGN 308 | 
 | #define ADDRSPACE 309 | 
 | #define DEPLIBS 310 | 
 | #define CALL 311 | 
 | #define TAIL 312 | 
 | #define ASM_TOK 313 | 
 | #define MODULE 314 | 
 | #define SIDEEFFECT 315 | 
 | #define CC_TOK 316 | 
 | #define CCC_TOK 317 | 
 | #define FASTCC_TOK 318 | 
 | #define COLDCC_TOK 319 | 
 | #define X86_STDCALLCC_TOK 320 | 
 | #define X86_FASTCALLCC_TOK 321 | 
 | #define DATALAYOUT 322 | 
 | #define UNWINDS 323 | 
 | #define RET 324 | 
 | #define BR 325 | 
 | #define SWITCH 326 | 
 | #define INVOKE 327 | 
 | #define UNWIND 328 | 
 | #define UNREACHABLE 329 | 
 | #define ADD 330 | 
 | #define SUB 331 | 
 | #define MUL 332 | 
 | #define UDIV 333 | 
 | #define SDIV 334 | 
 | #define FDIV 335 | 
 | #define UREM 336 | 
 | #define SREM 337 | 
 | #define FREM 338 | 
 | #define AND 339 | 
 | #define OR 340 | 
 | #define XOR 341 | 
 | #define SHL 342 | 
 | #define LSHR 343 | 
 | #define ASHR 344 | 
 | #define ICMP 345 | 
 | #define FCMP 346 | 
 | #define EQ 347 | 
 | #define NE 348 | 
 | #define SLT 349 | 
 | #define SGT 350 | 
 | #define SLE 351 | 
 | #define SGE 352 | 
 | #define ULT 353 | 
 | #define UGT 354 | 
 | #define ULE 355 | 
 | #define UGE 356 | 
 | #define OEQ 357 | 
 | #define ONE 358 | 
 | #define OLT 359 | 
 | #define OGT 360 | 
 | #define OLE 361 | 
 | #define OGE 362 | 
 | #define ORD 363 | 
 | #define UNO 364 | 
 | #define UEQ 365 | 
 | #define UNE 366 | 
 | #define MALLOC 367 | 
 | #define ALLOCA 368 | 
 | #define FREE 369 | 
 | #define LOAD 370 | 
 | #define STORE 371 | 
 | #define GETELEMENTPTR 372 | 
 | #define TRUNC 373 | 
 | #define ZEXT 374 | 
 | #define SEXT 375 | 
 | #define FPTRUNC 376 | 
 | #define FPEXT 377 | 
 | #define BITCAST 378 | 
 | #define UITOFP 379 | 
 | #define SITOFP 380 | 
 | #define FPTOUI 381 | 
 | #define FPTOSI 382 | 
 | #define INTTOPTR 383 | 
 | #define PTRTOINT 384 | 
 | #define PHI_TOK 385 | 
 | #define SELECT 386 | 
 | #define VAARG 387 | 
 | #define EXTRACTELEMENT 388 | 
 | #define INSERTELEMENT 389 | 
 | #define SHUFFLEVECTOR 390 | 
 | #define GETRESULT 391 | 
 | #define SIGNEXT 392 | 
 | #define ZEROEXT 393 | 
 | #define NORETURN 394 | 
 | #define INREG 395 | 
 | #define SRET 396 | 
 | #define NOUNWIND 397 | 
 | #define NOALIAS 398 | 
 | #define BYVAL 399 | 
 | #define NEST 400 | 
 | #define READNONE 401 | 
 | #define READONLY 402 | 
 | #define GC 403 | 
 | #define DEFAULT 404 | 
 | #define HIDDEN 405 | 
 | #define PROTECTED 406 | 
 |  | 
 |  | 
 |  | 
 |  | 
 | /* Copy the first part of user declarations.  */ | 
 | #line 14 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |  | 
 | #include "ParserInternals.h" | 
 | #include "llvm/CallingConv.h" | 
 | #include "llvm/InlineAsm.h" | 
 | #include "llvm/Instructions.h" | 
 | #include "llvm/Module.h" | 
 | #include "llvm/ValueSymbolTable.h" | 
 | #include "llvm/AutoUpgrade.h" | 
 | #include "llvm/Support/GetElementPtrTypeIterator.h" | 
 | #include "llvm/Support/CommandLine.h" | 
 | #include "llvm/ADT/SmallVector.h" | 
 | #include "llvm/ADT/STLExtras.h" | 
 | #include "llvm/Support/MathExtras.h" | 
 | #include "llvm/Support/Streams.h" | 
 | #include <algorithm> | 
 | #include <list> | 
 | #include <map> | 
 | #include <utility> | 
 |  | 
 | // The following is a gross hack. In order to rid the libAsmParser library of | 
 | // exceptions, we have to have a way of getting the yyparse function to go into | 
 | // an error situation. So, whenever we want an error to occur, the GenerateError | 
 | // function (see bottom of file) sets TriggerError. Then, at the end of each  | 
 | // production in the grammer we use CHECK_FOR_ERROR which will invoke YYERROR  | 
 | // (a goto) to put YACC in error state. Furthermore, several calls to  | 
 | // GenerateError are made from inside productions and they must simulate the | 
 | // previous exception behavior by exiting the production immediately. We have | 
 | // replaced these with the GEN_ERROR macro which calls GeneratError and then | 
 | // immediately invokes YYERROR. This would be so much cleaner if it was a  | 
 | // recursive descent parser. | 
 | static bool TriggerError = false; | 
 | #define CHECK_FOR_ERROR { if (TriggerError) { TriggerError = false; YYABORT; } } | 
 | #define GEN_ERROR(msg) { GenerateError(msg); YYERROR; } | 
 |  | 
 | int yyerror(const char *ErrorMsg); // Forward declarations to prevent "implicit | 
 | int yylex();                       // declaration" of xxx warnings. | 
 | int yyparse(); | 
 | using namespace llvm; | 
 |  | 
 | static Module *ParserResult; | 
 |  | 
 | // DEBUG_UPREFS - Define this symbol if you want to enable debugging output | 
 | // relating to upreferences in the input stream. | 
 | // | 
 | //#define DEBUG_UPREFS 1 | 
 | #ifdef DEBUG_UPREFS | 
 | #define UR_OUT(X) cerr << X | 
 | #else | 
 | #define UR_OUT(X) | 
 | #endif | 
 |  | 
 | #define YYERROR_VERBOSE 1 | 
 |  | 
 | static GlobalVariable *CurGV; | 
 |  | 
 |  | 
 | // This contains info used when building the body of a function.  It is | 
 | // destroyed when the function is completed. | 
 | // | 
 | typedef std::vector<Value *> ValueList;           // Numbered defs | 
 |  | 
 | static void  | 
 | ResolveDefinitions(ValueList &LateResolvers, ValueList *FutureLateResolvers=0); | 
 |  | 
 | static struct PerModuleInfo { | 
 |   Module *CurrentModule; | 
 |   ValueList Values; // Module level numbered definitions | 
 |   ValueList LateResolveValues; | 
 |   std::vector<PATypeHolder>    Types; | 
 |   std::map<ValID, PATypeHolder> LateResolveTypes; | 
 |  | 
 |   /// PlaceHolderInfo - When temporary placeholder objects are created, remember | 
 |   /// how they were referenced and on which line of the input they came from so | 
 |   /// that we can resolve them later and print error messages as appropriate. | 
 |   std::map<Value*, std::pair<ValID, int> > PlaceHolderInfo; | 
 |  | 
 |   // GlobalRefs - This maintains a mapping between <Type, ValID>'s and forward | 
 |   // references to global values.  Global values may be referenced before they | 
 |   // are defined, and if so, the temporary object that they represent is held | 
 |   // here.  This is used for forward references of GlobalValues. | 
 |   // | 
 |   typedef std::map<std::pair<const PointerType *, | 
 |                              ValID>, GlobalValue*> GlobalRefsType; | 
 |   GlobalRefsType GlobalRefs; | 
 |  | 
 |   void ModuleDone() { | 
 |     // If we could not resolve some functions at function compilation time | 
 |     // (calls to functions before they are defined), resolve them now...  Types | 
 |     // are resolved when the constant pool has been completely parsed. | 
 |     // | 
 |     ResolveDefinitions(LateResolveValues); | 
 |     if (TriggerError) | 
 |       return; | 
 |  | 
 |     // Check to make sure that all global value forward references have been | 
 |     // resolved! | 
 |     // | 
 |     if (!GlobalRefs.empty()) { | 
 |       std::string UndefinedReferences = "Unresolved global references exist:\n"; | 
 |  | 
 |       for (GlobalRefsType::iterator I = GlobalRefs.begin(), E =GlobalRefs.end(); | 
 |            I != E; ++I) { | 
 |         UndefinedReferences += "  " + I->first.first->getDescription() + " " + | 
 |                                I->first.second.getName() + "\n"; | 
 |       } | 
 |       GenerateError(UndefinedReferences); | 
 |       return; | 
 |     } | 
 |  | 
 |     // Look for intrinsic functions and CallInst that need to be upgraded | 
 |     for (Module::iterator FI = CurrentModule->begin(), | 
 |          FE = CurrentModule->end(); FI != FE; ) | 
 |       UpgradeCallsToIntrinsic(FI++); // must be post-increment, as we remove | 
 |  | 
 |     Values.clear();         // Clear out function local definitions | 
 |     Types.clear(); | 
 |     CurrentModule = 0; | 
 |   } | 
 |  | 
 |   // GetForwardRefForGlobal - Check to see if there is a forward reference | 
 |   // for this global.  If so, remove it from the GlobalRefs map and return it. | 
 |   // If not, just return null. | 
 |   GlobalValue *GetForwardRefForGlobal(const PointerType *PTy, ValID ID) { | 
 |     // Check to see if there is a forward reference to this global variable... | 
 |     // if there is, eliminate it and patch the reference to use the new def'n. | 
 |     GlobalRefsType::iterator I = GlobalRefs.find(std::make_pair(PTy, ID)); | 
 |     GlobalValue *Ret = 0; | 
 |     if (I != GlobalRefs.end()) { | 
 |       Ret = I->second; | 
 |       GlobalRefs.erase(I); | 
 |     } | 
 |     return Ret; | 
 |   } | 
 |  | 
 |   bool TypeIsUnresolved(PATypeHolder* PATy) { | 
 |     // If it isn't abstract, its resolved | 
 |     const Type* Ty = PATy->get(); | 
 |     if (!Ty->isAbstract()) | 
 |       return false; | 
 |     // Traverse the type looking for abstract types. If it isn't abstract then | 
 |     // we don't need to traverse that leg of the type.  | 
 |     std::vector<const Type*> WorkList, SeenList; | 
 |     WorkList.push_back(Ty); | 
 |     while (!WorkList.empty()) { | 
 |       const Type* Ty = WorkList.back(); | 
 |       SeenList.push_back(Ty); | 
 |       WorkList.pop_back(); | 
 |       if (const OpaqueType* OpTy = dyn_cast<OpaqueType>(Ty)) { | 
 |         // Check to see if this is an unresolved type | 
 |         std::map<ValID, PATypeHolder>::iterator I = LateResolveTypes.begin(); | 
 |         std::map<ValID, PATypeHolder>::iterator E = LateResolveTypes.end(); | 
 |         for ( ; I != E; ++I) { | 
 |           if (I->second.get() == OpTy) | 
 |             return true; | 
 |         } | 
 |       } else if (const SequentialType* SeqTy = dyn_cast<SequentialType>(Ty)) { | 
 |         const Type* TheTy = SeqTy->getElementType(); | 
 |         if (TheTy->isAbstract() && TheTy != Ty) { | 
 |           std::vector<const Type*>::iterator I = SeenList.begin(),  | 
 |                                              E = SeenList.end(); | 
 |           for ( ; I != E; ++I) | 
 |             if (*I == TheTy) | 
 |               break; | 
 |           if (I == E) | 
 |             WorkList.push_back(TheTy); | 
 |         } | 
 |       } else if (const StructType* StrTy = dyn_cast<StructType>(Ty)) { | 
 |         for (unsigned i = 0; i < StrTy->getNumElements(); ++i) { | 
 |           const Type* TheTy = StrTy->getElementType(i); | 
 |           if (TheTy->isAbstract() && TheTy != Ty) { | 
 |             std::vector<const Type*>::iterator I = SeenList.begin(),  | 
 |                                                E = SeenList.end(); | 
 |             for ( ; I != E; ++I) | 
 |               if (*I == TheTy) | 
 |                 break; | 
 |             if (I == E) | 
 |               WorkList.push_back(TheTy); | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |     return false; | 
 |   } | 
 | } CurModule; | 
 |  | 
 | static struct PerFunctionInfo { | 
 |   Function *CurrentFunction;     // Pointer to current function being created | 
 |  | 
 |   ValueList Values; // Keep track of #'d definitions | 
 |   unsigned NextValNum; | 
 |   ValueList LateResolveValues; | 
 |   bool isDeclare;                   // Is this function a forward declararation? | 
 |   GlobalValue::LinkageTypes Linkage; // Linkage for forward declaration. | 
 |   GlobalValue::VisibilityTypes Visibility; | 
 |  | 
 |   /// BBForwardRefs - When we see forward references to basic blocks, keep | 
 |   /// track of them here. | 
 |   std::map<ValID, BasicBlock*> BBForwardRefs; | 
 |  | 
 |   inline PerFunctionInfo() { | 
 |     CurrentFunction = 0; | 
 |     isDeclare = false; | 
 |     Linkage = GlobalValue::ExternalLinkage; | 
 |     Visibility = GlobalValue::DefaultVisibility; | 
 |   } | 
 |  | 
 |   inline void FunctionStart(Function *M) { | 
 |     CurrentFunction = M; | 
 |     NextValNum = 0; | 
 |   } | 
 |  | 
 |   void FunctionDone() { | 
 |     // Any forward referenced blocks left? | 
 |     if (!BBForwardRefs.empty()) { | 
 |       GenerateError("Undefined reference to label " + | 
 |                      BBForwardRefs.begin()->second->getName()); | 
 |       return; | 
 |     } | 
 |  | 
 |     // Resolve all forward references now. | 
 |     ResolveDefinitions(LateResolveValues, &CurModule.LateResolveValues); | 
 |  | 
 |     Values.clear();         // Clear out function local definitions | 
 |     BBForwardRefs.clear(); | 
 |     CurrentFunction = 0; | 
 |     isDeclare = false; | 
 |     Linkage = GlobalValue::ExternalLinkage; | 
 |     Visibility = GlobalValue::DefaultVisibility; | 
 |   } | 
 | } CurFun;  // Info for the current function... | 
 |  | 
 | static bool inFunctionScope() { return CurFun.CurrentFunction != 0; } | 
 |  | 
 |  | 
 | //===----------------------------------------------------------------------===// | 
 | //               Code to handle definitions of all the types | 
 | //===----------------------------------------------------------------------===// | 
 |  | 
 | static void InsertValue(Value *V, ValueList &ValueTab = CurFun.Values) { | 
 |   // Things that have names or are void typed don't get slot numbers | 
 |   if (V->hasName() || (V->getType() == Type::VoidTy)) | 
 |     return; | 
 |  | 
 |   // In the case of function values, we have to allow for the forward reference | 
 |   // of basic blocks, which are included in the numbering. Consequently, we keep | 
 |   // track of the next insertion location with NextValNum. When a BB gets  | 
 |   // inserted, it could change the size of the CurFun.Values vector. | 
 |   if (&ValueTab == &CurFun.Values) { | 
 |     if (ValueTab.size() <= CurFun.NextValNum) | 
 |       ValueTab.resize(CurFun.NextValNum+1); | 
 |     ValueTab[CurFun.NextValNum++] = V; | 
 |     return; | 
 |   }  | 
 |   // For all other lists, its okay to just tack it on the back of the vector. | 
 |   ValueTab.push_back(V); | 
 | } | 
 |  | 
 | static const Type *getTypeVal(const ValID &D, bool DoNotImprovise = false) { | 
 |   switch (D.Type) { | 
 |   case ValID::LocalID:               // Is it a numbered definition? | 
 |     // Module constants occupy the lowest numbered slots... | 
 |     if (D.Num < CurModule.Types.size()) | 
 |       return CurModule.Types[D.Num]; | 
 |     break; | 
 |   case ValID::LocalName:                 // Is it a named definition? | 
 |     if (const Type *N = CurModule.CurrentModule->getTypeByName(D.getName())) { | 
 |       D.destroy();  // Free old strdup'd memory... | 
 |       return N; | 
 |     } | 
 |     break; | 
 |   default: | 
 |     GenerateError("Internal parser error: Invalid symbol type reference"); | 
 |     return 0; | 
 |   } | 
 |  | 
 |   // If we reached here, we referenced either a symbol that we don't know about | 
 |   // or an id number that hasn't been read yet.  We may be referencing something | 
 |   // forward, so just create an entry to be resolved later and get to it... | 
 |   // | 
 |   if (DoNotImprovise) return 0;  // Do we just want a null to be returned? | 
 |  | 
 |  | 
 |   if (inFunctionScope()) { | 
 |     if (D.Type == ValID::LocalName) { | 
 |       GenerateError("Reference to an undefined type: '" + D.getName() + "'"); | 
 |       return 0; | 
 |     } else { | 
 |       GenerateError("Reference to an undefined type: #" + utostr(D.Num)); | 
 |       return 0; | 
 |     } | 
 |   } | 
 |  | 
 |   std::map<ValID, PATypeHolder>::iterator I =CurModule.LateResolveTypes.find(D); | 
 |   if (I != CurModule.LateResolveTypes.end()) | 
 |     return I->second; | 
 |  | 
 |   Type *Typ = OpaqueType::get(); | 
 |   CurModule.LateResolveTypes.insert(std::make_pair(D, Typ)); | 
 |   return Typ; | 
 |  } | 
 |  | 
 | // getExistingVal - Look up the value specified by the provided type and | 
 | // the provided ValID.  If the value exists and has already been defined, return | 
 | // it.  Otherwise return null. | 
 | // | 
 | static Value *getExistingVal(const Type *Ty, const ValID &D) { | 
 |   if (isa<FunctionType>(Ty)) { | 
 |     GenerateError("Functions are not values and " | 
 |                    "must be referenced as pointers"); | 
 |     return 0; | 
 |   } | 
 |  | 
 |   switch (D.Type) { | 
 |   case ValID::LocalID: {                 // Is it a numbered definition? | 
 |     // Check that the number is within bounds. | 
 |     if (D.Num >= CurFun.Values.size())  | 
 |       return 0; | 
 |     Value *Result = CurFun.Values[D.Num]; | 
 |     if (Ty != Result->getType()) { | 
 |       GenerateError("Numbered value (%" + utostr(D.Num) + ") of type '" + | 
 |                     Result->getType()->getDescription() + "' does not match "  | 
 |                     "expected type, '" + Ty->getDescription() + "'"); | 
 |       return 0; | 
 |     } | 
 |     return Result; | 
 |   } | 
 |   case ValID::GlobalID: {                 // Is it a numbered definition? | 
 |     if (D.Num >= CurModule.Values.size())  | 
 |       return 0; | 
 |     Value *Result = CurModule.Values[D.Num]; | 
 |     if (Ty != Result->getType()) { | 
 |       GenerateError("Numbered value (@" + utostr(D.Num) + ") of type '" + | 
 |                     Result->getType()->getDescription() + "' does not match "  | 
 |                     "expected type, '" + Ty->getDescription() + "'"); | 
 |       return 0; | 
 |     } | 
 |     return Result; | 
 |   } | 
 |      | 
 |   case ValID::LocalName: {                // Is it a named definition? | 
 |     if (!inFunctionScope())  | 
 |       return 0; | 
 |     ValueSymbolTable &SymTab = CurFun.CurrentFunction->getValueSymbolTable(); | 
 |     Value *N = SymTab.lookup(D.getName()); | 
 |     if (N == 0)  | 
 |       return 0; | 
 |     if (N->getType() != Ty) | 
 |       return 0; | 
 |      | 
 |     D.destroy();  // Free old strdup'd memory... | 
 |     return N; | 
 |   } | 
 |   case ValID::GlobalName: {                // Is it a named definition? | 
 |     ValueSymbolTable &SymTab = CurModule.CurrentModule->getValueSymbolTable(); | 
 |     Value *N = SymTab.lookup(D.getName()); | 
 |     if (N == 0)  | 
 |       return 0; | 
 |     if (N->getType() != Ty) | 
 |       return 0; | 
 |  | 
 |     D.destroy();  // Free old strdup'd memory... | 
 |     return N; | 
 |   } | 
 |  | 
 |   // Check to make sure that "Ty" is an integral type, and that our | 
 |   // value will fit into the specified type... | 
 |   case ValID::ConstSIntVal:    // Is it a constant pool reference?? | 
 |     if (!isa<IntegerType>(Ty) || | 
 |         !ConstantInt::isValueValidForType(Ty, D.ConstPool64)) { | 
 |       GenerateError("Signed integral constant '" + | 
 |                      itostr(D.ConstPool64) + "' is invalid for type '" + | 
 |                      Ty->getDescription() + "'"); | 
 |       return 0; | 
 |     } | 
 |     return ConstantInt::get(Ty, D.ConstPool64, true); | 
 |  | 
 |   case ValID::ConstUIntVal:     // Is it an unsigned const pool reference? | 
 |     if (isa<IntegerType>(Ty) && | 
 |         ConstantInt::isValueValidForType(Ty, D.UConstPool64)) | 
 |       return ConstantInt::get(Ty, D.UConstPool64); | 
 |  | 
 |     if (!isa<IntegerType>(Ty) || | 
 |         !ConstantInt::isValueValidForType(Ty, D.ConstPool64)) { | 
 |       GenerateError("Integral constant '" + utostr(D.UConstPool64) + | 
 |                     "' is invalid or out of range for type '" + | 
 |                     Ty->getDescription() + "'"); | 
 |       return 0; | 
 |     } | 
 |     // This is really a signed reference.  Transmogrify. | 
 |     return ConstantInt::get(Ty, D.ConstPool64, true); | 
 |  | 
 |   case ValID::ConstFPVal:        // Is it a floating point const pool reference? | 
 |     if (!Ty->isFloatingPoint() || | 
 |         !ConstantFP::isValueValidForType(Ty, *D.ConstPoolFP)) { | 
 |       GenerateError("FP constant invalid for type"); | 
 |       return 0; | 
 |     } | 
 |     // Lexer has no type info, so builds all float and double FP constants  | 
 |     // as double.  Fix this here.  Long double does not need this. | 
 |     if (&D.ConstPoolFP->getSemantics() == &APFloat::IEEEdouble && | 
 |         Ty==Type::FloatTy) | 
 |       D.ConstPoolFP->convert(APFloat::IEEEsingle, APFloat::rmNearestTiesToEven); | 
 |     return ConstantFP::get(*D.ConstPoolFP); | 
 |  | 
 |   case ValID::ConstNullVal:      // Is it a null value? | 
 |     if (!isa<PointerType>(Ty)) { | 
 |       GenerateError("Cannot create a a non pointer null"); | 
 |       return 0; | 
 |     } | 
 |     return ConstantPointerNull::get(cast<PointerType>(Ty)); | 
 |  | 
 |   case ValID::ConstUndefVal:      // Is it an undef value? | 
 |     return UndefValue::get(Ty); | 
 |  | 
 |   case ValID::ConstZeroVal:      // Is it a zero value? | 
 |     return Constant::getNullValue(Ty); | 
 |      | 
 |   case ValID::ConstantVal:       // Fully resolved constant? | 
 |     if (D.ConstantValue->getType() != Ty) { | 
 |       GenerateError("Constant expression type different from required type"); | 
 |       return 0; | 
 |     } | 
 |     return D.ConstantValue; | 
 |  | 
 |   case ValID::InlineAsmVal: {    // Inline asm expression | 
 |     const PointerType *PTy = dyn_cast<PointerType>(Ty); | 
 |     const FunctionType *FTy = | 
 |       PTy ? dyn_cast<FunctionType>(PTy->getElementType()) : 0; | 
 |     if (!FTy || !InlineAsm::Verify(FTy, D.IAD->Constraints)) { | 
 |       GenerateError("Invalid type for asm constraint string"); | 
 |       return 0; | 
 |     } | 
 |     InlineAsm *IA = InlineAsm::get(FTy, D.IAD->AsmString, D.IAD->Constraints, | 
 |                                    D.IAD->HasSideEffects); | 
 |     D.destroy();   // Free InlineAsmDescriptor. | 
 |     return IA; | 
 |   } | 
 |   default: | 
 |     assert(0 && "Unhandled case!"); | 
 |     return 0; | 
 |   }   // End of switch | 
 |  | 
 |   assert(0 && "Unhandled case!"); | 
 |   return 0; | 
 | } | 
 |  | 
 | // getVal - This function is identical to getExistingVal, except that if a | 
 | // value is not already defined, it "improvises" by creating a placeholder var | 
 | // that looks and acts just like the requested variable.  When the value is | 
 | // defined later, all uses of the placeholder variable are replaced with the | 
 | // real thing. | 
 | // | 
 | static Value *getVal(const Type *Ty, const ValID &ID) { | 
 |   if (Ty == Type::LabelTy) { | 
 |     GenerateError("Cannot use a basic block here"); | 
 |     return 0; | 
 |   } | 
 |  | 
 |   // See if the value has already been defined. | 
 |   Value *V = getExistingVal(Ty, ID); | 
 |   if (V) return V; | 
 |   if (TriggerError) return 0; | 
 |  | 
 |   if (!Ty->isFirstClassType() && !isa<OpaqueType>(Ty)) { | 
 |     GenerateError("Invalid use of a composite type"); | 
 |     return 0; | 
 |   } | 
 |  | 
 |   // If we reached here, we referenced either a symbol that we don't know about | 
 |   // or an id number that hasn't been read yet.  We may be referencing something | 
 |   // forward, so just create an entry to be resolved later and get to it... | 
 |   // | 
 |   switch (ID.Type) { | 
 |   case ValID::GlobalName: | 
 |   case ValID::GlobalID: { | 
 |    const PointerType *PTy = dyn_cast<PointerType>(Ty); | 
 |    if (!PTy) { | 
 |      GenerateError("Invalid type for reference to global" ); | 
 |      return 0; | 
 |    } | 
 |    const Type* ElTy = PTy->getElementType(); | 
 |    if (const FunctionType *FTy = dyn_cast<FunctionType>(ElTy)) | 
 |      V = Function::Create(FTy, GlobalValue::ExternalLinkage); | 
 |    else | 
 |      V = new GlobalVariable(ElTy, false, GlobalValue::ExternalLinkage, 0, "", | 
 |                             (Module*)0, false, PTy->getAddressSpace()); | 
 |    break; | 
 |   } | 
 |   default: | 
 |    V = new Argument(Ty); | 
 |   } | 
 |    | 
 |   // Remember where this forward reference came from.  FIXME, shouldn't we try | 
 |   // to recycle these things?? | 
 |   CurModule.PlaceHolderInfo.insert(std::make_pair(V, std::make_pair(ID, | 
 |                                                               LLLgetLineNo()))); | 
 |  | 
 |   if (inFunctionScope()) | 
 |     InsertValue(V, CurFun.LateResolveValues); | 
 |   else | 
 |     InsertValue(V, CurModule.LateResolveValues); | 
 |   return V; | 
 | } | 
 |  | 
 | /// defineBBVal - This is a definition of a new basic block with the specified | 
 | /// identifier which must be the same as CurFun.NextValNum, if its numeric. | 
 | static BasicBlock *defineBBVal(const ValID &ID, BasicBlock *unwindDest) { | 
 |   assert(inFunctionScope() && "Can't get basic block at global scope!"); | 
 |  | 
 |   BasicBlock *BB = 0; | 
 |  | 
 |   // First, see if this was forward referenced | 
 |  | 
 |   std::map<ValID, BasicBlock*>::iterator BBI = CurFun.BBForwardRefs.find(ID); | 
 |   if (BBI != CurFun.BBForwardRefs.end()) { | 
 |     BB = BBI->second; | 
 |     // The forward declaration could have been inserted anywhere in the | 
 |     // function: insert it into the correct place now. | 
 |     CurFun.CurrentFunction->getBasicBlockList().remove(BB); | 
 |     CurFun.CurrentFunction->getBasicBlockList().push_back(BB); | 
 |  | 
 |     // We're about to erase the entry, save the key so we can clean it up. | 
 |     ValID Tmp = BBI->first; | 
 |  | 
 |     // Erase the forward ref from the map as its no longer "forward" | 
 |     CurFun.BBForwardRefs.erase(ID); | 
 |  | 
 |     // The key has been removed from the map but so we don't want to leave  | 
 |     // strdup'd memory around so destroy it too. | 
 |     Tmp.destroy(); | 
 |  | 
 |     // If its a numbered definition, bump the number and set the BB value. | 
 |     if (ID.Type == ValID::LocalID) { | 
 |       assert(ID.Num == CurFun.NextValNum && "Invalid new block number"); | 
 |       InsertValue(BB); | 
 |     } | 
 |   } else {  | 
 |     // We haven't seen this BB before and its first mention is a definition.  | 
 |     // Just create it and return it. | 
 |     std::string Name (ID.Type == ValID::LocalName ? ID.getName() : ""); | 
 |     BB = BasicBlock::Create(Name, CurFun.CurrentFunction); | 
 |     if (ID.Type == ValID::LocalID) { | 
 |       assert(ID.Num == CurFun.NextValNum && "Invalid new block number"); | 
 |       InsertValue(BB); | 
 |     } | 
 |   } | 
 |  | 
 |   ID.destroy(); | 
 |   BB->setUnwindDest(unwindDest); | 
 |   return BB; | 
 | } | 
 |  | 
 | /// getBBVal - get an existing BB value or create a forward reference for it. | 
 | ///  | 
 | static BasicBlock *getBBVal(const ValID &ID) { | 
 |   assert(inFunctionScope() && "Can't get basic block at global scope!"); | 
 |  | 
 |   BasicBlock *BB =  0; | 
 |  | 
 |   std::map<ValID, BasicBlock*>::iterator BBI = CurFun.BBForwardRefs.find(ID); | 
 |   if (BBI != CurFun.BBForwardRefs.end()) { | 
 |     BB = BBI->second; | 
 |   } if (ID.Type == ValID::LocalName) { | 
 |     std::string Name = ID.getName(); | 
 |     Value *N = CurFun.CurrentFunction->getValueSymbolTable().lookup(Name); | 
 |     if (N) { | 
 |       if (N->getType()->getTypeID() == Type::LabelTyID) | 
 |         BB = cast<BasicBlock>(N); | 
 |       else | 
 |         GenerateError("Reference to label '" + Name + "' is actually of type '"+ | 
 |           N->getType()->getDescription() + "'"); | 
 |     } | 
 |   } else if (ID.Type == ValID::LocalID) { | 
 |     if (ID.Num < CurFun.NextValNum && ID.Num < CurFun.Values.size()) { | 
 |       if (CurFun.Values[ID.Num]->getType()->getTypeID() == Type::LabelTyID) | 
 |         BB = cast<BasicBlock>(CurFun.Values[ID.Num]); | 
 |       else | 
 |         GenerateError("Reference to label '%" + utostr(ID.Num) +  | 
 |           "' is actually of type '"+  | 
 |           CurFun.Values[ID.Num]->getType()->getDescription() + "'"); | 
 |     } | 
 |   } else { | 
 |     GenerateError("Illegal label reference " + ID.getName()); | 
 |     return 0; | 
 |   } | 
 |  | 
 |   // If its already been defined, return it now. | 
 |   if (BB) { | 
 |     ID.destroy(); // Free strdup'd memory. | 
 |     return BB; | 
 |   } | 
 |  | 
 |   // Otherwise, this block has not been seen before, create it. | 
 |   std::string Name; | 
 |   if (ID.Type == ValID::LocalName) | 
 |     Name = ID.getName(); | 
 |   BB = BasicBlock::Create(Name, CurFun.CurrentFunction); | 
 |  | 
 |   // Insert it in the forward refs map. | 
 |   CurFun.BBForwardRefs[ID] = BB; | 
 |  | 
 |   return BB; | 
 | } | 
 |  | 
 |  | 
 | //===----------------------------------------------------------------------===// | 
 | //              Code to handle forward references in instructions | 
 | //===----------------------------------------------------------------------===// | 
 | // | 
 | // This code handles the late binding needed with statements that reference | 
 | // values not defined yet... for example, a forward branch, or the PHI node for | 
 | // a loop body. | 
 | // | 
 | // This keeps a table (CurFun.LateResolveValues) of all such forward references | 
 | // and back patchs after we are done. | 
 | // | 
 |  | 
 | // ResolveDefinitions - If we could not resolve some defs at parsing | 
 | // time (forward branches, phi functions for loops, etc...) resolve the | 
 | // defs now... | 
 | // | 
 | static void  | 
 | ResolveDefinitions(ValueList &LateResolvers, ValueList *FutureLateResolvers) { | 
 |   // Loop over LateResolveDefs fixing up stuff that couldn't be resolved | 
 |   while (!LateResolvers.empty()) { | 
 |     Value *V = LateResolvers.back(); | 
 |     LateResolvers.pop_back(); | 
 |  | 
 |     std::map<Value*, std::pair<ValID, int> >::iterator PHI = | 
 |       CurModule.PlaceHolderInfo.find(V); | 
 |     assert(PHI != CurModule.PlaceHolderInfo.end() && "Placeholder error!"); | 
 |  | 
 |     ValID &DID = PHI->second.first; | 
 |  | 
 |     Value *TheRealValue = getExistingVal(V->getType(), DID); | 
 |     if (TriggerError) | 
 |       return; | 
 |     if (TheRealValue) { | 
 |       V->replaceAllUsesWith(TheRealValue); | 
 |       delete V; | 
 |       CurModule.PlaceHolderInfo.erase(PHI); | 
 |     } else if (FutureLateResolvers) { | 
 |       // Functions have their unresolved items forwarded to the module late | 
 |       // resolver table | 
 |       InsertValue(V, *FutureLateResolvers); | 
 |     } else { | 
 |       if (DID.Type == ValID::LocalName || DID.Type == ValID::GlobalName) { | 
 |         GenerateError("Reference to an invalid definition: '" +DID.getName()+ | 
 |                        "' of type '" + V->getType()->getDescription() + "'", | 
 |                        PHI->second.second); | 
 |         return; | 
 |       } else { | 
 |         GenerateError("Reference to an invalid definition: #" + | 
 |                        itostr(DID.Num) + " of type '" + | 
 |                        V->getType()->getDescription() + "'", | 
 |                        PHI->second.second); | 
 |         return; | 
 |       } | 
 |     } | 
 |   } | 
 |   LateResolvers.clear(); | 
 | } | 
 |  | 
 | // ResolveTypeTo - A brand new type was just declared.  This means that (if | 
 | // name is not null) things referencing Name can be resolved.  Otherwise, things | 
 | // refering to the number can be resolved.  Do this now. | 
 | // | 
 | static void ResolveTypeTo(std::string *Name, const Type *ToTy) { | 
 |   ValID D; | 
 |   if (Name) | 
 |     D = ValID::createLocalName(*Name); | 
 |   else       | 
 |     D = ValID::createLocalID(CurModule.Types.size()); | 
 |  | 
 |   std::map<ValID, PATypeHolder>::iterator I = | 
 |     CurModule.LateResolveTypes.find(D); | 
 |   if (I != CurModule.LateResolveTypes.end()) { | 
 |     ((DerivedType*)I->second.get())->refineAbstractTypeTo(ToTy); | 
 |     CurModule.LateResolveTypes.erase(I); | 
 |   } | 
 | } | 
 |  | 
 | // setValueName - Set the specified value to the name given.  The name may be | 
 | // null potentially, in which case this is a noop.  The string passed in is | 
 | // assumed to be a malloc'd string buffer, and is free'd by this function. | 
 | // | 
 | static void setValueName(Value *V, std::string *NameStr) { | 
 |   if (!NameStr) return; | 
 |   std::string Name(*NameStr);      // Copy string | 
 |   delete NameStr;                  // Free old string | 
 |  | 
 |   if (V->getType() == Type::VoidTy) { | 
 |     GenerateError("Can't assign name '" + Name+"' to value with void type"); | 
 |     return; | 
 |   } | 
 |  | 
 |   assert(inFunctionScope() && "Must be in function scope!"); | 
 |   ValueSymbolTable &ST = CurFun.CurrentFunction->getValueSymbolTable(); | 
 |   if (ST.lookup(Name)) { | 
 |     GenerateError("Redefinition of value '" + Name + "' of type '" + | 
 |                    V->getType()->getDescription() + "'"); | 
 |     return; | 
 |   } | 
 |  | 
 |   // Set the name. | 
 |   V->setName(Name); | 
 | } | 
 |  | 
 | /// ParseGlobalVariable - Handle parsing of a global.  If Initializer is null, | 
 | /// this is a declaration, otherwise it is a definition. | 
 | static GlobalVariable * | 
 | ParseGlobalVariable(std::string *NameStr, | 
 |                     GlobalValue::LinkageTypes Linkage, | 
 |                     GlobalValue::VisibilityTypes Visibility, | 
 |                     bool isConstantGlobal, const Type *Ty, | 
 |                     Constant *Initializer, bool IsThreadLocal, | 
 |                     unsigned AddressSpace = 0) { | 
 |   if (isa<FunctionType>(Ty)) { | 
 |     GenerateError("Cannot declare global vars of function type"); | 
 |     return 0; | 
 |   } | 
 |  | 
 |   const PointerType *PTy = PointerType::get(Ty, AddressSpace); | 
 |  | 
 |   std::string Name; | 
 |   if (NameStr) { | 
 |     Name = *NameStr;      // Copy string | 
 |     delete NameStr;       // Free old string | 
 |   } | 
 |  | 
 |   // See if this global value was forward referenced.  If so, recycle the | 
 |   // object. | 
 |   ValID ID; | 
 |   if (!Name.empty()) { | 
 |     ID = ValID::createGlobalName(Name); | 
 |   } else { | 
 |     ID = ValID::createGlobalID(CurModule.Values.size()); | 
 |   } | 
 |  | 
 |   if (GlobalValue *FWGV = CurModule.GetForwardRefForGlobal(PTy, ID)) { | 
 |     // Move the global to the end of the list, from whereever it was | 
 |     // previously inserted. | 
 |     GlobalVariable *GV = cast<GlobalVariable>(FWGV); | 
 |     CurModule.CurrentModule->getGlobalList().remove(GV); | 
 |     CurModule.CurrentModule->getGlobalList().push_back(GV); | 
 |     GV->setInitializer(Initializer); | 
 |     GV->setLinkage(Linkage); | 
 |     GV->setVisibility(Visibility); | 
 |     GV->setConstant(isConstantGlobal); | 
 |     GV->setThreadLocal(IsThreadLocal); | 
 |     InsertValue(GV, CurModule.Values); | 
 |     return GV; | 
 |   } | 
 |  | 
 |   // If this global has a name | 
 |   if (!Name.empty()) { | 
 |     // if the global we're parsing has an initializer (is a definition) and | 
 |     // has external linkage. | 
 |     if (Initializer && Linkage != GlobalValue::InternalLinkage) | 
 |       // If there is already a global with external linkage with this name | 
 |       if (CurModule.CurrentModule->getGlobalVariable(Name, false)) { | 
 |         // If we allow this GVar to get created, it will be renamed in the | 
 |         // symbol table because it conflicts with an existing GVar. We can't | 
 |         // allow redefinition of GVars whose linking indicates that their name | 
 |         // must stay the same. Issue the error. | 
 |         GenerateError("Redefinition of global variable named '" + Name + | 
 |                        "' of type '" + Ty->getDescription() + "'"); | 
 |         return 0; | 
 |       } | 
 |   } | 
 |  | 
 |   // Otherwise there is no existing GV to use, create one now. | 
 |   GlobalVariable *GV = | 
 |     new GlobalVariable(Ty, isConstantGlobal, Linkage, Initializer, Name, | 
 |                        CurModule.CurrentModule, IsThreadLocal, AddressSpace); | 
 |   GV->setVisibility(Visibility); | 
 |   InsertValue(GV, CurModule.Values); | 
 |   return GV; | 
 | } | 
 |  | 
 | // setTypeName - Set the specified type to the name given.  The name may be | 
 | // null potentially, in which case this is a noop.  The string passed in is | 
 | // assumed to be a malloc'd string buffer, and is freed by this function. | 
 | // | 
 | // This function returns true if the type has already been defined, but is | 
 | // allowed to be redefined in the specified context.  If the name is a new name | 
 | // for the type plane, it is inserted and false is returned. | 
 | static bool setTypeName(const Type *T, std::string *NameStr) { | 
 |   assert(!inFunctionScope() && "Can't give types function-local names!"); | 
 |   if (NameStr == 0) return false; | 
 |   | 
 |   std::string Name(*NameStr);      // Copy string | 
 |   delete NameStr;                  // Free old string | 
 |  | 
 |   // We don't allow assigning names to void type | 
 |   if (T == Type::VoidTy) { | 
 |     GenerateError("Can't assign name '" + Name + "' to the void type"); | 
 |     return false; | 
 |   } | 
 |  | 
 |   // Set the type name, checking for conflicts as we do so. | 
 |   bool AlreadyExists = CurModule.CurrentModule->addTypeName(Name, T); | 
 |  | 
 |   if (AlreadyExists) {   // Inserting a name that is already defined??? | 
 |     const Type *Existing = CurModule.CurrentModule->getTypeByName(Name); | 
 |     assert(Existing && "Conflict but no matching type?!"); | 
 |  | 
 |     // There is only one case where this is allowed: when we are refining an | 
 |     // opaque type.  In this case, Existing will be an opaque type. | 
 |     if (const OpaqueType *OpTy = dyn_cast<OpaqueType>(Existing)) { | 
 |       // We ARE replacing an opaque type! | 
 |       const_cast<OpaqueType*>(OpTy)->refineAbstractTypeTo(T); | 
 |       return true; | 
 |     } | 
 |  | 
 |     // Otherwise, this is an attempt to redefine a type. That's okay if | 
 |     // the redefinition is identical to the original. This will be so if | 
 |     // Existing and T point to the same Type object. In this one case we | 
 |     // allow the equivalent redefinition. | 
 |     if (Existing == T) return true;  // Yes, it's equal. | 
 |  | 
 |     // Any other kind of (non-equivalent) redefinition is an error. | 
 |     GenerateError("Redefinition of type named '" + Name + "' of type '" + | 
 |                    T->getDescription() + "'"); | 
 |   } | 
 |  | 
 |   return false; | 
 | } | 
 |  | 
 | //===----------------------------------------------------------------------===// | 
 | // Code for handling upreferences in type names... | 
 | // | 
 |  | 
 | // TypeContains - Returns true if Ty directly contains E in it. | 
 | // | 
 | static bool TypeContains(const Type *Ty, const Type *E) { | 
 |   return std::find(Ty->subtype_begin(), Ty->subtype_end(), | 
 |                    E) != Ty->subtype_end(); | 
 | } | 
 |  | 
 | namespace { | 
 |   struct UpRefRecord { | 
 |     // NestingLevel - The number of nesting levels that need to be popped before | 
 |     // this type is resolved. | 
 |     unsigned NestingLevel; | 
 |  | 
 |     // LastContainedTy - This is the type at the current binding level for the | 
 |     // type.  Every time we reduce the nesting level, this gets updated. | 
 |     const Type *LastContainedTy; | 
 |  | 
 |     // UpRefTy - This is the actual opaque type that the upreference is | 
 |     // represented with. | 
 |     OpaqueType *UpRefTy; | 
 |  | 
 |     UpRefRecord(unsigned NL, OpaqueType *URTy) | 
 |       : NestingLevel(NL), LastContainedTy(URTy), UpRefTy(URTy) {} | 
 |   }; | 
 | } | 
 |  | 
 | // UpRefs - A list of the outstanding upreferences that need to be resolved. | 
 | static std::vector<UpRefRecord> UpRefs; | 
 |  | 
 | /// HandleUpRefs - Every time we finish a new layer of types, this function is | 
 | /// called.  It loops through the UpRefs vector, which is a list of the | 
 | /// currently active types.  For each type, if the up reference is contained in | 
 | /// the newly completed type, we decrement the level count.  When the level | 
 | /// count reaches zero, the upreferenced type is the type that is passed in: | 
 | /// thus we can complete the cycle. | 
 | /// | 
 | static PATypeHolder HandleUpRefs(const Type *ty) { | 
 |   // If Ty isn't abstract, or if there are no up-references in it, then there is | 
 |   // nothing to resolve here. | 
 |   if (!ty->isAbstract() || UpRefs.empty()) return ty; | 
 |    | 
 |   PATypeHolder Ty(ty); | 
 |   UR_OUT("Type '" << Ty->getDescription() << | 
 |          "' newly formed.  Resolving upreferences.\n" << | 
 |          UpRefs.size() << " upreferences active!\n"); | 
 |  | 
 |   // If we find any resolvable upreferences (i.e., those whose NestingLevel goes | 
 |   // to zero), we resolve them all together before we resolve them to Ty.  At | 
 |   // the end of the loop, if there is anything to resolve to Ty, it will be in | 
 |   // this variable. | 
 |   OpaqueType *TypeToResolve = 0; | 
 |  | 
 |   for (unsigned i = 0; i != UpRefs.size(); ++i) { | 
 |     UR_OUT("  UR#" << i << " - TypeContains(" << Ty->getDescription() << ", " | 
 |            << UpRefs[i].second->getDescription() << ") = " | 
 |            << (TypeContains(Ty, UpRefs[i].second) ? "true" : "false") << "\n"); | 
 |     if (TypeContains(Ty, UpRefs[i].LastContainedTy)) { | 
 |       // Decrement level of upreference | 
 |       unsigned Level = --UpRefs[i].NestingLevel; | 
 |       UpRefs[i].LastContainedTy = Ty; | 
 |       UR_OUT("  Uplevel Ref Level = " << Level << "\n"); | 
 |       if (Level == 0) {                     // Upreference should be resolved! | 
 |         if (!TypeToResolve) { | 
 |           TypeToResolve = UpRefs[i].UpRefTy; | 
 |         } else { | 
 |           UR_OUT("  * Resolving upreference for " | 
 |                  << UpRefs[i].second->getDescription() << "\n"; | 
 |                  std::string OldName = UpRefs[i].UpRefTy->getDescription()); | 
 |           UpRefs[i].UpRefTy->refineAbstractTypeTo(TypeToResolve); | 
 |           UR_OUT("  * Type '" << OldName << "' refined upreference to: " | 
 |                  << (const void*)Ty << ", " << Ty->getDescription() << "\n"); | 
 |         } | 
 |         UpRefs.erase(UpRefs.begin()+i);     // Remove from upreference list... | 
 |         --i;                                // Do not skip the next element... | 
 |       } | 
 |     } | 
 |   } | 
 |  | 
 |   if (TypeToResolve) { | 
 |     UR_OUT("  * Resolving upreference for " | 
 |            << UpRefs[i].second->getDescription() << "\n"; | 
 |            std::string OldName = TypeToResolve->getDescription()); | 
 |     TypeToResolve->refineAbstractTypeTo(Ty); | 
 |   } | 
 |  | 
 |   return Ty; | 
 | } | 
 |  | 
 | //===----------------------------------------------------------------------===// | 
 | //            RunVMAsmParser - Define an interface to this parser | 
 | //===----------------------------------------------------------------------===// | 
 | // | 
 | static Module* RunParser(Module * M); | 
 |  | 
 | Module *llvm::RunVMAsmParser(llvm::MemoryBuffer *MB) { | 
 |   InitLLLexer(MB); | 
 |   Module *M = RunParser(new Module(LLLgetFilename())); | 
 |   FreeLexer(); | 
 |   return M; | 
 | } | 
 |  | 
 |  | 
 |  | 
 | /* Enabling traces.  */ | 
 | #ifndef YYDEBUG | 
 | # define YYDEBUG 0 | 
 | #endif | 
 |  | 
 | /* Enabling verbose error messages.  */ | 
 | #ifdef YYERROR_VERBOSE | 
 | # undef YYERROR_VERBOSE | 
 | # define YYERROR_VERBOSE 1 | 
 | #else | 
 | # define YYERROR_VERBOSE 0 | 
 | #endif | 
 |  | 
 | /* Enabling the token table.  */ | 
 | #ifndef YYTOKEN_TABLE | 
 | # define YYTOKEN_TABLE 0 | 
 | #endif | 
 |  | 
 | #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED | 
 | typedef union YYSTYPE | 
 | #line 950 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 | { | 
 |   llvm::Module                           *ModuleVal; | 
 |   llvm::Function                         *FunctionVal; | 
 |   llvm::BasicBlock                       *BasicBlockVal; | 
 |   llvm::TerminatorInst                   *TermInstVal; | 
 |   llvm::Instruction                      *InstVal; | 
 |   llvm::Constant                         *ConstVal; | 
 |  | 
 |   const llvm::Type                       *PrimType; | 
 |   std::list<llvm::PATypeHolder>          *TypeList; | 
 |   llvm::PATypeHolder                     *TypeVal; | 
 |   llvm::Value                            *ValueVal; | 
 |   std::vector<llvm::Value*>              *ValueList; | 
 |   llvm::ArgListType                      *ArgList; | 
 |   llvm::TypeWithAttrs                     TypeWithAttrs; | 
 |   llvm::TypeWithAttrsList                *TypeWithAttrsList; | 
 |   llvm::ParamList                        *ParamList; | 
 |  | 
 |   // Represent the RHS of PHI node | 
 |   std::list<std::pair<llvm::Value*, | 
 |                       llvm::BasicBlock*> > *PHIList; | 
 |   std::vector<std::pair<llvm::Constant*, llvm::BasicBlock*> > *JumpTable; | 
 |   std::vector<llvm::Constant*>           *ConstVector; | 
 |  | 
 |   llvm::GlobalValue::LinkageTypes         Linkage; | 
 |   llvm::GlobalValue::VisibilityTypes      Visibility; | 
 |   llvm::ParameterAttributes         ParamAttrs; | 
 |   llvm::APInt                       *APIntVal; | 
 |   int64_t                           SInt64Val; | 
 |   uint64_t                          UInt64Val; | 
 |   int                               SIntVal; | 
 |   unsigned                          UIntVal; | 
 |   llvm::APFloat                    *FPVal; | 
 |   bool                              BoolVal; | 
 |  | 
 |   std::string                      *StrVal;   // This memory must be deleted | 
 |   llvm::ValID                       ValIDVal; | 
 |  | 
 |   llvm::Instruction::BinaryOps      BinaryOpVal; | 
 |   llvm::Instruction::TermOps        TermOpVal; | 
 |   llvm::Instruction::MemoryOps      MemOpVal; | 
 |   llvm::Instruction::CastOps        CastOpVal; | 
 |   llvm::Instruction::OtherOps       OtherOpVal; | 
 |   llvm::ICmpInst::Predicate         IPredicate; | 
 |   llvm::FCmpInst::Predicate         FPredicate; | 
 | } | 
 | /* Line 193 of yacc.c.  */ | 
 | #line 1389 "llvmAsmParser.tab.c" | 
 | 	YYSTYPE; | 
 | # define yystype YYSTYPE /* obsolescent; will be withdrawn */ | 
 | # define YYSTYPE_IS_DECLARED 1 | 
 | # define YYSTYPE_IS_TRIVIAL 1 | 
 | #endif | 
 |  | 
 |  | 
 |  | 
 | /* Copy the second part of user declarations.  */ | 
 |  | 
 |  | 
 | /* Line 216 of yacc.c.  */ | 
 | #line 1402 "llvmAsmParser.tab.c" | 
 |  | 
 | #ifdef short | 
 | # undef short | 
 | #endif | 
 |  | 
 | #ifdef YYTYPE_UINT8 | 
 | typedef YYTYPE_UINT8 yytype_uint8; | 
 | #else | 
 | typedef unsigned char yytype_uint8; | 
 | #endif | 
 |  | 
 | #ifdef YYTYPE_INT8 | 
 | typedef YYTYPE_INT8 yytype_int8; | 
 | #elif (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | typedef signed char yytype_int8; | 
 | #else | 
 | typedef short int yytype_int8; | 
 | #endif | 
 |  | 
 | #ifdef YYTYPE_UINT16 | 
 | typedef YYTYPE_UINT16 yytype_uint16; | 
 | #else | 
 | typedef unsigned short int yytype_uint16; | 
 | #endif | 
 |  | 
 | #ifdef YYTYPE_INT16 | 
 | typedef YYTYPE_INT16 yytype_int16; | 
 | #else | 
 | typedef short int yytype_int16; | 
 | #endif | 
 |  | 
 | #ifndef YYSIZE_T | 
 | # ifdef __SIZE_TYPE__ | 
 | #  define YYSIZE_T __SIZE_TYPE__ | 
 | # elif defined size_t | 
 | #  define YYSIZE_T size_t | 
 | # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */ | 
 | #  define YYSIZE_T size_t | 
 | # else | 
 | #  define YYSIZE_T unsigned int | 
 | # endif | 
 | #endif | 
 |  | 
 | #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) | 
 |  | 
 | #ifndef YY_ | 
 | # if defined YYENABLE_NLS && YYENABLE_NLS | 
 | #  if ENABLE_NLS | 
 | #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */ | 
 | #   define YY_(msgid) dgettext ("bison-runtime", msgid) | 
 | #  endif | 
 | # endif | 
 | # ifndef YY_ | 
 | #  define YY_(msgid) msgid | 
 | # endif | 
 | #endif | 
 |  | 
 | /* Suppress unused-variable warnings by "using" E.  */ | 
 | #if ! defined lint || defined __GNUC__ | 
 | # define YYUSE(e) ((void) (e)) | 
 | #else | 
 | # define YYUSE(e) /* empty */ | 
 | #endif | 
 |  | 
 | /* Identity function, used to suppress warnings about constant conditions.  */ | 
 | #ifndef lint | 
 | # define YYID(n) (n) | 
 | #else | 
 | #if (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | static int | 
 | YYID (int i) | 
 | #else | 
 | static int | 
 | YYID (i) | 
 |     int i; | 
 | #endif | 
 | { | 
 |   return i; | 
 | } | 
 | #endif | 
 |  | 
 | #if ! defined yyoverflow || YYERROR_VERBOSE | 
 |  | 
 | /* The parser invokes alloca or malloc; define the necessary symbols.  */ | 
 |  | 
 | # ifdef YYSTACK_USE_ALLOCA | 
 | #  if YYSTACK_USE_ALLOCA | 
 | #   ifdef __GNUC__ | 
 | #    define YYSTACK_ALLOC __builtin_alloca | 
 | #   elif defined __BUILTIN_VA_ARG_INCR | 
 | #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */ | 
 | #   elif defined _AIX | 
 | #    define YYSTACK_ALLOC __alloca | 
 | #   elif defined _MSC_VER | 
 | #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */ | 
 | #    define alloca _alloca | 
 | #   else | 
 | #    define YYSTACK_ALLOC alloca | 
 | #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ | 
 | #     ifndef _STDLIB_H | 
 | #      define _STDLIB_H 1 | 
 | #     endif | 
 | #    endif | 
 | #   endif | 
 | #  endif | 
 | # endif | 
 |  | 
 | # ifdef YYSTACK_ALLOC | 
 |    /* Pacify GCC's `empty if-body' warning.  */ | 
 | #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) | 
 | #  ifndef YYSTACK_ALLOC_MAXIMUM | 
 |     /* The OS might guarantee only one guard page at the bottom of the stack, | 
 |        and a page size can be as small as 4096 bytes.  So we cannot safely | 
 |        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number | 
 |        to allow for a few compiler-allocated temporary stack slots.  */ | 
 | #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ | 
 | #  endif | 
 | # else | 
 | #  define YYSTACK_ALLOC YYMALLOC | 
 | #  define YYSTACK_FREE YYFREE | 
 | #  ifndef YYSTACK_ALLOC_MAXIMUM | 
 | #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM | 
 | #  endif | 
 | #  if (defined __cplusplus && ! defined _STDLIB_H \ | 
 |        && ! ((defined YYMALLOC || defined malloc) \ | 
 | 	     && (defined YYFREE || defined free))) | 
 | #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ | 
 | #   ifndef _STDLIB_H | 
 | #    define _STDLIB_H 1 | 
 | #   endif | 
 | #  endif | 
 | #  ifndef YYMALLOC | 
 | #   define YYMALLOC malloc | 
 | #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ | 
 | #   endif | 
 | #  endif | 
 | #  ifndef YYFREE | 
 | #   define YYFREE free | 
 | #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | void free (void *); /* INFRINGES ON USER NAME SPACE */ | 
 | #   endif | 
 | #  endif | 
 | # endif | 
 | #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ | 
 |  | 
 |  | 
 | #if (! defined yyoverflow \ | 
 |      && (! defined __cplusplus \ | 
 | 	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) | 
 |  | 
 | /* A type that is properly aligned for any stack member.  */ | 
 | union yyalloc | 
 | { | 
 |   yytype_int16 yyss; | 
 |   YYSTYPE yyvs; | 
 |   }; | 
 |  | 
 | /* The size of the maximum gap between one aligned stack and the next.  */ | 
 | # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) | 
 |  | 
 | /* The size of an array large to enough to hold all stacks, each with | 
 |    N elements.  */ | 
 | # define YYSTACK_BYTES(N) \ | 
 |      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ | 
 |       + YYSTACK_GAP_MAXIMUM) | 
 |  | 
 | /* Copy COUNT objects from FROM to TO.  The source and destination do | 
 |    not overlap.  */ | 
 | # ifndef YYCOPY | 
 | #  if defined __GNUC__ && 1 < __GNUC__ | 
 | #   define YYCOPY(To, From, Count) \ | 
 |       __builtin_memcpy (To, From, (Count) * sizeof (*(From))) | 
 | #  else | 
 | #   define YYCOPY(To, From, Count)		\ | 
 |       do					\ | 
 | 	{					\ | 
 | 	  YYSIZE_T yyi;				\ | 
 | 	  for (yyi = 0; yyi < (Count); yyi++)	\ | 
 | 	    (To)[yyi] = (From)[yyi];		\ | 
 | 	}					\ | 
 |       while (YYID (0)) | 
 | #  endif | 
 | # endif | 
 |  | 
 | /* Relocate STACK from its old location to the new one.  The | 
 |    local variables YYSIZE and YYSTACKSIZE give the old and new number of | 
 |    elements in the stack, and YYPTR gives the new location of the | 
 |    stack.  Advance YYPTR to a properly aligned location for the next | 
 |    stack.  */ | 
 | # define YYSTACK_RELOCATE(Stack)					\ | 
 |     do									\ | 
 |       {									\ | 
 | 	YYSIZE_T yynewbytes;						\ | 
 | 	YYCOPY (&yyptr->Stack, Stack, yysize);				\ | 
 | 	Stack = &yyptr->Stack;						\ | 
 | 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ | 
 | 	yyptr += yynewbytes / sizeof (*yyptr);				\ | 
 |       }									\ | 
 |     while (YYID (0)) | 
 |  | 
 | #endif | 
 |  | 
 | /* YYFINAL -- State number of the termination state.  */ | 
 | #define YYFINAL  43 | 
 | /* YYLAST -- Last index in YYTABLE.  */ | 
 | #define YYLAST   2015 | 
 |  | 
 | /* YYNTOKENS -- Number of terminals.  */ | 
 | #define YYNTOKENS  166 | 
 | /* YYNNTS -- Number of nonterminals.  */ | 
 | #define YYNNTS  85 | 
 | /* YYNRULES -- Number of rules.  */ | 
 | #define YYNRULES  324 | 
 | /* YYNRULES -- Number of states.  */ | 
 | #define YYNSTATES  635 | 
 |  | 
 | /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */ | 
 | #define YYUNDEFTOK  2 | 
 | #define YYMAXUTOK   406 | 
 |  | 
 | #define YYTRANSLATE(YYX)						\ | 
 |   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) | 
 |  | 
 | /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */ | 
 | static const yytype_uint8 yytranslate[] = | 
 | { | 
 |        0,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |      152,   153,   156,     2,   155,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |      161,   154,   162,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,   158,   157,   160,     2,     2,     2,     2,     2,   165, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |      159,     2,     2,   163,     2,   164,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     1,     2,     3,     4, | 
 |        5,     6,     7,     8,     9,    10,    11,    12,    13,    14, | 
 |       15,    16,    17,    18,    19,    20,    21,    22,    23,    24, | 
 |       25,    26,    27,    28,    29,    30,    31,    32,    33,    34, | 
 |       35,    36,    37,    38,    39,    40,    41,    42,    43,    44, | 
 |       45,    46,    47,    48,    49,    50,    51,    52,    53,    54, | 
 |       55,    56,    57,    58,    59,    60,    61,    62,    63,    64, | 
 |       65,    66,    67,    68,    69,    70,    71,    72,    73,    74, | 
 |       75,    76,    77,    78,    79,    80,    81,    82,    83,    84, | 
 |       85,    86,    87,    88,    89,    90,    91,    92,    93,    94, | 
 |       95,    96,    97,    98,    99,   100,   101,   102,   103,   104, | 
 |      105,   106,   107,   108,   109,   110,   111,   112,   113,   114, | 
 |      115,   116,   117,   118,   119,   120,   121,   122,   123,   124, | 
 |      125,   126,   127,   128,   129,   130,   131,   132,   133,   134, | 
 |      135,   136,   137,   138,   139,   140,   141,   142,   143,   144, | 
 |      145,   146,   147,   148,   149,   150,   151 | 
 | }; | 
 |  | 
 | #if YYDEBUG | 
 | /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in | 
 |    YYRHS.  */ | 
 | static const yytype_uint16 yyprhs[] = | 
 | { | 
 |        0,     0,     3,     5,     7,     9,    11,    13,    15,    17, | 
 |       19,    21,    23,    25,    27,    29,    31,    33,    35,    37, | 
 |       39,    41,    43,    45,    47,    49,    51,    53,    55,    57, | 
 |       59,    61,    63,    65,    67,    69,    71,    73,    75,    77, | 
 |       79,    81,    83,    85,    87,    89,    91,    93,    95,    97, | 
 |       99,   101,   103,   105,   107,   109,   111,   113,   115,   117, | 
 |      119,   121,   123,   125,   127,   129,   130,   135,   136,   139, | 
 |      140,   142,   144,   146,   147,   150,   152,   154,   156,   158, | 
 |      160,   162,   164,   166,   167,   169,   171,   173,   174,   176, | 
 |      178,   179,   181,   183,   185,   187,   188,   190,   192,   193, | 
 |      195,   197,   199,   201,   203,   206,   208,   210,   212,   214, | 
 |      216,   218,   220,   222,   224,   227,   228,   231,   233,   235, | 
 |      237,   239,   241,   243,   244,   247,   248,   251,   252,   255, | 
 |      256,   260,   263,   264,   266,   267,   271,   273,   276,   278, | 
 |      280,   282,   284,   286,   288,   290,   292,   294,   298,   300, | 
 |      303,   309,   315,   321,   327,   331,   334,   340,   345,   348, | 
 |      350,   352,   354,   358,   360,   364,   366,   367,   369,   373, | 
 |      378,   382,   386,   391,   396,   400,   407,   413,   416,   419, | 
 |      422,   425,   428,   431,   434,   437,   440,   443,   446,   449, | 
 |      456,   462,   471,   478,   485,   493,   501,   508,   517,   526, | 
 |      530,   532,   534,   536,   538,   539,   542,   549,   551,   552, | 
 |      554,   557,   558,   562,   563,   567,   571,   575,   579,   580, | 
 |      589,   590,   600,   601,   611,   617,   620,   624,   626,   630, | 
 |      634,   638,   642,   644,   645,   651,   655,   657,   661,   663, | 
 |      664,   675,   677,   679,   684,   686,   688,   691,   695,   696, | 
 |      698,   700,   702,   704,   706,   708,   710,   712,   714,   718, | 
 |      720,   726,   728,   730,   732,   734,   736,   738,   741,   743, | 
 |      747,   750,   753,   757,   760,   761,   765,   767,   772,   775, | 
 |      778,   782,   792,   802,   811,   826,   828,   830,   837,   843, | 
 |      846,   853,   861,   866,   871,   878,   885,   886,   887,   891, | 
 |      894,   896,   902,   908,   915,   922,   927,   934,   939,   944, | 
 |      951,   958,   961,   970,   972,   974,   975,   979,   986,   990, | 
 |      997,  1000,  1006,  1014,  1020 | 
 | }; | 
 |  | 
 | /* YYRHS -- A `-1'-separated list of the rules' RHS.  */ | 
 | static const yytype_int16 yyrhs[] = | 
 | { | 
 |      212,     0,    -1,    75,    -1,    76,    -1,    77,    -1,    78, | 
 |       -1,    79,    -1,    80,    -1,    81,    -1,    82,    -1,    83, | 
 |       -1,    87,    -1,    88,    -1,    89,    -1,    84,    -1,    85, | 
 |       -1,    86,    -1,   118,    -1,   119,    -1,   120,    -1,   121, | 
 |       -1,   122,    -1,   123,    -1,   124,    -1,   125,    -1,   126, | 
 |       -1,   127,    -1,   128,    -1,   129,    -1,    92,    -1,    93, | 
 |       -1,    94,    -1,    95,    -1,    96,    -1,    97,    -1,    98, | 
 |       -1,    99,    -1,   100,    -1,   101,    -1,   102,    -1,   103, | 
 |       -1,   104,    -1,   105,    -1,   106,    -1,   107,    -1,   108, | 
 |       -1,   109,    -1,   110,    -1,   111,    -1,    98,    -1,    99, | 
 |       -1,   100,    -1,   101,    -1,    26,    -1,    27,    -1,    11, | 
 |       -1,    12,    -1,    13,    -1,    16,    -1,    15,    -1,    14, | 
 |       -1,    19,    -1,    22,    -1,    24,    -1,   174,    -1,    -1, | 
 |       54,   152,     4,   153,    -1,    -1,   174,   154,    -1,    -1, | 
 |       20,    -1,    23,    -1,   180,    -1,    -1,   178,   154,    -1, | 
 |       42,    -1,    44,    -1,    43,    -1,    45,    -1,    47,    -1, | 
 |       46,    -1,    48,    -1,    50,    -1,    -1,   149,    -1,   150, | 
 |       -1,   151,    -1,    -1,    46,    -1,    48,    -1,    -1,    42, | 
 |       -1,    43,    -1,    44,    -1,    47,    -1,    -1,    44,    -1, | 
 |       42,    -1,    -1,    62,    -1,    63,    -1,    64,    -1,    65, | 
 |       -1,    66,    -1,    61,     4,    -1,   138,    -1,   119,    -1, | 
 |      137,    -1,   120,    -1,   140,    -1,   141,    -1,   143,    -1, | 
 |      144,    -1,   145,    -1,    53,     4,    -1,    -1,   189,   188, | 
 |       -1,   139,    -1,   142,    -1,   138,    -1,   137,    -1,   146, | 
 |       -1,   147,    -1,    -1,   191,   190,    -1,    -1,   148,    22, | 
 |       -1,    -1,    53,     4,    -1,    -1,   155,    53,     4,    -1, | 
 |       34,    22,    -1,    -1,   195,    -1,    -1,   155,   198,   197, | 
 |       -1,   195,    -1,    53,     4,    -1,    11,    -1,    12,    -1, | 
 |       13,    -1,    16,    -1,    15,    -1,    14,    -1,    17,    -1, | 
 |       49,    -1,   199,    -1,   200,   176,   156,    -1,   234,    -1, | 
 |      157,     4,    -1,   200,   152,   204,   153,   191,    -1,    10, | 
 |      152,   204,   153,   191,    -1,   158,     4,   159,   200,   160, | 
 |       -1,   161,     4,   159,   200,   162,    -1,   163,   205,   164, | 
 |       -1,   163,   164,    -1,   161,   163,   205,   164,   162,    -1, | 
 |      161,   163,   164,   162,    -1,   200,   189,    -1,   200,    -1, | 
 |       10,    -1,   201,    -1,   203,   155,   201,    -1,   203,    -1, | 
 |      203,   155,    39,    -1,    39,    -1,    -1,   200,    -1,   205, | 
 |      155,   200,    -1,   200,   158,   208,   160,    -1,   200,   158, | 
 |      160,    -1,   200,   165,    22,    -1,   200,   161,   208,   162, | 
 |       -1,   200,   163,   208,   164,    -1,   200,   163,   164,    -1, | 
 |      200,   161,   163,   208,   164,   162,    -1,   200,   161,   163, | 
 |      164,   162,    -1,   200,    40,    -1,   200,    41,    -1,   200, | 
 |      234,    -1,   200,   207,    -1,   200,    25,    -1,   172,     3, | 
 |       -1,   172,     5,    -1,   172,     4,    -1,   172,     6,    -1, | 
 |       11,    26,    -1,    11,    27,    -1,   173,     9,    -1,   169, | 
 |      152,   206,    38,   200,   153,    -1,   117,   152,   206,   246, | 
 |      153,    -1,   131,   152,   206,   155,   206,   155,   206,   153, | 
 |       -1,   167,   152,   206,   155,   206,   153,    -1,   168,   152, | 
 |      206,   155,   206,   153,    -1,    90,   170,   152,   206,   155, | 
 |      206,   153,    -1,    91,   171,   152,   206,   155,   206,   153, | 
 |       -1,   133,   152,   206,   155,   206,   153,    -1,   134,   152, | 
 |      206,   155,   206,   155,   206,   153,    -1,   135,   152,   206, | 
 |      155,   206,   155,   206,   153,    -1,   208,   155,   206,    -1, | 
 |      206,    -1,    32,    -1,    33,    -1,    37,    -1,    -1,   202, | 
 |      234,    -1,   123,   152,   211,    38,   200,   153,    -1,   213, | 
 |       -1,    -1,   214,    -1,   213,   214,    -1,    -1,    31,   215, | 
 |      230,    -1,    -1,    30,   216,   231,    -1,    59,    58,   220, | 
 |       -1,   177,    18,   200,    -1,   177,    18,    10,    -1,    -1, | 
 |      179,   183,   210,   209,   206,   176,   217,   197,    -1,    -1, | 
 |      179,   181,   183,   210,   209,   206,   176,   218,   197,    -1, | 
 |       -1,   179,   182,   183,   210,   209,   200,   176,   219,   197, | 
 |       -1,   179,   183,    35,   186,   211,    -1,    51,   221,    -1, | 
 |       55,   154,   222,    -1,    22,    -1,    52,   154,    22,    -1, | 
 |       67,   154,    22,    -1,   158,   223,   160,    -1,   223,   155, | 
 |       22,    -1,    22,    -1,    -1,   224,   155,   200,   189,   175, | 
 |       -1,   200,   189,   175,    -1,   224,    -1,   224,   155,    39, | 
 |       -1,    39,    -1,    -1,   187,   202,   178,   152,   225,   153, | 
 |      191,   196,   193,   192,    -1,    28,    -1,   163,    -1,   185, | 
 |      183,   226,   227,    -1,    29,    -1,   164,    -1,   238,   229, | 
 |       -1,   184,   183,   226,    -1,    -1,    60,    -1,     3,    -1, | 
 |        4,    -1,     9,    -1,    26,    -1,    27,    -1,    40,    -1, | 
 |       41,    -1,    25,    -1,   161,   208,   162,    -1,   207,    -1, | 
 |       58,   232,    22,   155,    22,    -1,     7,    -1,     8,    -1, | 
 |      174,    -1,   178,    -1,   234,    -1,   233,    -1,   200,   235, | 
 |       -1,   236,    -1,   237,   155,   236,    -1,   238,   239,    -1, | 
 |      228,   239,    -1,   240,   177,   241,    -1,   240,   243,    -1, | 
 |       -1,    68,    38,   235,    -1,    21,    -1,    21,    68,    38, | 
 |      235,    -1,    69,   237,    -1,    69,    10,    -1,    70,    17, | 
 |      235,    -1,    70,    11,   235,   155,    17,   235,   155,    17, | 
 |      235,    -1,    71,   172,   235,   155,    17,   235,   158,   242, | 
 |      160,    -1,    71,   172,   235,   155,    17,   235,   158,   160, | 
 |       -1,    72,   187,   202,   235,   152,   245,   153,   191,    38, | 
 |       17,   235,    73,    17,   235,    -1,    73,    -1,    74,    -1, | 
 |      242,   172,   233,   155,    17,   235,    -1,   172,   233,   155, | 
 |       17,   235,    -1,   177,   248,    -1,   200,   158,   235,   155, | 
 |      235,   160,    -1,   244,   155,   158,   235,   155,   235,   160, | 
 |       -1,   200,   189,   235,   189,    -1,    17,   189,   235,   189, | 
 |       -1,   245,   155,   200,   189,   235,   189,    -1,   245,   155, | 
 |       17,   189,   235,   189,    -1,    -1,    -1,   246,   155,   236, | 
 |       -1,    57,    56,    -1,    56,    -1,   167,   200,   235,   155, | 
 |      235,    -1,   168,   200,   235,   155,   235,    -1,    90,   170, | 
 |      200,   235,   155,   235,    -1,    91,   171,   200,   235,   155, | 
 |      235,    -1,   169,   236,    38,   200,    -1,   131,   236,   155, | 
 |      236,   155,   236,    -1,   132,   236,   155,   200,    -1,   133, | 
 |      236,   155,   236,    -1,   134,   236,   155,   236,   155,   236, | 
 |       -1,   135,   236,   155,   236,   155,   236,    -1,   130,   244, | 
 |       -1,   247,   187,   202,   235,   152,   245,   153,   191,    -1, | 
 |      250,    -1,    36,    -1,    -1,   112,   200,   194,    -1,   112, | 
 |      200,   155,    11,   235,   194,    -1,   113,   200,   194,    -1, | 
 |      113,   200,   155,    11,   235,   194,    -1,   114,   236,    -1, | 
 |      249,   115,   200,   235,   194,    -1,   249,   116,   236,   155, | 
 |      200,   235,   194,    -1,   136,   200,   235,   155,     4,    -1, | 
 |      117,   200,   235,   246,    -1 | 
 | }; | 
 |  | 
 | /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ | 
 | static const yytype_uint16 yyrline[] = | 
 | { | 
 |        0,  1112,  1112,  1112,  1112,  1112,  1112,  1112,  1112,  1112, | 
 |     1112,  1113,  1113,  1113,  1113,  1113,  1113,  1114,  1114,  1114, | 
 |     1114,  1114,  1114,  1115,  1115,  1115,  1115,  1115,  1115,  1118, | 
 |     1118,  1119,  1119,  1120,  1120,  1121,  1121,  1122,  1122,  1126, | 
 |     1126,  1127,  1127,  1128,  1128,  1129,  1129,  1130,  1130,  1131, | 
 |     1131,  1132,  1132,  1133,  1134,  1139,  1140,  1140,  1140,  1140, | 
 |     1140,  1142,  1142,  1142,  1143,  1143,  1145,  1146,  1150,  1154, | 
 |     1159,  1159,  1161,  1162,  1167,  1173,  1174,  1175,  1176,  1177, | 
 |     1181,  1182,  1183,  1187,  1188,  1189,  1190,  1194,  1195,  1196, | 
 |     1200,  1201,  1202,  1203,  1204,  1208,  1209,  1210,  1213,  1214, | 
 |     1215,  1216,  1217,  1218,  1219,  1226,  1227,  1228,  1229,  1230, | 
 |     1231,  1232,  1233,  1234,  1235,  1239,  1240,  1245,  1246,  1247, | 
 |     1248,  1249,  1250,  1253,  1254,  1259,  1260,  1267,  1268,  1274, | 
 |     1275,  1284,  1292,  1293,  1298,  1299,  1300,  1305,  1318,  1318, | 
 |     1318,  1318,  1318,  1318,  1318,  1321,  1325,  1329,  1336,  1341, | 
 |     1349,  1378,  1403,  1408,  1418,  1428,  1432,  1442,  1449,  1458, | 
 |     1465,  1470,  1475,  1482,  1483,  1490,  1497,  1505,  1511,  1523, | 
 |     1551,  1567,  1594,  1622,  1648,  1668,  1694,  1714,  1726,  1733, | 
 |     1799,  1809,  1819,  1825,  1835,  1841,  1851,  1856,  1861,  1874, | 
 |     1886,  1908,  1916,  1922,  1933,  1938,  1943,  1949,  1955,  1964, | 
 |     1968,  1976,  1976,  1979,  1979,  1982,  1994,  2015,  2020,  2028, | 
 |     2029,  2033,  2033,  2037,  2037,  2040,  2043,  2067,  2079,  2078, | 
 |     2090,  2089,  2099,  2098,  2109,  2149,  2152,  2158,  2168,  2172, | 
 |     2177,  2179,  2184,  2189,  2198,  2208,  2219,  2223,  2232,  2241, | 
 |     2246,  2375,  2375,  2377,  2386,  2386,  2388,  2393,  2405,  2409, | 
 |     2414,  2418,  2422,  2426,  2430,  2434,  2438,  2442,  2446,  2471, | 
 |     2475,  2485,  2489,  2493,  2498,  2505,  2505,  2511,  2520,  2525, | 
 |     2530,  2534,  2543,  2552,  2561,  2565,  2569,  2574,  2581,  2588, | 
 |     2592,  2597,  2607,  2626,  2635,  2720,  2724,  2731,  2742,  2755, | 
 |     2765,  2776,  2786,  2797,  2805,  2815,  2822,  2825,  2826,  2833, | 
 |     2837,  2842,  2858,  2875,  2889,  2903,  2915,  2923,  2930,  2936, | 
 |     2942,  2948,  2963,  3053,  3058,  3062,  3069,  3076,  3084,  3091, | 
 |     3099,  3107,  3121,  3138,  3146 | 
 | }; | 
 | #endif | 
 |  | 
 | #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE | 
 | /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. | 
 |    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */ | 
 | static const char *const yytname[] = | 
 | { | 
 |   "$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL", "ESAPINTVAL", | 
 |   "EUAPINTVAL", "LOCALVAL_ID", "GLOBALVAL_ID", "FPVAL", "VOID", "INTTYPE", | 
 |   "FLOAT", "DOUBLE", "X86_FP80", "FP128", "PPC_FP128", "LABEL", "TYPE", | 
 |   "LOCALVAR", "GLOBALVAR", "LABELSTR", "STRINGCONSTANT", | 
 |   "ATSTRINGCONSTANT", "PCTSTRINGCONSTANT", "ZEROINITIALIZER", "TRUETOK", | 
 |   "FALSETOK", "BEGINTOK", "ENDTOK", "DECLARE", "DEFINE", "GLOBAL", | 
 |   "CONSTANT", "SECTION", "ALIAS", "VOLATILE", "THREAD_LOCAL", "TO", | 
 |   "DOTDOTDOT", "NULL_TOK", "UNDEF", "INTERNAL", "LINKONCE", "WEAK", | 
 |   "APPENDING", "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "OPAQUE", | 
 |   "EXTERNAL", "TARGET", "TRIPLE", "ALIGN", "ADDRSPACE", "DEPLIBS", "CALL", | 
 |   "TAIL", "ASM_TOK", "MODULE", "SIDEEFFECT", "CC_TOK", "CCC_TOK", | 
 |   "FASTCC_TOK", "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", | 
 |   "DATALAYOUT", "UNWINDS", "RET", "BR", "SWITCH", "INVOKE", "UNWIND", | 
 |   "UNREACHABLE", "ADD", "SUB", "MUL", "UDIV", "SDIV", "FDIV", "UREM", | 
 |   "SREM", "FREM", "AND", "OR", "XOR", "SHL", "LSHR", "ASHR", "ICMP", | 
 |   "FCMP", "EQ", "NE", "SLT", "SGT", "SLE", "SGE", "ULT", "UGT", "ULE", | 
 |   "UGE", "OEQ", "ONE", "OLT", "OGT", "OLE", "OGE", "ORD", "UNO", "UEQ", | 
 |   "UNE", "MALLOC", "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR", | 
 |   "TRUNC", "ZEXT", "SEXT", "FPTRUNC", "FPEXT", "BITCAST", "UITOFP", | 
 |   "SITOFP", "FPTOUI", "FPTOSI", "INTTOPTR", "PTRTOINT", "PHI_TOK", | 
 |   "SELECT", "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR", | 
 |   "GETRESULT", "SIGNEXT", "ZEROEXT", "NORETURN", "INREG", "SRET", | 
 |   "NOUNWIND", "NOALIAS", "BYVAL", "NEST", "READNONE", "READONLY", "GC", | 
 |   "DEFAULT", "HIDDEN", "PROTECTED", "'('", "')'", "'='", "','", "'*'", | 
 |   "'\\\\'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'", "'c'", | 
 |   "$accept", "ArithmeticOps", "LogicalOps", "CastOps", "IPredicates", | 
 |   "FPredicates", "IntType", "FPType", "LocalName", "OptLocalName", | 
 |   "OptAddrSpace", "OptLocalAssign", "GlobalName", "OptGlobalAssign", | 
 |   "GlobalAssign", "GVInternalLinkage", "GVExternalLinkage", | 
 |   "GVVisibilityStyle", "FunctionDeclareLinkage", "FunctionDefineLinkage", | 
 |   "AliasLinkage", "OptCallingConv", "ParamAttr", "OptParamAttrs", | 
 |   "FuncAttr", "OptFuncAttrs", "OptGC", "OptAlign", "OptCAlign", | 
 |   "SectionString", "OptSection", "GlobalVarAttributes", | 
 |   "GlobalVarAttribute", "PrimType", "Types", "ArgType", "ResultTypes", | 
 |   "ArgTypeList", "ArgTypeListI", "TypeListI", "ConstVal", "ConstExpr", | 
 |   "ConstVector", "GlobalType", "ThreadLocal", "AliaseeRef", "Module", | 
 |   "DefinitionList", "Definition", "@1", "@2", "@3", "@4", "@5", "AsmBlock", | 
 |   "TargetDefinition", "LibrariesDefinition", "LibList", "ArgListH", | 
 |   "ArgList", "FunctionHeaderH", "BEGIN", "FunctionHeader", "END", | 
 |   "Function", "FunctionProto", "OptSideEffect", "ConstValueRef", | 
 |   "SymbolicValueRef", "ValueRef", "ResolvedVal", "ReturnedVal", | 
 |   "BasicBlockList", "BasicBlock", "InstructionList", "BBTerminatorInst", | 
 |   "JumpTable", "Inst", "PHIList", "ParamList", "IndexList", "OptTailCall", | 
 |   "InstVal", "OptVolatile", "MemoryInst", 0 | 
 | }; | 
 | #endif | 
 |  | 
 | # ifdef YYPRINT | 
 | /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to | 
 |    token YYLEX-NUM.  */ | 
 | static const yytype_uint16 yytoknum[] = | 
 | { | 
 |        0,   256,   257,   258,   259,   260,   261,   262,   263,   264, | 
 |      265,   266,   267,   268,   269,   270,   271,   272,   273,   274, | 
 |      275,   276,   277,   278,   279,   280,   281,   282,   283,   284, | 
 |      285,   286,   287,   288,   289,   290,   291,   292,   293,   294, | 
 |      295,   296,   297,   298,   299,   300,   301,   302,   303,   304, | 
 |      305,   306,   307,   308,   309,   310,   311,   312,   313,   314, | 
 |      315,   316,   317,   318,   319,   320,   321,   322,   323,   324, | 
 |      325,   326,   327,   328,   329,   330,   331,   332,   333,   334, | 
 |      335,   336,   337,   338,   339,   340,   341,   342,   343,   344, | 
 |      345,   346,   347,   348,   349,   350,   351,   352,   353,   354, | 
 |      355,   356,   357,   358,   359,   360,   361,   362,   363,   364, | 
 |      365,   366,   367,   368,   369,   370,   371,   372,   373,   374, | 
 |      375,   376,   377,   378,   379,   380,   381,   382,   383,   384, | 
 |      385,   386,   387,   388,   389,   390,   391,   392,   393,   394, | 
 |      395,   396,   397,   398,   399,   400,   401,   402,   403,   404, | 
 |      405,   406,    40,    41,    61,    44,    42,    92,    91,   120, | 
 |       93,    60,    62,   123,   125,    99 | 
 | }; | 
 | # endif | 
 |  | 
 | /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */ | 
 | static const yytype_uint8 yyr1[] = | 
 | { | 
 |        0,   166,   167,   167,   167,   167,   167,   167,   167,   167, | 
 |      167,   168,   168,   168,   168,   168,   168,   169,   169,   169, | 
 |      169,   169,   169,   169,   169,   169,   169,   169,   169,   170, | 
 |      170,   170,   170,   170,   170,   170,   170,   170,   170,   171, | 
 |      171,   171,   171,   171,   171,   171,   171,   171,   171,   171, | 
 |      171,   171,   171,   171,   171,   172,   173,   173,   173,   173, | 
 |      173,   174,   174,   174,   175,   175,   176,   176,   177,   177, | 
 |      178,   178,   179,   179,   180,   181,   181,   181,   181,   181, | 
 |      182,   182,   182,   183,   183,   183,   183,   184,   184,   184, | 
 |      185,   185,   185,   185,   185,   186,   186,   186,   187,   187, | 
 |      187,   187,   187,   187,   187,   188,   188,   188,   188,   188, | 
 |      188,   188,   188,   188,   188,   189,   189,   190,   190,   190, | 
 |      190,   190,   190,   191,   191,   192,   192,   193,   193,   194, | 
 |      194,   195,   196,   196,   197,   197,   198,   198,   199,   199, | 
 |      199,   199,   199,   199,   199,   200,   200,   200,   200,   200, | 
 |      200,   200,   200,   200,   200,   200,   200,   200,   201,   202, | 
 |      202,   203,   203,   204,   204,   204,   204,   205,   205,   206, | 
 |      206,   206,   206,   206,   206,   206,   206,   206,   206,   206, | 
 |      206,   206,   206,   206,   206,   206,   206,   206,   206,   207, | 
 |      207,   207,   207,   207,   207,   207,   207,   207,   207,   208, | 
 |      208,   209,   209,   210,   210,   211,   211,   212,   212,   213, | 
 |      213,   215,   214,   216,   214,   214,   214,   214,   217,   214, | 
 |      218,   214,   219,   214,   214,   214,   214,   220,   221,   221, | 
 |      222,   223,   223,   223,   224,   224,   225,   225,   225,   225, | 
 |      226,   227,   227,   228,   229,   229,   230,   231,   232,   232, | 
 |      233,   233,   233,   233,   233,   233,   233,   233,   233,   233, | 
 |      233,   234,   234,   234,   234,   235,   235,   236,   237,   237, | 
 |      238,   238,   239,   240,   240,   240,   240,   240,   241,   241, | 
 |      241,   241,   241,   241,   241,   241,   241,   242,   242,   243, | 
 |      244,   244,   245,   245,   245,   245,   245,   246,   246,   247, | 
 |      247,   248,   248,   248,   248,   248,   248,   248,   248,   248, | 
 |      248,   248,   248,   248,   249,   249,   250,   250,   250,   250, | 
 |      250,   250,   250,   250,   250 | 
 | }; | 
 |  | 
 | /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */ | 
 | static const yytype_uint8 yyr2[] = | 
 | { | 
 |        0,     2,     1,     1,     1,     1,     1,     1,     1,     1, | 
 |        1,     1,     1,     1,     1,     1,     1,     1,     1,     1, | 
 |        1,     1,     1,     1,     1,     1,     1,     1,     1,     1, | 
 |        1,     1,     1,     1,     1,     1,     1,     1,     1,     1, | 
 |        1,     1,     1,     1,     1,     1,     1,     1,     1,     1, | 
 |        1,     1,     1,     1,     1,     1,     1,     1,     1,     1, | 
 |        1,     1,     1,     1,     1,     0,     4,     0,     2,     0, | 
 |        1,     1,     1,     0,     2,     1,     1,     1,     1,     1, | 
 |        1,     1,     1,     0,     1,     1,     1,     0,     1,     1, | 
 |        0,     1,     1,     1,     1,     0,     1,     1,     0,     1, | 
 |        1,     1,     1,     1,     2,     1,     1,     1,     1,     1, | 
 |        1,     1,     1,     1,     2,     0,     2,     1,     1,     1, | 
 |        1,     1,     1,     0,     2,     0,     2,     0,     2,     0, | 
 |        3,     2,     0,     1,     0,     3,     1,     2,     1,     1, | 
 |        1,     1,     1,     1,     1,     1,     1,     3,     1,     2, | 
 |        5,     5,     5,     5,     3,     2,     5,     4,     2,     1, | 
 |        1,     1,     3,     1,     3,     1,     0,     1,     3,     4, | 
 |        3,     3,     4,     4,     3,     6,     5,     2,     2,     2, | 
 |        2,     2,     2,     2,     2,     2,     2,     2,     2,     6, | 
 |        5,     8,     6,     6,     7,     7,     6,     8,     8,     3, | 
 |        1,     1,     1,     1,     0,     2,     6,     1,     0,     1, | 
 |        2,     0,     3,     0,     3,     3,     3,     3,     0,     8, | 
 |        0,     9,     0,     9,     5,     2,     3,     1,     3,     3, | 
 |        3,     3,     1,     0,     5,     3,     1,     3,     1,     0, | 
 |       10,     1,     1,     4,     1,     1,     2,     3,     0,     1, | 
 |        1,     1,     1,     1,     1,     1,     1,     1,     3,     1, | 
 |        5,     1,     1,     1,     1,     1,     1,     2,     1,     3, | 
 |        2,     2,     3,     2,     0,     3,     1,     4,     2,     2, | 
 |        3,     9,     9,     8,    14,     1,     1,     6,     5,     2, | 
 |        6,     7,     4,     4,     6,     6,     0,     0,     3,     2, | 
 |        1,     5,     5,     6,     6,     4,     6,     4,     4,     6, | 
 |        6,     2,     8,     1,     1,     0,     3,     6,     3,     6, | 
 |        2,     5,     7,     5,     4 | 
 | }; | 
 |  | 
 | /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state | 
 |    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero | 
 |    means the default is an error.  */ | 
 | static const yytype_uint16 yydefact[] = | 
 | { | 
 |       73,    61,    70,    62,    71,    63,   213,   211,     0,     0, | 
 |        0,     0,     0,     0,    83,    72,     0,    73,   209,    87, | 
 |       90,     0,     0,   225,     0,     0,    68,     0,    74,    75, | 
 |       77,    76,    78,    80,    79,    81,    82,    84,    85,    86, | 
 |       83,    83,   204,     1,   210,    88,    89,    83,   214,    91, | 
 |       92,    93,    94,    83,   274,   212,   274,     0,     0,   233, | 
 |      226,   227,   215,   261,   262,   217,   138,   139,   140,   143, | 
 |      142,   141,   144,   145,     0,     0,     0,     0,   263,   264, | 
 |      146,   216,   148,   204,   204,    95,   203,     0,    98,    98, | 
 |      276,     0,   271,    69,   244,   245,   246,   270,   228,   229, | 
 |      232,     0,   166,   149,     0,     0,     0,     0,   155,   167, | 
 |        0,     0,   166,     0,     0,     0,    97,    96,     0,   201, | 
 |      202,     0,     0,    99,   100,   101,   102,   103,     0,   247, | 
 |        0,     0,     0,   315,   273,     0,   230,   165,   115,   161, | 
 |      163,     0,     0,     0,     0,     0,     0,   154,     0,     0, | 
 |      147,     0,     0,   160,     0,   159,     0,   224,   138,   139, | 
 |      140,   143,   142,   141,     0,     0,    67,    67,   104,     0, | 
 |      241,   242,   243,     0,   250,   251,   252,   257,   253,   254, | 
 |      255,   256,   248,     2,     3,     4,     5,     6,     7,     8, | 
 |        9,    10,    14,    15,    16,    11,    12,    13,     0,     0, | 
 |        0,    17,    18,    19,    20,    21,    22,    23,    24,    25, | 
 |       26,    27,    28,     0,     0,     0,     0,     0,     0,     0, | 
 |        0,   259,   266,   265,   275,   314,   300,     0,     0,     0, | 
 |        0,    98,   285,   286,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, | 
 |      272,    98,   289,     0,   313,   231,   158,     0,   123,    67, | 
 |       67,   157,     0,   168,     0,   123,    67,    67,     0,   205, | 
 |      186,   187,   182,   184,   183,   185,   188,   181,   177,   178, | 
 |        0,     0,     0,     0,   180,   179,   218,     0,   277,   249, | 
 |        0,    29,    30,    31,    32,    33,    34,    35,    36,    37, | 
 |       38,     0,    53,    54,    49,    50,    51,    52,    39,    40, | 
 |       41,    42,    43,    44,    45,    46,    47,    48,     0,     0, | 
 |        0,     0,     0,     0,   200,     0,     0,     0,     0,   299, | 
 |      279,    67,   268,   278,     0,     0,    55,     0,     0,     0, | 
 |        0,   129,   129,   320,    67,    67,   311,     0,     0,     0, | 
 |        0,     0,    67,    67,    67,     0,     0,     0,     0,     0, | 
 |      106,   108,   107,   105,   109,   110,   111,   112,   113,   116, | 
 |      164,   162,   151,   152,   153,   156,    66,   150,   220,   222, | 
 |        0,   170,     0,     0,     0,   174,     0,   171,   134,   239, | 
 |        0,     0,     0,   297,     0,     0,     0,     0,     0,   258, | 
 |        0,     0,     0,   267,     0,     0,   280,     0,     0,    67, | 
 |       67,     0,   316,     0,   318,   297,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,    67,     0, | 
 |      114,   120,   119,   117,   118,   121,   122,   124,   134,   134, | 
 |        0,   169,   155,   167,     0,   172,   173,     0,   219,   238, | 
 |      115,   236,     0,     0,     0,     0,     0,     0,     0,     0, | 
 |        0,   199,     0,     0,     0,   269,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,   324,     0,     0,     0,   307,   308, | 
 |        0,     0,     0,     0,     0,   305,     0,   129,     0,   221, | 
 |      223,    67,   176,     0,     0,     0,   136,   134,    65,     0, | 
 |      123,   260,     0,     0,   190,     0,     0,     0,     0,     0, | 
 |        0,     0,    67,     0,     0,   296,     0,     0,   129,   130, | 
 |      129,     0,     0,     0,     0,     0,   323,   301,   302,   296, | 
 |        0,   321,    67,   206,   175,   131,   137,   135,    64,   235, | 
 |      237,   115,   132,     0,     0,   298,     0,   196,     0,     0, | 
 |      192,   193,   189,     0,     0,   115,   115,     0,   303,   304, | 
 |      317,   319,     0,     0,   306,   309,   310,     0,   129,    65, | 
 |      133,   127,   194,   195,     0,     0,     0,     0,     0,     0, | 
 |        0,   123,     0,   290,     0,   123,   322,   234,     0,   125, | 
 |      191,   197,   198,     0,   283,     0,     0,   106,   108,   115, | 
 |      115,     0,   115,   115,   291,   312,   128,     0,   240,   281, | 
 |        0,   282,     0,   293,   292,     0,     0,     0,   126,     0, | 
 |        0,     0,   115,   115,     0,     0,     0,   295,   294,   288, | 
 |        0,     0,   287,     0,   284 | 
 | }; | 
 |  | 
 | /* YYDEFGOTO[NTERM-NUM].  */ | 
 | static const yytype_int16 yydefgoto[] = | 
 | { | 
 |       -1,   218,   219,   220,   301,   318,   164,   165,    78,   539, | 
 |      113,    12,    79,    14,    15,    40,    41,    42,    47,    53, | 
 |      118,   128,   369,   256,   437,   372,   608,   589,   412,   496, | 
 |      571,   448,   497,    80,   166,   139,   156,   140,   141,   110, | 
 |      324,   221,   325,   121,    87,   157,    16,    17,    18,    20, | 
 |       19,   388,   438,   439,    62,    23,    60,   101,   451,   452, | 
 |      129,   172,    54,    96,    55,    48,   290,   222,    82,   224, | 
 |      332,   333,    56,    92,    93,   250,   596,   134,   346,   557, | 
 |      456,   251,   252,   253,   254 | 
 | }; | 
 |  | 
 | /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing | 
 |    STATE-NUM.  */ | 
 | #define YYPACT_NINF -536 | 
 | static const yytype_int16 yypact[] = | 
 | { | 
 |      369,  -536,  -536,  -536,  -536,  -536,  -536,  -536,    39,  -128, | 
 |      -20,   -82,    67,    -9,   258,  -536,   177,   506,  -536,   239, | 
 |      226,    57,    78,  -536,    22,   214,  -536,  1572,  -536,  -536, | 
 |     -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536, | 
 |      -35,   -35,   244,  -536,  -536,  -536,  -536,   -35,  -536,  -536, | 
 |     -536,  -536,  -536,   -35,    15,  -536,    -2,   221,   232,   235, | 
 |     -536,  -536,  -536,  -536,  -536,    99,  -536,  -536,  -536,  -536, | 
 |     -536,  -536,  -536,  -536,   262,   268,     8,    35,  -536,  -536, | 
 |     -536,   -26,  -536,   225,   225,   265,  -536,   128,   233,   233, | 
 |      208,   254,  -536,   256,  -536,  -536,  -536,  -536,  -536,  -536, | 
 |     -536,   -22,  1126,  -536,   161,   165,   815,    99,  -536,   -26, | 
 |      -91,   174,  1126,   171,   128,   128,  -536,  -536,  1372,  -536, | 
 |     -536,  1612,   324,  -536,  -536,  -536,  -536,  -536,  1652,  -536, | 
 |       -6,   293,   906,  1867,  -536,   313,  -536,  -536,   -26,  -536, | 
 |      181,   184,  1692,  1692,   179,   -84,  1692,  -536,   338,   190, | 
 |     -536,  1612,  1692,    99,   192,   -26,   410,  -536,   223,   336, | 
 |      343,   347,   351,   352,   204,   353,  1182,   309,  -536,   126, | 
 |     -536,  -536,  -536,   906,  -536,  -536,  -536,  -536,  -536,  -536, | 
 |     -536,  -536,   304,  -536,  -536,  -536,  -536,  -536,  -536,  -536, | 
 |     -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,   511,   491, | 
 |      216,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536, | 
 |     -536,  -536,  -536,   218,   219,   220,   222,  1612,   231,   234, | 
 |      238,  -536,  -536,  -536,  -536,  -536,  -536,   310,  1732,    50, | 
 |      364,   233,  -536,  -536,   511,   491,  1692,  1692,  1692,  1692, | 
 |     1692,  1692,  1692,  1692,  1692,  1692,  1692,  1692,  1692,  1692, | 
 |     -536,   233,  -536,    79,  -536,  -536,   210,  1452,  -536,   -25, | 
 |      -31,  -536,   242,   -26,   252,  -536,   309,     2,  1372,  -536, | 
 |     -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536, | 
 |     1412,  1772,   855,   362,  -536,  -536,  -536,   259,  -536,  -536, | 
 |      363,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536, | 
 |     -536,   260,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536, | 
 |     -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,   263,  1612, | 
 |     1612,  1612,  1612,  1612,  -536,   -42,  1612,  1612,  1612,  -536, | 
 |       99,   766,  -536,   255,   906,   906,  -536,   906,  1652,  1692, | 
 |     1692,    20,    45,  -536,   766,   -29,   264,   270,   271,   272, | 
 |      276,   281,   766,   766,   766,   385,  1652,  1692,  1692,   433, | 
 |     -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536, | 
 |     -536,  -536,   -37,  -536,  -536,  -536,  -536,   -37,  -536,   171, | 
 |      404,  -536,    -7,  1080,   -30,  -536,   -66,  -536,   290,  1492, | 
 |      294,  1612,  1612,  -536,   295,   297,   298,   299,  1612,  -536, | 
 |      300,   305,   421,  -536,  1692,   306,  -536,   308,   906,   766, | 
 |      766,    10,  -536,    26,  -536,  -536,   906,   311,  1692,  1692, | 
 |     1692,  1692,  1692,   315,   316,   317,  1692,   906,   766,   318, | 
 |     -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,   290,   290, | 
 |     1692,  -536,   312,  1035,   -47,  -536,  -536,    42,  -536,  -536, | 
 |      -26,   321,   325,   444,   322,   327,   133,  1612,  1612,  1612, | 
 |     1612,  -536,  1612,  1612,  1692,  -536,   462,   463,   331,   329, | 
 |      330,   906,   482,   906,   332,   333,   906,   334,   -26,  -536, | 
 |      335,   337,   490,   906,   906,   -26,   344,   340,  1692,  -536, | 
 |     -536,    38,  -536,   341,   475,   498,  -536,   290,   115,  1532, | 
 |     -536,  -536,  1612,  1612,  -536,  1692,   349,   354,   356,   360, | 
 |      355,   366,    53,   906,   906,  1812,   906,   906,   340,  -536, | 
 |      340,   906,   361,  1692,  1692,  1692,  -536,  -536,  -536,  1812, | 
 |      468,  -536,   766,  -536,  -536,  -536,  -536,  -536,  -536,  -536, | 
 |     -536,   -26,     5,   374,   380,  -536,  1612,  -536,  1612,  1612, | 
 |     -536,  -536,  -536,   367,   376,    33,   -26,   166,  -536,  -536, | 
 |     -536,  -536,   375,   906,  -536,  -536,  -536,   170,   340,   115, | 
 |     -536,   485,  -536,  -536,   386,   387,   388,   525,     3,   623, | 
 |      623,  -536,  1852,  -536,   383,  -536,  -536,  -536,   540,   397, | 
 |     -536,  -536,  -536,   906,  -536,  1323,     7,   396,   398,  -536, | 
 |     -536,    27,    33,   -26,  -536,   -37,  -536,   527,  -536,  -536, | 
 |      400,  -536,  1323,   210,   210,   535,   623,   623,  -536,   536, | 
 |      401,   906,  -536,  -536,   906,   542,   489,   210,   210,  -536, | 
 |      906,   547,  -536,   906,  -536 | 
 | }; | 
 |  | 
 | /* YYPGOTO[NTERM-NUM].  */ | 
 | static const yytype_int16 yypgoto[] = | 
 | { | 
 |     -536,   434,   435,   437,   339,   346,  -229,  -536,     0,    -3, | 
 |     -126,   478,    13,  -536,  -536,  -536,  -536,    28,  -536,  -536, | 
 |     -536,  -207,  -536,  -444,  -536,  -263,  -536,  -536,  -337,    30, | 
 |     -536,  -407,  -536,  -536,   -24,   319,  -108,  -536,   466,   473, | 
 |      -81,  -150,  -247,    88,   229,   314,  -536,  -536,   557,  -536, | 
 |     -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536,  -536, | 
 |      494,  -536,  -536,  -536,  -536,  -536,  -536,  -535,   -70,   104, | 
 |     -234,  -536,  -536,   528,  -536,  -536,  -536,  -536,  -536,    56, | 
 |      198,  -536,  -536,  -536,  -536 | 
 | }; | 
 |  | 
 | /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If | 
 |    positive, shift that token.  If negative, reduce the rule which | 
 |    number is the opposite.  If zero, do what YYDEFACT says. | 
 |    If YYTABLE_NINF, syntax error.  */ | 
 | #define YYTABLE_NINF -209 | 
 | static const yytype_int16 yytable[] = | 
 | { | 
 |       11,   337,   377,    81,   343,   414,   498,   347,   348,   349, | 
 |      350,   351,   105,    13,   336,   355,   284,    11,   336,    90, | 
 |      169,   471,   170,   111,   338,   111,    24,    94,   111,   111, | 
 |       13,   489,   490,   382,   384,   386,    90,   473,    25,   494, | 
 |      167,   286,    63,    64,   356,   107,    66,    67,    68,    69, | 
 |       70,    71,    72,   109,     1,     2,   111,     3,     4,     5, | 
 |      610,   334,   223,   472,   146,   615,    91,   335,    83,    84, | 
 |      266,   146,    26,   147,   111,    88,   494,   620,   138,   472, | 
 |      262,    89,   109,    91,    73,    27,   269,  -144,   138,   398, | 
 |      537,    21,   111,    11,   155,   495,   285,   569,   446,   111, | 
 |      431,   432,   433,   223,   155,   434,    22,   111,   398,   435, | 
 |      436,   579,   580,   398,    37,    38,    39,   493,   259,   260, | 
 |      399,   112,   263,   112,   429,   398,   112,   112,   267,   416, | 
 |      -67,   374,   445,   135,     1,   373,   444,     3,   136,     5, | 
 |      378,   379,   431,   432,   433,    28,     2,   434,   398,     4, | 
 |      531,   435,   436,   441,   112,   613,   614,   171,   616,   617, | 
 |      119,   120,    95,   594,   431,   432,   433,   611,   359,   434, | 
 |      465,   106,   112,   435,   436,   411,   -67,    43,   627,   628, | 
 |       59,   560,   287,   561,   477,  -144,   479,   480,   481,  -144, | 
 |      112,   533,    74,    75,   357,   358,    76,   112,    77,   108, | 
 |      413,   -67,   151,   152,   331,   112,   552,   272,   273,   274, | 
 |      275,    57,   341,   342,   331,   344,   345,   331,   331,   331, | 
 |      331,   331,   352,   353,   354,   331,   -55,   -55,   -55,   -55, | 
 |      408,   586,    58,   138,   360,   361,    61,   542,   393,   394, | 
 |      395,   396,   397,    98,   155,   400,   401,   402,   427,   270, | 
 |      271,   102,   362,   363,    99,   364,   365,   100,   366,   367, | 
 |      368,   223,    86,   359,   223,   223,   103,   223,    49,    50, | 
 |       51,   545,   104,    52,   223,     1,   131,   288,     3,    85, | 
 |        5,    86,   223,   223,   223,    45,   504,    46,   505,   564, | 
 |      565,   566,   132,   284,   122,   123,   124,   125,   126,   127, | 
 |       29,    30,    31,    32,    33,    34,    35,   116,    36,   117, | 
 |      454,   455,   114,   115,   155,   409,   410,   461,   601,   581, | 
 |      142,   582,   605,   585,   143,   582,   148,   150,   168,   360, | 
 |      361,   173,   155,   428,   331,   255,   257,   258,   223,   223, | 
 |      223,   261,   264,   265,   268,   -56,   223,   362,   363,   595, | 
 |      364,   365,   -57,   366,   367,   368,   -60,   223,   223,   443, | 
 |      -59,   -58,   276,   111,   289,   450,   329,   612,   319,  -208, | 
 |      320,   321,   322,   285,   323,   336,   506,   507,   508,   509, | 
 |      331,   510,   511,   326,   387,   390,   327,   -69,     1,     2, | 
 |      328,     3,     4,     5,   331,   478,   331,   331,   331,     6, | 
 |        7,   223,   485,   223,   375,   376,   223,    37,    38,    39, | 
 |      404,   389,   391,   223,   223,   392,   491,    63,    64,   417, | 
 |        8,   543,   544,   426,     9,   418,   419,   420,    10,     1, | 
 |        2,   421,     3,     4,     5,   403,   422,   430,   405,   406, | 
 |      512,   407,   440,   223,   223,   447,   223,   223,   415,   453, | 
 |      457,   223,   458,   459,   460,   462,   423,   424,   425,   464, | 
 |      463,   466,   223,   467,   532,   574,   501,   575,   576,   476, | 
 |      482,   483,   484,   488,   492,   541,   499,   502,   500,   513, | 
 |      514,   331,   503,   515,   516,   517,   519,   505,   521,   523, | 
 |      524,   556,   525,   223,   526,   530,   529,   535,   538,   331, | 
 |      331,   331,   536,   534,   546,   556,  -207,   547,   550,   223, | 
 |      223,   548,   468,   469,   470,   549,   563,   302,   303,   551, | 
 |      475,   472,   577,   223,   -69,     1,     2,   572,     3,     4, | 
 |        5,   486,   487,   573,   578,   583,     6,     7,   588,   590, | 
 |      591,   592,   593,   604,   606,   607,   223,   223,   -18,   618, | 
 |      -19,   223,   621,   624,   223,   619,   625,     8,   603,   630, | 
 |      223,     9,   631,   223,   633,    10,   587,   247,   248,   538, | 
 |      249,   133,   570,   339,    44,   518,   371,   520,   149,   145, | 
 |      522,   340,   380,   130,    97,   567,     0,   527,   528,   304, | 
 |      305,   306,   307,   308,   309,   310,   311,   312,   313,   314, | 
 |      315,   316,   317,   291,   292,   293,   294,   295,   296,   297, | 
 |      298,   299,   300,   474,     0,     0,     0,   553,   554,     0, | 
 |      558,   559,     0,     0,     0,   562,   174,   175,     0,     0, | 
 |       63,    64,   176,     0,     0,     0,   568,     0,     0,     0, | 
 |        0,     0,     1,     2,     0,     3,     4,     5,   177,   178, | 
 |      179,     0,     0,     0,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,   180,   181,     0,     0,   584,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,   359,     0,     0,     0, | 
 |        0,   182,     0,   599,   600,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,   609,   183,   184, | 
 |      185,   186,   187,   188,   189,   190,   191,   192,   193,   194, | 
 |      195,   196,   197,   198,   199,     0,     0,     0,     0,     0, | 
 |      622,   623,     0,     0,     0,   626,     0,     0,   629,     0, | 
 |        0,     0,     0,     0,   632,     0,     0,   634,     0,     0, | 
 |      200,   201,   597,   598,   204,   205,   206,   207,   208,   209, | 
 |      210,   211,   212,     0,   213,     0,   214,   215,   216,     0, | 
 |      362,   363,     0,   364,   365,     0,   366,   367,   368,   174, | 
 |      175,     0,     0,    63,    64,   176,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,   217,     1,     2,     0,     3,     4, | 
 |        5,   177,   178,   179,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,   180,   181,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, | 
 |      111,     0,    63,    64,   182,   107,    66,    67,    68,    69, | 
 |       70,    71,    72,     0,     1,     2,     0,     3,     4,     5, | 
 |        0,   183,   184,   185,   186,   187,   188,   189,   190,   191, | 
 |      192,   193,   194,   195,   196,   197,   198,   199,     0,     0, | 
 |        0,     0,    63,    64,    73,   107,   158,   159,   160,   161, | 
 |      162,   163,    72,     0,     1,     2,     0,     3,     4,     5, | 
 |        0,     0,     0,   200,   201,   202,   203,   204,   205,   206, | 
 |      207,   208,   209,   210,   211,   212,     0,   213,     0,   214, | 
 |      215,   216,     0,     0,    73,     0,     0,     0,     0,   174, | 
 |      175,     0,     0,    63,    64,   176,     0,     0,   112,     0, | 
 |        0,     0,     0,     0,     0,     1,     2,   217,     3,     4, | 
 |        5,   177,   178,   179,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,   180,   181,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,   182,     0,     0,     0,     0,     0, | 
 |        0,     0,    74,    75,     0,     0,    76,     0,    77,   144, | 
 |        0,   183,   184,   185,   186,   187,   188,   189,   190,   191, | 
 |      192,   193,   194,   195,   196,   197,   198,   199,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,    74,    75,     0,     0,    76,     0,    77,   385, | 
 |        0,     0,     0,   200,   201,   202,   203,   204,   205,   206, | 
 |      207,   208,   209,   210,   211,   212,     0,   213,     0,   214, | 
 |      215,   216,    63,    64,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,     1,     2,     0,     3,     4,     5, | 
 |      277,     0,     0,     0,     0,     0,     0,   217,     0,     0, | 
 |        0,     0,     0,     0,     0,   278,   279,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,    63,    64,   111, | 
 |      107,   158,   159,   160,   161,   162,   163,    72,     0,     1, | 
 |        2,     0,     3,     4,     5,     0,     0,     0,     0,     0, | 
 |      183,   184,   185,   186,   187,   188,   189,   190,   191,   192, | 
 |      193,   194,   195,   196,   197,   198,   199,     0,     0,    73, | 
 |        0,     0,     0,    63,    64,     0,   107,    66,    67,    68, | 
 |       69,    70,    71,    72,     0,     1,     2,     0,     3,     4, | 
 |        5,     0,   200,   201,   202,   203,   204,   205,   206,   207, | 
 |      208,   209,   210,   211,   212,   137,   213,     0,   214,   215, | 
 |      216,     0,     0,     0,     0,    73,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,   112,     0,    63, | 
 |       64,   -67,     0,   280,     0,     0,   281,     0,   282,     0, | 
 |      283,     1,     2,     0,     3,     4,     5,   277,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,   278,   279,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,   111,    74,    75,     0, | 
 |        0,    76,     0,    77,   442,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,   183,   184,   185, | 
 |      186,   187,   188,   189,   190,   191,   192,   193,   194,   195, | 
 |      196,   197,   198,   199,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,    74,    75,     0,     0,    76,     0,    77, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,   200, | 
 |      201,   202,   203,   204,   205,   206,   207,   208,   209,   210, | 
 |      211,   212,     0,   213,     0,   214,   215,   216,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,   174,   175,     0,     0, | 
 |        0,     0,   176,     0,   112,     0,     0,     0,     0,     0, | 
 |      280,     0,     0,   281,     0,   282,     0,   283,   177,   178, | 
 |      179,     0,     0,     0,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,   180,   181,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    63, | 
 |       64,   182,   153,    66,    67,    68,    69,    70,    71,    72, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,   183,   184, | 
 |      185,   186,   187,   188,   189,   190,   191,   192,   193,   194, | 
 |      195,   196,   197,   198,   199,     0,     0,     0,     0,    63, | 
 |       64,    73,   107,   158,   159,   160,   161,   162,   163,    72, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |      200,   201,   202,   203,   204,   205,   206,   207,   208,   209, | 
 |      210,   211,   212,     0,   213,     0,   214,   215,   216,    63, | 
 |       64,    73,   107,    66,    67,    68,    69,    70,    71,    72, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |        0,     0,     0,     0,   217,     0,     0,     0,     0,     0, | 
 |        0,   370,     0,     0,     0,   154,     0,     0,     0,    63, | 
 |       64,    73,   107,    66,    67,    68,    69,    70,    71,    72, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    74, | 
 |       75,   449,     0,    76,     0,    77,     0,     0,     0,    63, | 
 |       64,    73,   107,    66,    67,    68,    69,    70,    71,    72, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    74, | 
 |       75,   540,   381,    76,     0,    77,     0,     0,     0,    63, | 
 |       64,    73,    65,    66,    67,    68,    69,    70,    71,    72, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    74, | 
 |       75,     0,     0,    76,     0,    77,     0,     0,     0,    63, | 
 |       64,    73,   107,   158,   159,   160,   161,   162,   163,    72, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    74, | 
 |       75,     0,     0,    76,     0,    77,     0,     0,     0,    63, | 
 |       64,    73,   153,    66,    67,    68,    69,    70,    71,    72, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    74, | 
 |       75,     0,     0,    76,     0,    77,     0,     0,     0,    63, | 
 |       64,    73,   107,    66,    67,    68,    69,    70,    71,    72, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    74, | 
 |       75,     0,     0,    76,     0,    77,     0,     0,     0,    63, | 
 |       64,    73,   330,    66,    67,    68,    69,    70,    71,    72, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    74, | 
 |       75,     0,     0,    76,     0,    77,     0,     0,     0,    63, | 
 |       64,    73,   107,   158,   159,   160,   161,   162,   163,    72, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    74, | 
 |       75,     0,     0,    76,     0,    77,     0,     0,     0,    63, | 
 |       64,    73,   107,    66,    67,    68,    69,    70,    71,   555, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    74, | 
 |       75,     0,     0,    76,     0,    77,     0,     0,     0,    63, | 
 |       64,    73,   107,    66,    67,    68,    69,    70,    71,   602, | 
 |        0,     1,     2,     0,     3,     4,     5,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    74, | 
 |       75,     0,     0,    76,     0,    77,     0,     0,     0,     0, | 
 |        0,    73,     0,   225,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, | 
 |        0,     0,     0,   226,   227,     0,     0,     0,     0,    74, | 
 |       75,     0,     0,    76,     0,   383,   228,   229,   230,   231, | 
 |      232,   233,   183,   184,   185,   186,   187,   188,   189,   190, | 
 |      191,   192,   193,   194,   195,   196,   197,   234,   235,     0, | 
 |        0,     0,     0,     0,     0,     0,     0,     0,     0,    74, | 
 |       75,     0,     0,    76,     0,    77,     0,     0,     0,   236, | 
 |      237,   238,     0,     0,   239,   201,   202,   203,   204,   205, | 
 |      206,   207,   208,   209,   210,   211,   212,   240,   241,   242, | 
 |      243,   244,   245,   246,     0,     0,     0,     0,     0,    74, | 
 |       75,     0,     0,    76,     0,    77 | 
 | }; | 
 |  | 
 | static const yytype_int16 yycheck[] = | 
 | { | 
 |        0,   230,   265,    27,   238,   342,   450,   241,   242,   243, | 
 |      244,   245,     4,     0,    11,   249,   166,    17,    11,    21, | 
 |      128,    11,    28,    54,   231,    54,   154,    29,    54,    54, | 
 |       17,   438,   439,   280,   281,   282,    21,    11,    58,    34, | 
 |      121,   167,     7,     8,   251,    10,    11,    12,    13,    14, | 
 |       15,    16,    17,    77,    19,    20,    54,    22,    23,    24, | 
 |      595,    11,   132,    53,   155,    38,    68,    17,    40,    41, | 
 |      151,   155,   154,   164,    54,    47,    34,   612,   102,    53, | 
 |      164,    53,   106,    68,    49,    18,   156,    54,   112,   155, | 
 |      497,    52,    54,    93,   118,    53,   166,   541,   164,    54, | 
 |      137,   138,   139,   173,   128,   142,    67,    54,   155,   146, | 
 |      147,   555,   556,   155,   149,   150,   151,   164,   142,   143, | 
 |      162,   152,   146,   152,   358,   155,   152,   152,   152,   158, | 
 |      156,   162,   162,   155,    19,   160,   383,    22,   160,    24, | 
 |      266,   267,   137,   138,   139,   154,    20,   142,   155,    23, | 
 |      487,   146,   147,   160,   152,   599,   600,   163,   602,   603, | 
 |       32,    33,   164,   160,   137,   138,   139,   160,    53,   142, | 
 |      404,   163,   152,   146,   147,   155,   156,     0,   622,   623, | 
 |      158,   518,   169,   520,   418,   152,   420,   421,   422,   156, | 
 |      152,   153,   157,   158,   115,   116,   161,   152,   163,   164, | 
 |      155,   156,   114,   115,   228,   152,   153,     3,     4,     5, | 
 |        6,   154,   236,   237,   238,   239,   240,   241,   242,   243, | 
 |      244,   245,   246,   247,   248,   249,     3,     4,     5,     6, | 
 |      338,   568,   154,   257,   119,   120,    22,   500,   319,   320, | 
 |      321,   322,   323,    22,   268,   326,   327,   328,   356,    26, | 
 |       27,   152,   137,   138,    22,   140,   141,    22,   143,   144, | 
 |      145,   331,    37,    53,   334,   335,     4,   337,    42,    43, | 
 |       44,   505,     4,    47,   344,    19,    68,   173,    22,    35, | 
 |       24,    37,   352,   353,   354,    46,   153,    48,   155,   523, | 
 |      524,   525,    38,   443,    61,    62,    63,    64,    65,    66, | 
 |       42,    43,    44,    45,    46,    47,    48,    42,    50,    44, | 
 |      391,   392,    83,    84,   338,   339,   340,   398,   581,   153, | 
 |      159,   155,   585,   153,   159,   155,   152,   156,     4,   119, | 
 |      120,    38,   356,   357,   358,    22,   155,   153,   408,   409, | 
 |      410,   162,     4,   153,   152,     9,   416,   137,   138,   578, | 
 |      140,   141,     9,   143,   144,   145,     9,   427,   428,   383, | 
 |        9,     9,     9,    54,    60,   389,    56,   596,   152,     0, | 
 |      152,   152,   152,   443,   152,    11,   457,   458,   459,   460, | 
 |      404,   462,   463,   152,    22,    22,   152,    18,    19,    20, | 
 |      152,    22,    23,    24,   418,   419,   420,   421,   422,    30, | 
 |       31,   471,   426,   473,   162,   153,   476,   149,   150,   151, | 
 |      155,   152,   152,   483,   484,   152,   440,     7,     8,   155, | 
 |       51,   502,   503,    38,    55,   155,   155,   155,    59,    19, | 
 |       20,   155,    22,    23,    24,   331,   155,     4,   334,   335, | 
 |      464,   337,    38,   513,   514,   155,   516,   517,   344,   155, | 
 |      155,   521,   155,   155,   155,   155,   352,   353,   354,    38, | 
 |      155,   155,   532,   155,   488,   546,    22,   548,   549,   158, | 
 |      155,   155,   155,   155,   162,   499,   155,   155,   153,    17, | 
 |       17,   505,   155,   152,   155,   155,     4,   155,   155,   155, | 
 |      155,   515,   155,   563,     4,   155,   152,    22,   498,   523, | 
 |      524,   525,     4,   162,   155,   529,     0,   153,   153,   579, | 
 |      580,   155,   408,   409,   410,   155,   155,    26,    27,   153, | 
 |      416,    53,   155,   593,    18,    19,    20,   153,    22,    23, | 
 |       24,   427,   428,   153,   158,   160,    30,    31,    53,   153, | 
 |      153,   153,    17,   160,     4,   148,   616,   617,   152,    22, | 
 |      152,   621,    17,    17,   624,   155,   155,    51,   582,    17, | 
 |      630,    55,    73,   633,    17,    59,   569,   133,   133,   569, | 
 |      133,    93,   542,   234,    17,   471,   257,   473,   112,   106, | 
 |      476,   235,   268,    89,    56,   529,    -1,   483,   484,    98, | 
 |       99,   100,   101,   102,   103,   104,   105,   106,   107,   108, | 
 |      109,   110,   111,    92,    93,    94,    95,    96,    97,    98, | 
 |       99,   100,   101,   415,    -1,    -1,    -1,   513,   514,    -1, | 
 |      516,   517,    -1,    -1,    -1,   521,     3,     4,    -1,    -1, | 
 |        7,     8,     9,    -1,    -1,    -1,   532,    -1,    -1,    -1, | 
 |       -1,    -1,    19,    20,    -1,    22,    23,    24,    25,    26, | 
 |       27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    40,    41,    -1,    -1,   563,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1, | 
 |       -1,    58,    -1,   579,   580,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,   593,    75,    76, | 
 |       77,    78,    79,    80,    81,    82,    83,    84,    85,    86, | 
 |       87,    88,    89,    90,    91,    -1,    -1,    -1,    -1,    -1, | 
 |      616,   617,    -1,    -1,    -1,   621,    -1,    -1,   624,    -1, | 
 |       -1,    -1,    -1,    -1,   630,    -1,    -1,   633,    -1,    -1, | 
 |      117,   118,   119,   120,   121,   122,   123,   124,   125,   126, | 
 |      127,   128,   129,    -1,   131,    -1,   133,   134,   135,    -1, | 
 |      137,   138,    -1,   140,   141,    -1,   143,   144,   145,     3, | 
 |        4,    -1,    -1,     7,     8,     9,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,   161,    19,    20,    -1,    22,    23, | 
 |       24,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    40,    41,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       54,    -1,     7,     8,    58,    10,    11,    12,    13,    14, | 
 |       15,    16,    17,    -1,    19,    20,    -1,    22,    23,    24, | 
 |       -1,    75,    76,    77,    78,    79,    80,    81,    82,    83, | 
 |       84,    85,    86,    87,    88,    89,    90,    91,    -1,    -1, | 
 |       -1,    -1,     7,     8,    49,    10,    11,    12,    13,    14, | 
 |       15,    16,    17,    -1,    19,    20,    -1,    22,    23,    24, | 
 |       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,   123, | 
 |      124,   125,   126,   127,   128,   129,    -1,   131,    -1,   133, | 
 |      134,   135,    -1,    -1,    49,    -1,    -1,    -1,    -1,     3, | 
 |        4,    -1,    -1,     7,     8,     9,    -1,    -1,   152,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    19,    20,   161,    22,    23, | 
 |       24,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    40,    41,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    58,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,   157,   158,    -1,    -1,   161,    -1,   163,   164, | 
 |       -1,    75,    76,    77,    78,    79,    80,    81,    82,    83, | 
 |       84,    85,    86,    87,    88,    89,    90,    91,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,   157,   158,    -1,    -1,   161,    -1,   163,   164, | 
 |       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,   123, | 
 |      124,   125,   126,   127,   128,   129,    -1,   131,    -1,   133, | 
 |      134,   135,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    19,    20,    -1,    22,    23,    24, | 
 |       25,    -1,    -1,    -1,    -1,    -1,    -1,   161,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    40,    41,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,     8,    54, | 
 |       10,    11,    12,    13,    14,    15,    16,    17,    -1,    19, | 
 |       20,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,    -1, | 
 |       75,    76,    77,    78,    79,    80,    81,    82,    83,    84, | 
 |       85,    86,    87,    88,    89,    90,    91,    -1,    -1,    49, | 
 |       -1,    -1,    -1,     7,     8,    -1,    10,    11,    12,    13, | 
 |       14,    15,    16,    17,    -1,    19,    20,    -1,    22,    23, | 
 |       24,    -1,   117,   118,   119,   120,   121,   122,   123,   124, | 
 |      125,   126,   127,   128,   129,    39,   131,    -1,   133,   134, | 
 |      135,    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,   152,    -1,     7, | 
 |        8,   156,    -1,   158,    -1,    -1,   161,    -1,   163,    -1, | 
 |      165,    19,    20,    -1,    22,    23,    24,    25,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    54,   157,   158,    -1, | 
 |       -1,   161,    -1,   163,   164,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77, | 
 |       78,    79,    80,    81,    82,    83,    84,    85,    86,    87, | 
 |       88,    89,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,   157,   158,    -1,    -1,   161,    -1,   163, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117, | 
 |      118,   119,   120,   121,   122,   123,   124,   125,   126,   127, | 
 |      128,   129,    -1,   131,    -1,   133,   134,   135,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,    -1, | 
 |       -1,    -1,     9,    -1,   152,    -1,    -1,    -1,    -1,    -1, | 
 |      158,    -1,    -1,   161,    -1,   163,    -1,   165,    25,    26, | 
 |       27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    40,    41,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7, | 
 |        8,    58,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    75,    76, | 
 |       77,    78,    79,    80,    81,    82,    83,    84,    85,    86, | 
 |       87,    88,    89,    90,    91,    -1,    -1,    -1,    -1,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |      117,   118,   119,   120,   121,   122,   123,   124,   125,   126, | 
 |      127,   128,   129,    -1,   131,    -1,   133,   134,   135,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,   161,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    39,    -1,    -1,    -1,   123,    -1,    -1,    -1,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    39,    -1,   161,    -1,   163,    -1,    -1,    -1,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    39,   160,   161,    -1,   163,    -1,    -1,    -1,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    -1,    -1,   161,    -1,   163,    -1,    -1,    -1,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    -1,    -1,   161,    -1,   163,    -1,    -1,    -1,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    -1,    -1,   161,    -1,   163,    -1,    -1,    -1,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    -1,    -1,   161,    -1,   163,    -1,    -1,    -1,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    -1,    -1,   161,    -1,   163,    -1,    -1,    -1,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    -1,    -1,   161,    -1,   163,    -1,    -1,    -1,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    -1,    -1,   161,    -1,   163,    -1,    -1,    -1,     7, | 
 |        8,    49,    10,    11,    12,    13,    14,    15,    16,    17, | 
 |       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    -1,    -1,   161,    -1,   163,    -1,    -1,    -1,    -1, | 
 |       -1,    49,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, | 
 |       -1,    -1,    -1,    56,    57,    -1,    -1,    -1,    -1,   157, | 
 |      158,    -1,    -1,   161,    -1,   163,    69,    70,    71,    72, | 
 |       73,    74,    75,    76,    77,    78,    79,    80,    81,    82, | 
 |       83,    84,    85,    86,    87,    88,    89,    90,    91,    -1, | 
 |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    -1,    -1,   161,    -1,   163,    -1,    -1,    -1,   112, | 
 |      113,   114,    -1,    -1,   117,   118,   119,   120,   121,   122, | 
 |      123,   124,   125,   126,   127,   128,   129,   130,   131,   132, | 
 |      133,   134,   135,   136,    -1,    -1,    -1,    -1,    -1,   157, | 
 |      158,    -1,    -1,   161,    -1,   163 | 
 | }; | 
 |  | 
 | /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing | 
 |    symbol of state STATE-NUM.  */ | 
 | static const yytype_uint8 yystos[] = | 
 | { | 
 |        0,    19,    20,    22,    23,    24,    30,    31,    51,    55, | 
 |       59,   174,   177,   178,   179,   180,   212,   213,   214,   216, | 
 |      215,    52,    67,   221,   154,    58,   154,    18,   154,    42, | 
 |       43,    44,    45,    46,    47,    48,    50,   149,   150,   151, | 
 |      181,   182,   183,     0,   214,    46,    48,   184,   231,    42, | 
 |       43,    44,    47,   185,   228,   230,   238,   154,   154,   158, | 
 |      222,    22,   220,     7,     8,    10,    11,    12,    13,    14, | 
 |       15,    16,    17,    49,   157,   158,   161,   163,   174,   178, | 
 |      199,   200,   234,   183,   183,    35,    37,   210,   183,   183, | 
 |       21,    68,   239,   240,    29,   164,   229,   239,    22,    22, | 
 |       22,   223,   152,     4,     4,     4,   163,    10,   164,   200, | 
 |      205,    54,   152,   176,   210,   210,    42,    44,   186,    32, | 
 |       33,   209,    61,    62,    63,    64,    65,    66,   187,   226, | 
 |      226,    68,    38,   177,   243,   155,   160,    39,   200,   201, | 
 |      203,   204,   159,   159,   164,   205,   155,   164,   152,   204, | 
 |      156,   209,   209,    10,   123,   200,   202,   211,    11,    12, | 
 |       13,    14,    15,    16,   172,   173,   200,   206,     4,   202, | 
 |       28,   163,   227,    38,     3,     4,     9,    25,    26,    27, | 
 |       40,    41,    58,    75,    76,    77,    78,    79,    80,    81, | 
 |       82,    83,    84,    85,    86,    87,    88,    89,    90,    91, | 
 |      117,   118,   119,   120,   121,   122,   123,   124,   125,   126, | 
 |      127,   128,   129,   131,   133,   134,   135,   161,   167,   168, | 
 |      169,   207,   233,   234,   235,    36,    56,    57,    69,    70, | 
 |       71,    72,    73,    74,    90,    91,   112,   113,   114,   117, | 
 |      130,   131,   132,   133,   134,   135,   136,   167,   168,   169, | 
 |      241,   247,   248,   249,   250,    22,   189,   155,   153,   200, | 
 |      200,   162,   164,   200,     4,   153,   206,   200,   152,   234, | 
 |       26,    27,     3,     4,     5,     6,     9,    25,    40,    41, | 
 |      158,   161,   163,   165,   207,   234,   176,   178,   235,    60, | 
 |      232,    92,    93,    94,    95,    96,    97,    98,    99,   100, | 
 |      101,   170,    26,    27,    98,    99,   100,   101,   102,   103, | 
 |      104,   105,   106,   107,   108,   109,   110,   111,   171,   152, | 
 |      152,   152,   152,   152,   206,   208,   152,   152,   152,    56, | 
 |       10,   200,   236,   237,    11,    17,    11,   172,   187,   170, | 
 |      171,   200,   200,   236,   200,   200,   244,   236,   236,   236, | 
 |      236,   236,   200,   200,   200,   236,   187,   115,   116,    53, | 
 |      119,   120,   137,   138,   140,   141,   143,   144,   145,   188, | 
 |       39,   201,   191,   160,   162,   162,   153,   191,   176,   176, | 
 |      211,   160,   208,   163,   208,   164,   208,    22,   217,   152, | 
 |       22,   152,   152,   206,   206,   206,   206,   206,   155,   162, | 
 |      206,   206,   206,   235,   155,   235,   235,   235,   202,   200, | 
 |      200,   155,   194,   155,   194,   235,   158,   155,   155,   155, | 
 |      155,   155,   155,   235,   235,   235,    38,   202,   200,   236, | 
 |        4,   137,   138,   139,   142,   146,   147,   190,   218,   219, | 
 |       38,   160,   164,   200,   208,   162,   164,   155,   197,    39, | 
 |      200,   224,   225,   155,   206,   206,   246,   155,   155,   155, | 
 |      155,   206,   155,   155,    38,   236,   155,   155,   235,   235, | 
 |      235,    11,    53,    11,   246,   235,   158,   236,   200,   236, | 
 |      236,   236,   155,   155,   155,   200,   235,   235,   155,   197, | 
 |      197,   200,   162,   164,    34,    53,   195,   198,   189,   155, | 
 |      153,    22,   155,   155,   153,   155,   206,   206,   206,   206, | 
 |      206,   206,   200,    17,    17,   152,   155,   155,   235,     4, | 
 |      235,   155,   235,   155,   155,   155,     4,   235,   235,   152, | 
 |      155,   194,   200,   153,   162,    22,     4,   197,   174,   175, | 
 |       39,   200,   191,   206,   206,   236,   155,   153,   155,   155, | 
 |      153,   153,   153,   235,   235,    17,   200,   245,   235,   235, | 
 |      194,   194,   235,   155,   236,   236,   236,   245,   235,   189, | 
 |      195,   196,   153,   153,   206,   206,   206,   155,   158,   189, | 
 |      189,   153,   155,   160,   235,   153,   194,   175,    53,   193, | 
 |      153,   153,   153,    17,   160,   172,   242,   119,   120,   235, | 
 |      235,   191,    17,   200,   160,   191,     4,   148,   192,   235, | 
 |      233,   160,   172,   189,   189,    38,   189,   189,    22,   155, | 
 |      233,    17,   235,   235,    17,   155,   235,   189,   189,   235, | 
 |       17,    73,   235,    17,   235 | 
 | }; | 
 |  | 
 | #define yyerrok		(yyerrstatus = 0) | 
 | #define yyclearin	(yychar = YYEMPTY) | 
 | #define YYEMPTY		(-2) | 
 | #define YYEOF		0 | 
 |  | 
 | #define YYACCEPT	goto yyacceptlab | 
 | #define YYABORT		goto yyabortlab | 
 | #define YYERROR		goto yyerrorlab | 
 |  | 
 |  | 
 | /* Like YYERROR except do call yyerror.  This remains here temporarily | 
 |    to ease the transition to the new meaning of YYERROR, for GCC. | 
 |    Once GCC version 2 has supplanted version 1, this can go.  */ | 
 |  | 
 | #define YYFAIL		goto yyerrlab | 
 |  | 
 | #define YYRECOVERING()  (!!yyerrstatus) | 
 |  | 
 | #define YYBACKUP(Token, Value)					\ | 
 | do								\ | 
 |   if (yychar == YYEMPTY && yylen == 1)				\ | 
 |     {								\ | 
 |       yychar = (Token);						\ | 
 |       yylval = (Value);						\ | 
 |       yytoken = YYTRANSLATE (yychar);				\ | 
 |       YYPOPSTACK (1);						\ | 
 |       goto yybackup;						\ | 
 |     }								\ | 
 |   else								\ | 
 |     {								\ | 
 |       yyerror (YY_("syntax error: cannot back up")); \ | 
 |       YYERROR;							\ | 
 |     }								\ | 
 | while (YYID (0)) | 
 |  | 
 |  | 
 | #define YYTERROR	1 | 
 | #define YYERRCODE	256 | 
 |  | 
 |  | 
 | /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. | 
 |    If N is 0, then set CURRENT to the empty location which ends | 
 |    the previous symbol: RHS[0] (always defined).  */ | 
 |  | 
 | #define YYRHSLOC(Rhs, K) ((Rhs)[K]) | 
 | #ifndef YYLLOC_DEFAULT | 
 | # define YYLLOC_DEFAULT(Current, Rhs, N)				\ | 
 |     do									\ | 
 |       if (YYID (N))                                                    \ | 
 | 	{								\ | 
 | 	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\ | 
 | 	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\ | 
 | 	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\ | 
 | 	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\ | 
 | 	}								\ | 
 |       else								\ | 
 | 	{								\ | 
 | 	  (Current).first_line   = (Current).last_line   =		\ | 
 | 	    YYRHSLOC (Rhs, 0).last_line;				\ | 
 | 	  (Current).first_column = (Current).last_column =		\ | 
 | 	    YYRHSLOC (Rhs, 0).last_column;				\ | 
 | 	}								\ | 
 |     while (YYID (0)) | 
 | #endif | 
 |  | 
 |  | 
 | /* YY_LOCATION_PRINT -- Print the location on the stream. | 
 |    This macro was not mandated originally: define only if we know | 
 |    we won't break user code: when these are the locations we know.  */ | 
 |  | 
 | #ifndef YY_LOCATION_PRINT | 
 | # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL | 
 | #  define YY_LOCATION_PRINT(File, Loc)			\ | 
 |      fprintf (File, "%d.%d-%d.%d",			\ | 
 | 	      (Loc).first_line, (Loc).first_column,	\ | 
 | 	      (Loc).last_line,  (Loc).last_column) | 
 | # else | 
 | #  define YY_LOCATION_PRINT(File, Loc) ((void) 0) | 
 | # endif | 
 | #endif | 
 |  | 
 |  | 
 | /* YYLEX -- calling `yylex' with the right arguments.  */ | 
 |  | 
 | #ifdef YYLEX_PARAM | 
 | # define YYLEX yylex (YYLEX_PARAM) | 
 | #else | 
 | # define YYLEX yylex () | 
 | #endif | 
 |  | 
 | /* Enable debugging if requested.  */ | 
 | #if YYDEBUG | 
 |  | 
 | # ifndef YYFPRINTF | 
 | #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */ | 
 | #  define YYFPRINTF fprintf | 
 | # endif | 
 |  | 
 | # define YYDPRINTF(Args)			\ | 
 | do {						\ | 
 |   if (yydebug)					\ | 
 |     YYFPRINTF Args;				\ | 
 | } while (YYID (0)) | 
 |  | 
 | # define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \ | 
 | do {									  \ | 
 |   if (yydebug)								  \ | 
 |     {									  \ | 
 |       YYFPRINTF (stderr, "%s ", Title);					  \ | 
 |       yy_symbol_print (stderr,						  \ | 
 | 		  Type, Value); \ | 
 |       YYFPRINTF (stderr, "\n");						  \ | 
 |     }									  \ | 
 | } while (YYID (0)) | 
 |  | 
 |  | 
 | /*--------------------------------. | 
 | | Print this symbol on YYOUTPUT.  | | 
 | `--------------------------------*/ | 
 |  | 
 | /*ARGSUSED*/ | 
 | #if (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | static void | 
 | yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) | 
 | #else | 
 | static void | 
 | yy_symbol_value_print (yyoutput, yytype, yyvaluep) | 
 |     FILE *yyoutput; | 
 |     int yytype; | 
 |     YYSTYPE const * const yyvaluep; | 
 | #endif | 
 | { | 
 |   if (!yyvaluep) | 
 |     return; | 
 | # ifdef YYPRINT | 
 |   if (yytype < YYNTOKENS) | 
 |     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); | 
 | # else | 
 |   YYUSE (yyoutput); | 
 | # endif | 
 |   switch (yytype) | 
 |     { | 
 |       default: | 
 | 	break; | 
 |     } | 
 | } | 
 |  | 
 |  | 
 | /*--------------------------------. | 
 | | Print this symbol on YYOUTPUT.  | | 
 | `--------------------------------*/ | 
 |  | 
 | #if (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | static void | 
 | yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) | 
 | #else | 
 | static void | 
 | yy_symbol_print (yyoutput, yytype, yyvaluep) | 
 |     FILE *yyoutput; | 
 |     int yytype; | 
 |     YYSTYPE const * const yyvaluep; | 
 | #endif | 
 | { | 
 |   if (yytype < YYNTOKENS) | 
 |     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); | 
 |   else | 
 |     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); | 
 |  | 
 |   yy_symbol_value_print (yyoutput, yytype, yyvaluep); | 
 |   YYFPRINTF (yyoutput, ")"); | 
 | } | 
 |  | 
 | /*------------------------------------------------------------------. | 
 | | yy_stack_print -- Print the state stack from its BOTTOM up to its | | 
 | | TOP (included).                                                   | | 
 | `------------------------------------------------------------------*/ | 
 |  | 
 | #if (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | static void | 
 | yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) | 
 | #else | 
 | static void | 
 | yy_stack_print (bottom, top) | 
 |     yytype_int16 *bottom; | 
 |     yytype_int16 *top; | 
 | #endif | 
 | { | 
 |   YYFPRINTF (stderr, "Stack now"); | 
 |   for (; bottom <= top; ++bottom) | 
 |     YYFPRINTF (stderr, " %d", *bottom); | 
 |   YYFPRINTF (stderr, "\n"); | 
 | } | 
 |  | 
 | # define YY_STACK_PRINT(Bottom, Top)				\ | 
 | do {								\ | 
 |   if (yydebug)							\ | 
 |     yy_stack_print ((Bottom), (Top));				\ | 
 | } while (YYID (0)) | 
 |  | 
 |  | 
 | /*------------------------------------------------. | 
 | | Report that the YYRULE is going to be reduced.  | | 
 | `------------------------------------------------*/ | 
 |  | 
 | #if (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | static void | 
 | yy_reduce_print (YYSTYPE *yyvsp, int yyrule) | 
 | #else | 
 | static void | 
 | yy_reduce_print (yyvsp, yyrule) | 
 |     YYSTYPE *yyvsp; | 
 |     int yyrule; | 
 | #endif | 
 | { | 
 |   int yynrhs = yyr2[yyrule]; | 
 |   int yyi; | 
 |   unsigned long int yylno = yyrline[yyrule]; | 
 |   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", | 
 | 	     yyrule - 1, yylno); | 
 |   /* The symbols being reduced.  */ | 
 |   for (yyi = 0; yyi < yynrhs; yyi++) | 
 |     { | 
 |       fprintf (stderr, "   $%d = ", yyi + 1); | 
 |       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], | 
 | 		       &(yyvsp[(yyi + 1) - (yynrhs)]) | 
 | 		       		       ); | 
 |       fprintf (stderr, "\n"); | 
 |     } | 
 | } | 
 |  | 
 | # define YY_REDUCE_PRINT(Rule)		\ | 
 | do {					\ | 
 |   if (yydebug)				\ | 
 |     yy_reduce_print (yyvsp, Rule); \ | 
 | } while (YYID (0)) | 
 |  | 
 | /* Nonzero means print parse trace.  It is left uninitialized so that | 
 |    multiple parsers can coexist.  */ | 
 | int yydebug; | 
 | #else /* !YYDEBUG */ | 
 | # define YYDPRINTF(Args) | 
 | # define YY_SYMBOL_PRINT(Title, Type, Value, Location) | 
 | # define YY_STACK_PRINT(Bottom, Top) | 
 | # define YY_REDUCE_PRINT(Rule) | 
 | #endif /* !YYDEBUG */ | 
 |  | 
 |  | 
 | /* YYINITDEPTH -- initial size of the parser's stacks.  */ | 
 | #ifndef	YYINITDEPTH | 
 | # define YYINITDEPTH 200 | 
 | #endif | 
 |  | 
 | /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only | 
 |    if the built-in stack extension method is used). | 
 |  | 
 |    Do not make this value too large; the results are undefined if | 
 |    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) | 
 |    evaluated with infinite-precision integer arithmetic.  */ | 
 |  | 
 | #ifndef YYMAXDEPTH | 
 | # define YYMAXDEPTH 10000 | 
 | #endif | 
 |  | 
 |  | 
 |  | 
 | #if YYERROR_VERBOSE | 
 |  | 
 | # ifndef yystrlen | 
 | #  if defined __GLIBC__ && defined _STRING_H | 
 | #   define yystrlen strlen | 
 | #  else | 
 | /* Return the length of YYSTR.  */ | 
 | #if (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | static YYSIZE_T | 
 | yystrlen (const char *yystr) | 
 | #else | 
 | static YYSIZE_T | 
 | yystrlen (yystr) | 
 |     const char *yystr; | 
 | #endif | 
 | { | 
 |   YYSIZE_T yylen; | 
 |   for (yylen = 0; yystr[yylen]; yylen++) | 
 |     continue; | 
 |   return yylen; | 
 | } | 
 | #  endif | 
 | # endif | 
 |  | 
 | # ifndef yystpcpy | 
 | #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE | 
 | #   define yystpcpy stpcpy | 
 | #  else | 
 | /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in | 
 |    YYDEST.  */ | 
 | #if (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | static char * | 
 | yystpcpy (char *yydest, const char *yysrc) | 
 | #else | 
 | static char * | 
 | yystpcpy (yydest, yysrc) | 
 |     char *yydest; | 
 |     const char *yysrc; | 
 | #endif | 
 | { | 
 |   char *yyd = yydest; | 
 |   const char *yys = yysrc; | 
 |  | 
 |   while ((*yyd++ = *yys++) != '\0') | 
 |     continue; | 
 |  | 
 |   return yyd - 1; | 
 | } | 
 | #  endif | 
 | # endif | 
 |  | 
 | # ifndef yytnamerr | 
 | /* Copy to YYRES the contents of YYSTR after stripping away unnecessary | 
 |    quotes and backslashes, so that it's suitable for yyerror.  The | 
 |    heuristic is that double-quoting is unnecessary unless the string | 
 |    contains an apostrophe, a comma, or backslash (other than | 
 |    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is | 
 |    null, do not copy; instead, return the length of what the result | 
 |    would have been.  */ | 
 | static YYSIZE_T | 
 | yytnamerr (char *yyres, const char *yystr) | 
 | { | 
 |   if (*yystr == '"') | 
 |     { | 
 |       YYSIZE_T yyn = 0; | 
 |       char const *yyp = yystr; | 
 |  | 
 |       for (;;) | 
 | 	switch (*++yyp) | 
 | 	  { | 
 | 	  case '\'': | 
 | 	  case ',': | 
 | 	    goto do_not_strip_quotes; | 
 |  | 
 | 	  case '\\': | 
 | 	    if (*++yyp != '\\') | 
 | 	      goto do_not_strip_quotes; | 
 | 	    /* Fall through.  */ | 
 | 	  default: | 
 | 	    if (yyres) | 
 | 	      yyres[yyn] = *yyp; | 
 | 	    yyn++; | 
 | 	    break; | 
 |  | 
 | 	  case '"': | 
 | 	    if (yyres) | 
 | 	      yyres[yyn] = '\0'; | 
 | 	    return yyn; | 
 | 	  } | 
 |     do_not_strip_quotes: ; | 
 |     } | 
 |  | 
 |   if (! yyres) | 
 |     return yystrlen (yystr); | 
 |  | 
 |   return yystpcpy (yyres, yystr) - yyres; | 
 | } | 
 | # endif | 
 |  | 
 | /* Copy into YYRESULT an error message about the unexpected token | 
 |    YYCHAR while in state YYSTATE.  Return the number of bytes copied, | 
 |    including the terminating null byte.  If YYRESULT is null, do not | 
 |    copy anything; just return the number of bytes that would be | 
 |    copied.  As a special case, return 0 if an ordinary "syntax error" | 
 |    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during | 
 |    size calculation.  */ | 
 | static YYSIZE_T | 
 | yysyntax_error (char *yyresult, int yystate, int yychar) | 
 | { | 
 |   int yyn = yypact[yystate]; | 
 |  | 
 |   if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) | 
 |     return 0; | 
 |   else | 
 |     { | 
 |       int yytype = YYTRANSLATE (yychar); | 
 |       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); | 
 |       YYSIZE_T yysize = yysize0; | 
 |       YYSIZE_T yysize1; | 
 |       int yysize_overflow = 0; | 
 |       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; | 
 |       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; | 
 |       int yyx; | 
 |  | 
 | # if 0 | 
 |       /* This is so xgettext sees the translatable formats that are | 
 | 	 constructed on the fly.  */ | 
 |       YY_("syntax error, unexpected %s"); | 
 |       YY_("syntax error, unexpected %s, expecting %s"); | 
 |       YY_("syntax error, unexpected %s, expecting %s or %s"); | 
 |       YY_("syntax error, unexpected %s, expecting %s or %s or %s"); | 
 |       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); | 
 | # endif | 
 |       char *yyfmt; | 
 |       char const *yyf; | 
 |       static char const yyunexpected[] = "syntax error, unexpected %s"; | 
 |       static char const yyexpecting[] = ", expecting %s"; | 
 |       static char const yyor[] = " or %s"; | 
 |       char yyformat[sizeof yyunexpected | 
 | 		    + sizeof yyexpecting - 1 | 
 | 		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) | 
 | 		       * (sizeof yyor - 1))]; | 
 |       char const *yyprefix = yyexpecting; | 
 |  | 
 |       /* Start YYX at -YYN if negative to avoid negative indexes in | 
 | 	 YYCHECK.  */ | 
 |       int yyxbegin = yyn < 0 ? -yyn : 0; | 
 |  | 
 |       /* Stay within bounds of both yycheck and yytname.  */ | 
 |       int yychecklim = YYLAST - yyn + 1; | 
 |       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; | 
 |       int yycount = 1; | 
 |  | 
 |       yyarg[0] = yytname[yytype]; | 
 |       yyfmt = yystpcpy (yyformat, yyunexpected); | 
 |  | 
 |       for (yyx = yyxbegin; yyx < yyxend; ++yyx) | 
 | 	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) | 
 | 	  { | 
 | 	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) | 
 | 	      { | 
 | 		yycount = 1; | 
 | 		yysize = yysize0; | 
 | 		yyformat[sizeof yyunexpected - 1] = '\0'; | 
 | 		break; | 
 | 	      } | 
 | 	    yyarg[yycount++] = yytname[yyx]; | 
 | 	    yysize1 = yysize + yytnamerr (0, yytname[yyx]); | 
 | 	    yysize_overflow |= (yysize1 < yysize); | 
 | 	    yysize = yysize1; | 
 | 	    yyfmt = yystpcpy (yyfmt, yyprefix); | 
 | 	    yyprefix = yyor; | 
 | 	  } | 
 |  | 
 |       yyf = YY_(yyformat); | 
 |       yysize1 = yysize + yystrlen (yyf); | 
 |       yysize_overflow |= (yysize1 < yysize); | 
 |       yysize = yysize1; | 
 |  | 
 |       if (yysize_overflow) | 
 | 	return YYSIZE_MAXIMUM; | 
 |  | 
 |       if (yyresult) | 
 | 	{ | 
 | 	  /* Avoid sprintf, as that infringes on the user's name space. | 
 | 	     Don't have undefined behavior even if the translation | 
 | 	     produced a string with the wrong number of "%s"s.  */ | 
 | 	  char *yyp = yyresult; | 
 | 	  int yyi = 0; | 
 | 	  while ((*yyp = *yyf) != '\0') | 
 | 	    { | 
 | 	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) | 
 | 		{ | 
 | 		  yyp += yytnamerr (yyp, yyarg[yyi++]); | 
 | 		  yyf += 2; | 
 | 		} | 
 | 	      else | 
 | 		{ | 
 | 		  yyp++; | 
 | 		  yyf++; | 
 | 		} | 
 | 	    } | 
 | 	} | 
 |       return yysize; | 
 |     } | 
 | } | 
 | #endif /* YYERROR_VERBOSE */ | 
 |  | 
 |  | 
 | /*-----------------------------------------------. | 
 | | Release the memory associated to this symbol.  | | 
 | `-----------------------------------------------*/ | 
 |  | 
 | /*ARGSUSED*/ | 
 | #if (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | static void | 
 | yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) | 
 | #else | 
 | static void | 
 | yydestruct (yymsg, yytype, yyvaluep) | 
 |     const char *yymsg; | 
 |     int yytype; | 
 |     YYSTYPE *yyvaluep; | 
 | #endif | 
 | { | 
 |   YYUSE (yyvaluep); | 
 |  | 
 |   if (!yymsg) | 
 |     yymsg = "Deleting"; | 
 |   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); | 
 |  | 
 |   switch (yytype) | 
 |     { | 
 |  | 
 |       default: | 
 | 	break; | 
 |     } | 
 | } | 
 |  | 
 |  | 
 | /* Prevent warnings from -Wmissing-prototypes.  */ | 
 |  | 
 | #ifdef YYPARSE_PARAM | 
 | #if defined __STDC__ || defined __cplusplus | 
 | int yyparse (void *YYPARSE_PARAM); | 
 | #else | 
 | int yyparse (); | 
 | #endif | 
 | #else /* ! YYPARSE_PARAM */ | 
 | #if defined __STDC__ || defined __cplusplus | 
 | int yyparse (void); | 
 | #else | 
 | int yyparse (); | 
 | #endif | 
 | #endif /* ! YYPARSE_PARAM */ | 
 |  | 
 |  | 
 |  | 
 | /* The look-ahead symbol.  */ | 
 | int yychar; | 
 |  | 
 | /* The semantic value of the look-ahead symbol.  */ | 
 | YYSTYPE yylval; | 
 |  | 
 | /* Number of syntax errors so far.  */ | 
 | int yynerrs; | 
 |  | 
 |  | 
 |  | 
 | /*----------. | 
 | | yyparse.  | | 
 | `----------*/ | 
 |  | 
 | #ifdef YYPARSE_PARAM | 
 | #if (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | int | 
 | yyparse (void *YYPARSE_PARAM) | 
 | #else | 
 | int | 
 | yyparse (YYPARSE_PARAM) | 
 |     void *YYPARSE_PARAM; | 
 | #endif | 
 | #else /* ! YYPARSE_PARAM */ | 
 | #if (defined __STDC__ || defined __C99__FUNC__ \ | 
 |      || defined __cplusplus || defined _MSC_VER) | 
 | int | 
 | yyparse (void) | 
 | #else | 
 | int | 
 | yyparse () | 
 |  | 
 | #endif | 
 | #endif | 
 | { | 
 |    | 
 |   int yystate; | 
 |   int yyn; | 
 |   int yyresult; | 
 |   /* Number of tokens to shift before error messages enabled.  */ | 
 |   int yyerrstatus; | 
 |   /* Look-ahead token as an internal (translated) token number.  */ | 
 |   int yytoken = 0; | 
 | #if YYERROR_VERBOSE | 
 |   /* Buffer for error messages, and its allocated size.  */ | 
 |   char yymsgbuf[128]; | 
 |   char *yymsg = yymsgbuf; | 
 |   YYSIZE_T yymsg_alloc = sizeof yymsgbuf; | 
 | #endif | 
 |  | 
 |   /* Three stacks and their tools: | 
 |      `yyss': related to states, | 
 |      `yyvs': related to semantic values, | 
 |      `yyls': related to locations. | 
 |  | 
 |      Refer to the stacks thru separate pointers, to allow yyoverflow | 
 |      to reallocate them elsewhere.  */ | 
 |  | 
 |   /* The state stack.  */ | 
 |   yytype_int16 yyssa[YYINITDEPTH]; | 
 |   yytype_int16 *yyss = yyssa; | 
 |   yytype_int16 *yyssp; | 
 |  | 
 |   /* The semantic value stack.  */ | 
 |   YYSTYPE yyvsa[YYINITDEPTH]; | 
 |   YYSTYPE *yyvs = yyvsa; | 
 |   YYSTYPE *yyvsp; | 
 |  | 
 |  | 
 |  | 
 | #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N)) | 
 |  | 
 |   YYSIZE_T yystacksize = YYINITDEPTH; | 
 |  | 
 |   /* The variables used to return semantic value and location from the | 
 |      action routines.  */ | 
 |   YYSTYPE yyval; | 
 |  | 
 |  | 
 |   /* The number of symbols on the RHS of the reduced rule. | 
 |      Keep to zero when no symbol should be popped.  */ | 
 |   int yylen = 0; | 
 |  | 
 |   YYDPRINTF ((stderr, "Starting parse\n")); | 
 |  | 
 |   yystate = 0; | 
 |   yyerrstatus = 0; | 
 |   yynerrs = 0; | 
 |   yychar = YYEMPTY;		/* Cause a token to be read.  */ | 
 |  | 
 |   /* Initialize stack pointers. | 
 |      Waste one element of value and location stack | 
 |      so that they stay on the same level as the state stack. | 
 |      The wasted elements are never initialized.  */ | 
 |  | 
 |   yyssp = yyss; | 
 |   yyvsp = yyvs; | 
 |  | 
 |   goto yysetstate; | 
 |  | 
 | /*------------------------------------------------------------. | 
 | | yynewstate -- Push a new state, which is found in yystate.  | | 
 | `------------------------------------------------------------*/ | 
 |  yynewstate: | 
 |   /* In all cases, when you get here, the value and location stacks | 
 |      have just been pushed.  So pushing a state here evens the stacks.  */ | 
 |   yyssp++; | 
 |  | 
 |  yysetstate: | 
 |   *yyssp = yystate; | 
 |  | 
 |   if (yyss + yystacksize - 1 <= yyssp) | 
 |     { | 
 |       /* Get the current used size of the three stacks, in elements.  */ | 
 |       YYSIZE_T yysize = yyssp - yyss + 1; | 
 |  | 
 | #ifdef yyoverflow | 
 |       { | 
 | 	/* Give user a chance to reallocate the stack.  Use copies of | 
 | 	   these so that the &'s don't force the real ones into | 
 | 	   memory.  */ | 
 | 	YYSTYPE *yyvs1 = yyvs; | 
 | 	yytype_int16 *yyss1 = yyss; | 
 |  | 
 |  | 
 | 	/* Each stack pointer address is followed by the size of the | 
 | 	   data in use in that stack, in bytes.  This used to be a | 
 | 	   conditional around just the two extra args, but that might | 
 | 	   be undefined if yyoverflow is a macro.  */ | 
 | 	yyoverflow (YY_("memory exhausted"), | 
 | 		    &yyss1, yysize * sizeof (*yyssp), | 
 | 		    &yyvs1, yysize * sizeof (*yyvsp), | 
 |  | 
 | 		    &yystacksize); | 
 |  | 
 | 	yyss = yyss1; | 
 | 	yyvs = yyvs1; | 
 |       } | 
 | #else /* no yyoverflow */ | 
 | # ifndef YYSTACK_RELOCATE | 
 |       goto yyexhaustedlab; | 
 | # else | 
 |       /* Extend the stack our own way.  */ | 
 |       if (YYMAXDEPTH <= yystacksize) | 
 | 	goto yyexhaustedlab; | 
 |       yystacksize *= 2; | 
 |       if (YYMAXDEPTH < yystacksize) | 
 | 	yystacksize = YYMAXDEPTH; | 
 |  | 
 |       { | 
 | 	yytype_int16 *yyss1 = yyss; | 
 | 	union yyalloc *yyptr = | 
 | 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); | 
 | 	if (! yyptr) | 
 | 	  goto yyexhaustedlab; | 
 | 	YYSTACK_RELOCATE (yyss); | 
 | 	YYSTACK_RELOCATE (yyvs); | 
 |  | 
 | #  undef YYSTACK_RELOCATE | 
 | 	if (yyss1 != yyssa) | 
 | 	  YYSTACK_FREE (yyss1); | 
 |       } | 
 | # endif | 
 | #endif /* no yyoverflow */ | 
 |  | 
 |       yyssp = yyss + yysize - 1; | 
 |       yyvsp = yyvs + yysize - 1; | 
 |  | 
 |  | 
 |       YYDPRINTF ((stderr, "Stack size increased to %lu\n", | 
 | 		  (unsigned long int) yystacksize)); | 
 |  | 
 |       if (yyss + yystacksize - 1 <= yyssp) | 
 | 	YYABORT; | 
 |     } | 
 |  | 
 |   YYDPRINTF ((stderr, "Entering state %d\n", yystate)); | 
 |  | 
 |   goto yybackup; | 
 |  | 
 | /*-----------. | 
 | | yybackup.  | | 
 | `-----------*/ | 
 | yybackup: | 
 |  | 
 |   /* Do appropriate processing given the current state.  Read a | 
 |      look-ahead token if we need one and don't already have one.  */ | 
 |  | 
 |   /* First try to decide what to do without reference to look-ahead token.  */ | 
 |   yyn = yypact[yystate]; | 
 |   if (yyn == YYPACT_NINF) | 
 |     goto yydefault; | 
 |  | 
 |   /* Not known => get a look-ahead token if don't already have one.  */ | 
 |  | 
 |   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */ | 
 |   if (yychar == YYEMPTY) | 
 |     { | 
 |       YYDPRINTF ((stderr, "Reading a token: ")); | 
 |       yychar = YYLEX; | 
 |     } | 
 |  | 
 |   if (yychar <= YYEOF) | 
 |     { | 
 |       yychar = yytoken = YYEOF; | 
 |       YYDPRINTF ((stderr, "Now at end of input.\n")); | 
 |     } | 
 |   else | 
 |     { | 
 |       yytoken = YYTRANSLATE (yychar); | 
 |       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); | 
 |     } | 
 |  | 
 |   /* If the proper action on seeing token YYTOKEN is to reduce or to | 
 |      detect an error, take that action.  */ | 
 |   yyn += yytoken; | 
 |   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) | 
 |     goto yydefault; | 
 |   yyn = yytable[yyn]; | 
 |   if (yyn <= 0) | 
 |     { | 
 |       if (yyn == 0 || yyn == YYTABLE_NINF) | 
 | 	goto yyerrlab; | 
 |       yyn = -yyn; | 
 |       goto yyreduce; | 
 |     } | 
 |  | 
 |   if (yyn == YYFINAL) | 
 |     YYACCEPT; | 
 |  | 
 |   /* Count tokens shifted since error; after three, turn off error | 
 |      status.  */ | 
 |   if (yyerrstatus) | 
 |     yyerrstatus--; | 
 |  | 
 |   /* Shift the look-ahead token.  */ | 
 |   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); | 
 |  | 
 |   /* Discard the shifted token unless it is eof.  */ | 
 |   if (yychar != YYEOF) | 
 |     yychar = YYEMPTY; | 
 |  | 
 |   yystate = yyn; | 
 |   *++yyvsp = yylval; | 
 |  | 
 |   goto yynewstate; | 
 |  | 
 |  | 
 | /*-----------------------------------------------------------. | 
 | | yydefault -- do the default action for the current state.  | | 
 | `-----------------------------------------------------------*/ | 
 | yydefault: | 
 |   yyn = yydefact[yystate]; | 
 |   if (yyn == 0) | 
 |     goto yyerrlab; | 
 |   goto yyreduce; | 
 |  | 
 |  | 
 | /*-----------------------------. | 
 | | yyreduce -- Do a reduction.  | | 
 | `-----------------------------*/ | 
 | yyreduce: | 
 |   /* yyn is the number of a rule to reduce with.  */ | 
 |   yylen = yyr2[yyn]; | 
 |  | 
 |   /* If YYLEN is nonzero, implement the default value of the action: | 
 |      `$$ = $1'. | 
 |  | 
 |      Otherwise, the following line sets YYVAL to garbage. | 
 |      This behavior is undocumented and Bison | 
 |      users should not rely upon it.  Assigning to YYVAL | 
 |      unconditionally makes the parser a bit smaller, and it avoids a | 
 |      GCC warning that YYVAL may be used uninitialized.  */ | 
 |   yyval = yyvsp[1-yylen]; | 
 |  | 
 |  | 
 |   YY_REDUCE_PRINT (yyn); | 
 |   switch (yyn) | 
 |     { | 
 |         case 29: | 
 | #line 1118 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;} | 
 |     break; | 
 |  | 
 |   case 30: | 
 | #line 1118 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;} | 
 |     break; | 
 |  | 
 |   case 31: | 
 | #line 1119 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;} | 
 |     break; | 
 |  | 
 |   case 32: | 
 | #line 1119 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;} | 
 |     break; | 
 |  | 
 |   case 33: | 
 | #line 1120 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;} | 
 |     break; | 
 |  | 
 |   case 34: | 
 | #line 1120 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;} | 
 |     break; | 
 |  | 
 |   case 35: | 
 | #line 1121 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;} | 
 |     break; | 
 |  | 
 |   case 36: | 
 | #line 1121 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;} | 
 |     break; | 
 |  | 
 |   case 37: | 
 | #line 1122 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;} | 
 |     break; | 
 |  | 
 |   case 38: | 
 | #line 1122 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;} | 
 |     break; | 
 |  | 
 |   case 39: | 
 | #line 1126 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;} | 
 |     break; | 
 |  | 
 |   case 40: | 
 | #line 1126 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;} | 
 |     break; | 
 |  | 
 |   case 41: | 
 | #line 1127 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;} | 
 |     break; | 
 |  | 
 |   case 42: | 
 | #line 1127 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;} | 
 |     break; | 
 |  | 
 |   case 43: | 
 | #line 1128 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;} | 
 |     break; | 
 |  | 
 |   case 44: | 
 | #line 1128 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;} | 
 |     break; | 
 |  | 
 |   case 45: | 
 | #line 1129 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;} | 
 |     break; | 
 |  | 
 |   case 46: | 
 | #line 1129 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;} | 
 |     break; | 
 |  | 
 |   case 47: | 
 | #line 1130 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;} | 
 |     break; | 
 |  | 
 |   case 48: | 
 | #line 1130 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;} | 
 |     break; | 
 |  | 
 |   case 49: | 
 | #line 1131 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;} | 
 |     break; | 
 |  | 
 |   case 50: | 
 | #line 1131 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;} | 
 |     break; | 
 |  | 
 |   case 51: | 
 | #line 1132 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;} | 
 |     break; | 
 |  | 
 |   case 52: | 
 | #line 1132 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;} | 
 |     break; | 
 |  | 
 |   case 53: | 
 | #line 1133 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;} | 
 |     break; | 
 |  | 
 |   case 54: | 
 | #line 1134 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;} | 
 |     break; | 
 |  | 
 |   case 65: | 
 | #line 1143 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.StrVal) = 0; ;} | 
 |     break; | 
 |  | 
 |   case 66: | 
 | #line 1145 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.UIntVal)=(yyvsp[(3) - (4)].UInt64Val); ;} | 
 |     break; | 
 |  | 
 |   case 67: | 
 | #line 1146 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.UIntVal)=0; ;} | 
 |     break; | 
 |  | 
 |   case 68: | 
 | #line 1150 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 69: | 
 | #line 1154 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.StrVal) = 0; | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 73: | 
 | #line 1162 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.StrVal) = 0; | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 74: | 
 | #line 1167 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 75: | 
 | #line 1173 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 76: | 
 | #line 1174 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 77: | 
 | #line 1175 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 78: | 
 | #line 1176 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 79: | 
 | #line 1177 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 80: | 
 | #line 1181 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 81: | 
 | #line 1182 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 82: | 
 | #line 1183 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 83: | 
 | #line 1187 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;} | 
 |     break; | 
 |  | 
 |   case 84: | 
 | #line 1188 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;} | 
 |     break; | 
 |  | 
 |   case 85: | 
 | #line 1189 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Visibility) = GlobalValue::HiddenVisibility;    ;} | 
 |     break; | 
 |  | 
 |   case 86: | 
 | #line 1190 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Visibility) = GlobalValue::ProtectedVisibility; ;} | 
 |     break; | 
 |  | 
 |   case 87: | 
 | #line 1194 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 88: | 
 | #line 1195 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 89: | 
 | #line 1196 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 90: | 
 | #line 1200 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 91: | 
 | #line 1201 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 92: | 
 | #line 1202 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 93: | 
 | #line 1203 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 94: | 
 | #line 1204 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 95: | 
 | #line 1208 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 96: | 
 | #line 1209 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 97: | 
 | #line 1210 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} | 
 |     break; | 
 |  | 
 |   case 98: | 
 | #line 1213 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.UIntVal) = CallingConv::C; ;} | 
 |     break; | 
 |  | 
 |   case 99: | 
 | #line 1214 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.UIntVal) = CallingConv::C; ;} | 
 |     break; | 
 |  | 
 |   case 100: | 
 | #line 1215 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.UIntVal) = CallingConv::Fast; ;} | 
 |     break; | 
 |  | 
 |   case 101: | 
 | #line 1216 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.UIntVal) = CallingConv::Cold; ;} | 
 |     break; | 
 |  | 
 |   case 102: | 
 | #line 1217 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.UIntVal) = CallingConv::X86_StdCall; ;} | 
 |     break; | 
 |  | 
 |   case 103: | 
 | #line 1218 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.UIntVal) = CallingConv::X86_FastCall; ;} | 
 |     break; | 
 |  | 
 |   case 104: | 
 | #line 1219 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |                    if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val)) | 
 |                      GEN_ERROR("Calling conv too large"); | 
 |                    (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val); | 
 |                   CHECK_FOR_ERROR | 
 |                  ;} | 
 |     break; | 
 |  | 
 |   case 105: | 
 | #line 1226 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::ZExt;      ;} | 
 |     break; | 
 |  | 
 |   case 106: | 
 | #line 1227 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::ZExt;      ;} | 
 |     break; | 
 |  | 
 |   case 107: | 
 | #line 1228 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::SExt;      ;} | 
 |     break; | 
 |  | 
 |   case 108: | 
 | #line 1229 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::SExt;      ;} | 
 |     break; | 
 |  | 
 |   case 109: | 
 | #line 1230 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::InReg;     ;} | 
 |     break; | 
 |  | 
 |   case 110: | 
 | #line 1231 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::StructRet; ;} | 
 |     break; | 
 |  | 
 |   case 111: | 
 | #line 1232 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::NoAlias;   ;} | 
 |     break; | 
 |  | 
 |   case 112: | 
 | #line 1233 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::ByVal;     ;} | 
 |     break; | 
 |  | 
 |   case 113: | 
 | #line 1234 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::Nest;      ;} | 
 |     break; | 
 |  | 
 |   case 114: | 
 | #line 1235 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) =  | 
 |                           ParamAttr::constructAlignmentFromInt((yyvsp[(2) - (2)].UInt64Val));    ;} | 
 |     break; | 
 |  | 
 |   case 115: | 
 | #line 1239 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::None; ;} | 
 |     break; | 
 |  | 
 |   case 116: | 
 | #line 1240 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |                 (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs); | 
 |               ;} | 
 |     break; | 
 |  | 
 |   case 117: | 
 | #line 1245 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::NoReturn; ;} | 
 |     break; | 
 |  | 
 |   case 118: | 
 | #line 1246 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::NoUnwind; ;} | 
 |     break; | 
 |  | 
 |   case 119: | 
 | #line 1247 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::ZExt;     ;} | 
 |     break; | 
 |  | 
 |   case 120: | 
 | #line 1248 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::SExt;     ;} | 
 |     break; | 
 |  | 
 |   case 121: | 
 | #line 1249 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::ReadNone; ;} | 
 |     break; | 
 |  | 
 |   case 122: | 
 | #line 1250 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::ReadOnly; ;} | 
 |     break; | 
 |  | 
 |   case 123: | 
 | #line 1253 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamAttrs) = ParamAttr::None; ;} | 
 |     break; | 
 |  | 
 |   case 124: | 
 | #line 1254 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |                 (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs); | 
 |               ;} | 
 |     break; | 
 |  | 
 |   case 125: | 
 | #line 1259 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.StrVal) = 0; ;} | 
 |     break; | 
 |  | 
 |   case 126: | 
 | #line 1260 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |                 (yyval.StrVal) = (yyvsp[(2) - (2)].StrVal); | 
 |               ;} | 
 |     break; | 
 |  | 
 |   case 127: | 
 | #line 1267 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.UIntVal) = 0; ;} | 
 |     break; | 
 |  | 
 |   case 128: | 
 | #line 1268 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |   (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val); | 
 |   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) | 
 |     GEN_ERROR("Alignment must be a power of two"); | 
 |   CHECK_FOR_ERROR | 
 | ;} | 
 |     break; | 
 |  | 
 |   case 129: | 
 | #line 1274 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.UIntVal) = 0; ;} | 
 |     break; | 
 |  | 
 |   case 130: | 
 | #line 1275 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |   (yyval.UIntVal) = (yyvsp[(3) - (3)].UInt64Val); | 
 |   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) | 
 |     GEN_ERROR("Alignment must be a power of two"); | 
 |   CHECK_FOR_ERROR | 
 | ;} | 
 |     break; | 
 |  | 
 |   case 131: | 
 | #line 1284 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |   for (unsigned i = 0, e = (yyvsp[(2) - (2)].StrVal)->length(); i != e; ++i) | 
 |     if ((*(yyvsp[(2) - (2)].StrVal))[i] == '"' || (*(yyvsp[(2) - (2)].StrVal))[i] == '\\') | 
 |       GEN_ERROR("Invalid character in section name"); | 
 |   (yyval.StrVal) = (yyvsp[(2) - (2)].StrVal); | 
 |   CHECK_FOR_ERROR | 
 | ;} | 
 |     break; | 
 |  | 
 |   case 132: | 
 | #line 1292 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.StrVal) = 0; ;} | 
 |     break; | 
 |  | 
 |   case 133: | 
 | #line 1293 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); ;} | 
 |     break; | 
 |  | 
 |   case 134: | 
 | #line 1298 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {;} | 
 |     break; | 
 |  | 
 |   case 135: | 
 | #line 1299 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {;} | 
 |     break; | 
 |  | 
 |   case 136: | 
 | #line 1300 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     CurGV->setSection(*(yyvsp[(1) - (1)].StrVal)); | 
 |     delete (yyvsp[(1) - (1)].StrVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 137: | 
 | #line 1305 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if ((yyvsp[(2) - (2)].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[(2) - (2)].UInt64Val))) | 
 |       GEN_ERROR("Alignment must be a power of two"); | 
 |     CurGV->setAlignment((yyvsp[(2) - (2)].UInt64Val)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 145: | 
 | #line 1321 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.TypeVal) = new PATypeHolder(OpaqueType::get()); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 146: | 
 | #line 1325 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.TypeVal) = new PATypeHolder((yyvsp[(1) - (1)].PrimType)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 147: | 
 | #line 1329 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                             // Pointer type? | 
 |     if (*(yyvsp[(1) - (3)].TypeVal) == Type::LabelTy) | 
 |       GEN_ERROR("Cannot form a pointer to a basic block"); | 
 |     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PointerType::get(*(yyvsp[(1) - (3)].TypeVal), (yyvsp[(2) - (3)].UIntVal)))); | 
 |     delete (yyvsp[(1) - (3)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 148: | 
 | #line 1336 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {            // Named types are also simple types... | 
 |     const Type* tmp = getTypeVal((yyvsp[(1) - (1)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.TypeVal) = new PATypeHolder(tmp); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 149: | 
 | #line 1341 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                   // Type UpReference | 
 |     if ((yyvsp[(2) - (2)].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range"); | 
 |     OpaqueType *OT = OpaqueType::get();        // Use temporary placeholder | 
 |     UpRefs.push_back(UpRefRecord((unsigned)(yyvsp[(2) - (2)].UInt64Val), OT));  // Add to vector... | 
 |     (yyval.TypeVal) = new PATypeHolder(OT); | 
 |     UR_OUT("New Upreference!\n"); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 150: | 
 | #line 1349 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     // Allow but ignore attributes on function types; this permits auto-upgrade. | 
 |     // FIXME: remove in LLVM 3.0. | 
 |     const Type *RetTy = *(yyvsp[(1) - (5)].TypeVal); | 
 |     if (!FunctionType::isValidReturnType(RetTy)) | 
 |       GEN_ERROR("Invalid result type for LLVM function"); | 
 |        | 
 |     std::vector<const Type*> Params; | 
 |     TypeWithAttrsList::iterator I = (yyvsp[(3) - (5)].TypeWithAttrsList)->begin(), E = (yyvsp[(3) - (5)].TypeWithAttrsList)->end(); | 
 |     for (; I != E; ++I ) { | 
 |       const Type *Ty = I->Ty->get(); | 
 |       Params.push_back(Ty); | 
 |     } | 
 |  | 
 |     bool isVarArg = Params.size() && Params.back() == Type::VoidTy; | 
 |     if (isVarArg) Params.pop_back(); | 
 |  | 
 |     for (unsigned i = 0; i != Params.size(); ++i) | 
 |       if (!(Params[i]->isFirstClassType() || isa<OpaqueType>(Params[i]))) | 
 |         GEN_ERROR("Function arguments must be value types!"); | 
 |  | 
 |     CHECK_FOR_ERROR | 
 |  | 
 |     FunctionType *FT = FunctionType::get(RetTy, Params, isVarArg); | 
 |     delete (yyvsp[(3) - (5)].TypeWithAttrsList);   // Delete the argument list | 
 |     delete (yyvsp[(1) - (5)].TypeVal);   // Delete the return type handle | 
 |     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT));  | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 151: | 
 | #line 1378 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     // Allow but ignore attributes on function types; this permits auto-upgrade. | 
 |     // FIXME: remove in LLVM 3.0. | 
 |     std::vector<const Type*> Params; | 
 |     TypeWithAttrsList::iterator I = (yyvsp[(3) - (5)].TypeWithAttrsList)->begin(), E = (yyvsp[(3) - (5)].TypeWithAttrsList)->end(); | 
 |     for ( ; I != E; ++I ) { | 
 |       const Type* Ty = I->Ty->get(); | 
 |       Params.push_back(Ty); | 
 |     } | 
 |  | 
 |     bool isVarArg = Params.size() && Params.back() == Type::VoidTy; | 
 |     if (isVarArg) Params.pop_back(); | 
 |  | 
 |     for (unsigned i = 0; i != Params.size(); ++i) | 
 |       if (!(Params[i]->isFirstClassType() || isa<OpaqueType>(Params[i]))) | 
 |         GEN_ERROR("Function arguments must be value types!"); | 
 |  | 
 |     CHECK_FOR_ERROR | 
 |  | 
 |     FunctionType *FT = FunctionType::get((yyvsp[(1) - (5)].PrimType), Params, isVarArg); | 
 |     delete (yyvsp[(3) - (5)].TypeWithAttrsList);      // Delete the argument list | 
 |     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT));  | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 152: | 
 | #line 1403 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {          // Sized array type? | 
 |     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[(4) - (5)].TypeVal), (unsigned)(yyvsp[(2) - (5)].UInt64Val)))); | 
 |     delete (yyvsp[(4) - (5)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 153: | 
 | #line 1408 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {          // Vector type? | 
 |      const llvm::Type* ElemTy = (yyvsp[(4) - (5)].TypeVal)->get(); | 
 |      if ((unsigned)(yyvsp[(2) - (5)].UInt64Val) != (yyvsp[(2) - (5)].UInt64Val)) | 
 |         GEN_ERROR("Unsigned result not equal to signed result"); | 
 |      if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger()) | 
 |         GEN_ERROR("Element type of a VectorType must be primitive"); | 
 |      (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(VectorType::get(*(yyvsp[(4) - (5)].TypeVal), (unsigned)(yyvsp[(2) - (5)].UInt64Val)))); | 
 |      delete (yyvsp[(4) - (5)].TypeVal); | 
 |      CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 154: | 
 | #line 1418 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                        // Structure type? | 
 |     std::vector<const Type*> Elements; | 
 |     for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(2) - (3)].TypeList)->begin(), | 
 |            E = (yyvsp[(2) - (3)].TypeList)->end(); I != E; ++I) | 
 |       Elements.push_back(*I); | 
 |  | 
 |     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements))); | 
 |     delete (yyvsp[(2) - (3)].TypeList); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 155: | 
 | #line 1428 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                                  // Empty structure type? | 
 |     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>())); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 156: | 
 | #line 1432 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     std::vector<const Type*> Elements; | 
 |     for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(3) - (5)].TypeList)->begin(), | 
 |            E = (yyvsp[(3) - (5)].TypeList)->end(); I != E; ++I) | 
 |       Elements.push_back(*I); | 
 |  | 
 |     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true))); | 
 |     delete (yyvsp[(3) - (5)].TypeList); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 157: | 
 | #line 1442 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                         // Empty structure type? | 
 |     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 158: | 
 | #line 1449 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     // Allow but ignore attributes on function types; this permits auto-upgrade. | 
 |     // FIXME: remove in LLVM 3.0. | 
 |     (yyval.TypeWithAttrs).Ty = (yyvsp[(1) - (2)].TypeVal);  | 
 |     (yyval.TypeWithAttrs).Attrs = ParamAttr::None; | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 159: | 
 | #line 1458 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (1)].TypeVal))->getDescription()); | 
 |     if (!(*(yyvsp[(1) - (1)].TypeVal))->isFirstClassType() && !isa<StructType>((yyvsp[(1) - (1)].TypeVal)->get())) | 
 |       GEN_ERROR("LLVM functions cannot return aggregate types"); | 
 |     (yyval.TypeVal) = (yyvsp[(1) - (1)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 160: | 
 | #line 1465 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.TypeVal) = new PATypeHolder(Type::VoidTy); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 161: | 
 | #line 1470 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); | 
 |     (yyval.TypeWithAttrsList)->push_back((yyvsp[(1) - (1)].TypeWithAttrs)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 162: | 
 | #line 1475 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     ((yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList))->push_back((yyvsp[(3) - (3)].TypeWithAttrs)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 164: | 
 | #line 1483 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList); | 
 |     TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; | 
 |     TWA.Ty = new PATypeHolder(Type::VoidTy); | 
 |     (yyval.TypeWithAttrsList)->push_back(TWA); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 165: | 
 | #line 1490 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.TypeWithAttrsList) = new TypeWithAttrsList; | 
 |     TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; | 
 |     TWA.Ty = new PATypeHolder(Type::VoidTy); | 
 |     (yyval.TypeWithAttrsList)->push_back(TWA); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 166: | 
 | #line 1497 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 167: | 
 | #line 1505 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.TypeList) = new std::list<PATypeHolder>(); | 
 |     (yyval.TypeList)->push_back(*(yyvsp[(1) - (1)].TypeVal));  | 
 |     delete (yyvsp[(1) - (1)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 168: | 
 | #line 1511 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     ((yyval.TypeList)=(yyvsp[(1) - (3)].TypeList))->push_back(*(yyvsp[(3) - (3)].TypeVal));  | 
 |     delete (yyvsp[(3) - (3)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 169: | 
 | #line 1523 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { // Nonempty unsized arr | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription()); | 
 |     const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (4)].TypeVal)->get()); | 
 |     if (ATy == 0) | 
 |       GEN_ERROR("Cannot make array constant with type: '" +  | 
 |                      (*(yyvsp[(1) - (4)].TypeVal))->getDescription() + "'"); | 
 |     const Type *ETy = ATy->getElementType(); | 
 |     int NumElements = ATy->getNumElements(); | 
 |  | 
 |     // Verify that we have the correct size... | 
 |     if (NumElements != -1 && NumElements != (int)(yyvsp[(3) - (4)].ConstVector)->size()) | 
 |       GEN_ERROR("Type mismatch: constant sized array initialized with " + | 
 |                      utostr((yyvsp[(3) - (4)].ConstVector)->size()) +  " arguments, but has size of " +  | 
 |                      itostr(NumElements) + ""); | 
 |  | 
 |     // Verify all elements are correct type! | 
 |     for (unsigned i = 0; i < (yyvsp[(3) - (4)].ConstVector)->size(); i++) { | 
 |       if (ETy != (*(yyvsp[(3) - (4)].ConstVector))[i]->getType()) | 
 |         GEN_ERROR("Element #" + utostr(i) + " is not of type '" +  | 
 |                        ETy->getDescription() +"' as required!\nIt is of type '"+ | 
 |                        (*(yyvsp[(3) - (4)].ConstVector))[i]->getType()->getDescription() + "'."); | 
 |     } | 
 |  | 
 |     (yyval.ConstVal) = ConstantArray::get(ATy, *(yyvsp[(3) - (4)].ConstVector)); | 
 |     delete (yyvsp[(1) - (4)].TypeVal); delete (yyvsp[(3) - (4)].ConstVector); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 170: | 
 | #line 1551 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription()); | 
 |     const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (3)].TypeVal)->get()); | 
 |     if (ATy == 0) | 
 |       GEN_ERROR("Cannot make array constant with type: '" +  | 
 |                      (*(yyvsp[(1) - (3)].TypeVal))->getDescription() + "'"); | 
 |  | 
 |     int NumElements = ATy->getNumElements(); | 
 |     if (NumElements != -1 && NumElements != 0)  | 
 |       GEN_ERROR("Type mismatch: constant sized array initialized with 0" | 
 |                      " arguments, but has size of " + itostr(NumElements) +""); | 
 |     (yyval.ConstVal) = ConstantArray::get(ATy, std::vector<Constant*>()); | 
 |     delete (yyvsp[(1) - (3)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 171: | 
 | #line 1567 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription()); | 
 |     const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (3)].TypeVal)->get()); | 
 |     if (ATy == 0) | 
 |       GEN_ERROR("Cannot make array constant with type: '" +  | 
 |                      (*(yyvsp[(1) - (3)].TypeVal))->getDescription() + "'"); | 
 |  | 
 |     int NumElements = ATy->getNumElements(); | 
 |     const Type *ETy = ATy->getElementType(); | 
 |     if (NumElements != -1 && NumElements != int((yyvsp[(3) - (3)].StrVal)->length())) | 
 |       GEN_ERROR("Can't build string constant of size " +  | 
 |                      itostr((int)((yyvsp[(3) - (3)].StrVal)->length())) + | 
 |                      " when array has size " + itostr(NumElements) + ""); | 
 |     std::vector<Constant*> Vals; | 
 |     if (ETy == Type::Int8Ty) { | 
 |       for (unsigned i = 0; i < (yyvsp[(3) - (3)].StrVal)->length(); ++i) | 
 |         Vals.push_back(ConstantInt::get(ETy, (*(yyvsp[(3) - (3)].StrVal))[i])); | 
 |     } else { | 
 |       delete (yyvsp[(3) - (3)].StrVal); | 
 |       GEN_ERROR("Cannot build string arrays of non byte sized elements"); | 
 |     } | 
 |     delete (yyvsp[(3) - (3)].StrVal); | 
 |     (yyval.ConstVal) = ConstantArray::get(ATy, Vals); | 
 |     delete (yyvsp[(1) - (3)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 172: | 
 | #line 1594 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { // Nonempty unsized arr | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription()); | 
 |     const VectorType *PTy = dyn_cast<VectorType>((yyvsp[(1) - (4)].TypeVal)->get()); | 
 |     if (PTy == 0) | 
 |       GEN_ERROR("Cannot make packed constant with type: '" +  | 
 |                      (*(yyvsp[(1) - (4)].TypeVal))->getDescription() + "'"); | 
 |     const Type *ETy = PTy->getElementType(); | 
 |     int NumElements = PTy->getNumElements(); | 
 |  | 
 |     // Verify that we have the correct size... | 
 |     if (NumElements != -1 && NumElements != (int)(yyvsp[(3) - (4)].ConstVector)->size()) | 
 |       GEN_ERROR("Type mismatch: constant sized packed initialized with " + | 
 |                      utostr((yyvsp[(3) - (4)].ConstVector)->size()) +  " arguments, but has size of " +  | 
 |                      itostr(NumElements) + ""); | 
 |  | 
 |     // Verify all elements are correct type! | 
 |     for (unsigned i = 0; i < (yyvsp[(3) - (4)].ConstVector)->size(); i++) { | 
 |       if (ETy != (*(yyvsp[(3) - (4)].ConstVector))[i]->getType()) | 
 |         GEN_ERROR("Element #" + utostr(i) + " is not of type '" +  | 
 |            ETy->getDescription() +"' as required!\nIt is of type '"+ | 
 |            (*(yyvsp[(3) - (4)].ConstVector))[i]->getType()->getDescription() + "'."); | 
 |     } | 
 |  | 
 |     (yyval.ConstVal) = ConstantVector::get(PTy, *(yyvsp[(3) - (4)].ConstVector)); | 
 |     delete (yyvsp[(1) - (4)].TypeVal); delete (yyvsp[(3) - (4)].ConstVector); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 173: | 
 | #line 1622 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (4)].TypeVal)->get()); | 
 |     if (STy == 0) | 
 |       GEN_ERROR("Cannot make struct constant with type: '" +  | 
 |                      (*(yyvsp[(1) - (4)].TypeVal))->getDescription() + "'"); | 
 |  | 
 |     if ((yyvsp[(3) - (4)].ConstVector)->size() != STy->getNumContainedTypes()) | 
 |       GEN_ERROR("Illegal number of initializers for structure type"); | 
 |  | 
 |     // Check to ensure that constants are compatible with the type initializer! | 
 |     for (unsigned i = 0, e = (yyvsp[(3) - (4)].ConstVector)->size(); i != e; ++i) | 
 |       if ((*(yyvsp[(3) - (4)].ConstVector))[i]->getType() != STy->getElementType(i)) | 
 |         GEN_ERROR("Expected type '" + | 
 |                        STy->getElementType(i)->getDescription() + | 
 |                        "' for element #" + utostr(i) + | 
 |                        " of structure initializer"); | 
 |  | 
 |     // Check to ensure that Type is not packed | 
 |     if (STy->isPacked()) | 
 |       GEN_ERROR("Unpacked Initializer to vector type '" + | 
 |                 STy->getDescription() + "'"); | 
 |  | 
 |     (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[(3) - (4)].ConstVector)); | 
 |     delete (yyvsp[(1) - (4)].TypeVal); delete (yyvsp[(3) - (4)].ConstVector); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 174: | 
 | #line 1648 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription()); | 
 |     const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (3)].TypeVal)->get()); | 
 |     if (STy == 0) | 
 |       GEN_ERROR("Cannot make struct constant with type: '" +  | 
 |                      (*(yyvsp[(1) - (3)].TypeVal))->getDescription() + "'"); | 
 |  | 
 |     if (STy->getNumContainedTypes() != 0) | 
 |       GEN_ERROR("Illegal number of initializers for structure type"); | 
 |  | 
 |     // Check to ensure that Type is not packed | 
 |     if (STy->isPacked()) | 
 |       GEN_ERROR("Unpacked Initializer to vector type '" + | 
 |                 STy->getDescription() + "'"); | 
 |  | 
 |     (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>()); | 
 |     delete (yyvsp[(1) - (3)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 175: | 
 | #line 1668 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (6)].TypeVal)->get()); | 
 |     if (STy == 0) | 
 |       GEN_ERROR("Cannot make struct constant with type: '" +  | 
 |                      (*(yyvsp[(1) - (6)].TypeVal))->getDescription() + "'"); | 
 |  | 
 |     if ((yyvsp[(4) - (6)].ConstVector)->size() != STy->getNumContainedTypes()) | 
 |       GEN_ERROR("Illegal number of initializers for structure type"); | 
 |  | 
 |     // Check to ensure that constants are compatible with the type initializer! | 
 |     for (unsigned i = 0, e = (yyvsp[(4) - (6)].ConstVector)->size(); i != e; ++i) | 
 |       if ((*(yyvsp[(4) - (6)].ConstVector))[i]->getType() != STy->getElementType(i)) | 
 |         GEN_ERROR("Expected type '" + | 
 |                        STy->getElementType(i)->getDescription() + | 
 |                        "' for element #" + utostr(i) + | 
 |                        " of structure initializer"); | 
 |  | 
 |     // Check to ensure that Type is packed | 
 |     if (!STy->isPacked()) | 
 |       GEN_ERROR("Vector initializer to non-vector type '" +  | 
 |                 STy->getDescription() + "'"); | 
 |  | 
 |     (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[(4) - (6)].ConstVector)); | 
 |     delete (yyvsp[(1) - (6)].TypeVal); delete (yyvsp[(4) - (6)].ConstVector); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 176: | 
 | #line 1694 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (5)].TypeVal))->getDescription()); | 
 |     const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (5)].TypeVal)->get()); | 
 |     if (STy == 0) | 
 |       GEN_ERROR("Cannot make struct constant with type: '" +  | 
 |                      (*(yyvsp[(1) - (5)].TypeVal))->getDescription() + "'"); | 
 |  | 
 |     if (STy->getNumContainedTypes() != 0) | 
 |       GEN_ERROR("Illegal number of initializers for structure type"); | 
 |  | 
 |     // Check to ensure that Type is packed | 
 |     if (!STy->isPacked()) | 
 |       GEN_ERROR("Vector initializer to non-vector type '" +  | 
 |                 STy->getDescription() + "'"); | 
 |  | 
 |     (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>()); | 
 |     delete (yyvsp[(1) - (5)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 177: | 
 | #line 1714 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); | 
 |     const PointerType *PTy = dyn_cast<PointerType>((yyvsp[(1) - (2)].TypeVal)->get()); | 
 |     if (PTy == 0) | 
 |       GEN_ERROR("Cannot make null pointer constant with type: '" +  | 
 |                      (*(yyvsp[(1) - (2)].TypeVal))->getDescription() + "'"); | 
 |  | 
 |     (yyval.ConstVal) = ConstantPointerNull::get(PTy); | 
 |     delete (yyvsp[(1) - (2)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 178: | 
 | #line 1726 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); | 
 |     (yyval.ConstVal) = UndefValue::get((yyvsp[(1) - (2)].TypeVal)->get()); | 
 |     delete (yyvsp[(1) - (2)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 179: | 
 | #line 1733 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); | 
 |     const PointerType *Ty = dyn_cast<PointerType>((yyvsp[(1) - (2)].TypeVal)->get()); | 
 |     if (Ty == 0) | 
 |       GEN_ERROR("Global const reference must be a pointer type " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); | 
 |  | 
 |     // ConstExprs can exist in the body of a function, thus creating | 
 |     // GlobalValues whenever they refer to a variable.  Because we are in | 
 |     // the context of a function, getExistingVal will search the functions | 
 |     // symbol table instead of the module symbol table for the global symbol, | 
 |     // which throws things all off.  To get around this, we just tell | 
 |     // getExistingVal that we are at global scope here. | 
 |     // | 
 |     Function *SavedCurFn = CurFun.CurrentFunction; | 
 |     CurFun.CurrentFunction = 0; | 
 |  | 
 |     Value *V = getExistingVal(Ty, (yyvsp[(2) - (2)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |  | 
 |     CurFun.CurrentFunction = SavedCurFn; | 
 |  | 
 |     // If this is an initializer for a constant pointer, which is referencing a | 
 |     // (currently) undefined variable, create a stub now that shall be replaced | 
 |     // in the future with the right type of variable. | 
 |     // | 
 |     if (V == 0) { | 
 |       assert(isa<PointerType>(Ty) && "Globals may only be used as pointers!"); | 
 |       const PointerType *PT = cast<PointerType>(Ty); | 
 |  | 
 |       // First check to see if the forward references value is already created! | 
 |       PerModuleInfo::GlobalRefsType::iterator I = | 
 |         CurModule.GlobalRefs.find(std::make_pair(PT, (yyvsp[(2) - (2)].ValIDVal))); | 
 |      | 
 |       if (I != CurModule.GlobalRefs.end()) { | 
 |         V = I->second;             // Placeholder already exists, use it... | 
 |         (yyvsp[(2) - (2)].ValIDVal).destroy(); | 
 |       } else { | 
 |         std::string Name; | 
 |         if ((yyvsp[(2) - (2)].ValIDVal).Type == ValID::GlobalName) | 
 |           Name = (yyvsp[(2) - (2)].ValIDVal).getName(); | 
 |         else if ((yyvsp[(2) - (2)].ValIDVal).Type != ValID::GlobalID) | 
 |           GEN_ERROR("Invalid reference to global"); | 
 |  | 
 |         // Create the forward referenced global. | 
 |         GlobalValue *GV; | 
 |         if (const FunctionType *FTy =  | 
 |                  dyn_cast<FunctionType>(PT->getElementType())) { | 
 |           GV = Function::Create(FTy, GlobalValue::ExternalWeakLinkage, Name, | 
 |                                 CurModule.CurrentModule); | 
 |         } else { | 
 |           GV = new GlobalVariable(PT->getElementType(), false, | 
 |                                   GlobalValue::ExternalWeakLinkage, 0, | 
 |                                   Name, CurModule.CurrentModule); | 
 |         } | 
 |  | 
 |         // Keep track of the fact that we have a forward ref to recycle it | 
 |         CurModule.GlobalRefs.insert(std::make_pair(std::make_pair(PT, (yyvsp[(2) - (2)].ValIDVal)), GV)); | 
 |         V = GV; | 
 |       } | 
 |     } | 
 |  | 
 |     (yyval.ConstVal) = cast<GlobalValue>(V); | 
 |     delete (yyvsp[(1) - (2)].TypeVal);            // Free the type handle | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 180: | 
 | #line 1799 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); | 
 |     if ((yyvsp[(1) - (2)].TypeVal)->get() != (yyvsp[(2) - (2)].ConstVal)->getType()) | 
 |       GEN_ERROR("Mismatched types for constant expression: " +  | 
 |         (*(yyvsp[(1) - (2)].TypeVal))->getDescription() + " and " + (yyvsp[(2) - (2)].ConstVal)->getType()->getDescription()); | 
 |     (yyval.ConstVal) = (yyvsp[(2) - (2)].ConstVal); | 
 |     delete (yyvsp[(1) - (2)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 181: | 
 | #line 1809 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); | 
 |     const Type *Ty = (yyvsp[(1) - (2)].TypeVal)->get(); | 
 |     if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty)) | 
 |       GEN_ERROR("Cannot create a null initialized value of this type"); | 
 |     (yyval.ConstVal) = Constant::getNullValue(Ty); | 
 |     delete (yyvsp[(1) - (2)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 182: | 
 | #line 1819 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {      // integral constants | 
 |     if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].SInt64Val))) | 
 |       GEN_ERROR("Constant value doesn't fit in type"); | 
 |     (yyval.ConstVal) = ConstantInt::get((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].SInt64Val), true); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 183: | 
 | #line 1825 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {      // arbitrary precision integer constants | 
 |     uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth(); | 
 |     if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) { | 
 |       GEN_ERROR("Constant value does not fit in type"); | 
 |     } | 
 |     (yyvsp[(2) - (2)].APIntVal)->sextOrTrunc(BitWidth); | 
 |     (yyval.ConstVal) = ConstantInt::get(*(yyvsp[(2) - (2)].APIntVal)); | 
 |     delete (yyvsp[(2) - (2)].APIntVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 184: | 
 | #line 1835 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {      // integral constants | 
 |     if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].UInt64Val))) | 
 |       GEN_ERROR("Constant value doesn't fit in type"); | 
 |     (yyval.ConstVal) = ConstantInt::get((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].UInt64Val), false); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 185: | 
 | #line 1841 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {      // arbitrary precision integer constants | 
 |     uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth(); | 
 |     if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) { | 
 |       GEN_ERROR("Constant value does not fit in type"); | 
 |     }  | 
 |     (yyvsp[(2) - (2)].APIntVal)->zextOrTrunc(BitWidth); | 
 |     (yyval.ConstVal) = ConstantInt::get(*(yyvsp[(2) - (2)].APIntVal)); | 
 |     delete (yyvsp[(2) - (2)].APIntVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 186: | 
 | #line 1851 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                      // Boolean constants | 
 |     assert(cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() == 1 && "Not Bool?"); | 
 |     (yyval.ConstVal) = ConstantInt::getTrue(); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 187: | 
 | #line 1856 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                     // Boolean constants | 
 |     assert(cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() == 1 && "Not Bool?"); | 
 |     (yyval.ConstVal) = ConstantInt::getFalse(); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 188: | 
 | #line 1861 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                   // Floating point constants | 
 |     if (!ConstantFP::isValueValidForType((yyvsp[(1) - (2)].PrimType), *(yyvsp[(2) - (2)].FPVal))) | 
 |       GEN_ERROR("Floating point constant invalid for type"); | 
 |     // Lexer has no type info, so builds all float and double FP constants  | 
 |     // as double.  Fix this here.  Long double is done right. | 
 |     if (&(yyvsp[(2) - (2)].FPVal)->getSemantics()==&APFloat::IEEEdouble && (yyvsp[(1) - (2)].PrimType)==Type::FloatTy) | 
 |       (yyvsp[(2) - (2)].FPVal)->convert(APFloat::IEEEsingle, APFloat::rmNearestTiesToEven); | 
 |     (yyval.ConstVal) = ConstantFP::get(*(yyvsp[(2) - (2)].FPVal)); | 
 |     delete (yyvsp[(2) - (2)].FPVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 189: | 
 | #line 1874 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (6)].TypeVal))->getDescription()); | 
 |     Constant *Val = (yyvsp[(3) - (6)].ConstVal); | 
 |     const Type *DestTy = (yyvsp[(5) - (6)].TypeVal)->get(); | 
 |     if (!CastInst::castIsValid((yyvsp[(1) - (6)].CastOpVal), (yyvsp[(3) - (6)].ConstVal), DestTy)) | 
 |       GEN_ERROR("invalid cast opcode for cast from '" + | 
 |                 Val->getType()->getDescription() + "' to '" + | 
 |                 DestTy->getDescription() + "'");  | 
 |     (yyval.ConstVal) = ConstantExpr::getCast((yyvsp[(1) - (6)].CastOpVal), (yyvsp[(3) - (6)].ConstVal), DestTy); | 
 |     delete (yyvsp[(5) - (6)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 190: | 
 | #line 1886 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!isa<PointerType>((yyvsp[(3) - (5)].ConstVal)->getType())) | 
 |       GEN_ERROR("GetElementPtr requires a pointer operand"); | 
 |  | 
 |     const Type *IdxTy = | 
 |       GetElementPtrInst::getIndexedType((yyvsp[(3) - (5)].ConstVal)->getType(), (yyvsp[(4) - (5)].ValueList)->begin(), (yyvsp[(4) - (5)].ValueList)->end(), | 
 |                                         true); | 
 |     if (!IdxTy) | 
 |       GEN_ERROR("Index list invalid for constant getelementptr"); | 
 |  | 
 |     SmallVector<Constant*, 8> IdxVec; | 
 |     for (unsigned i = 0, e = (yyvsp[(4) - (5)].ValueList)->size(); i != e; ++i) | 
 |       if (Constant *C = dyn_cast<Constant>((*(yyvsp[(4) - (5)].ValueList))[i])) | 
 |         IdxVec.push_back(C); | 
 |       else | 
 |         GEN_ERROR("Indices to constant getelementptr must be constants"); | 
 |  | 
 |     delete (yyvsp[(4) - (5)].ValueList); | 
 |  | 
 |     (yyval.ConstVal) = ConstantExpr::getGetElementPtr((yyvsp[(3) - (5)].ConstVal), &IdxVec[0], IdxVec.size()); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 191: | 
 | #line 1908 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if ((yyvsp[(3) - (8)].ConstVal)->getType() != Type::Int1Ty) | 
 |       GEN_ERROR("Select condition must be of boolean type"); | 
 |     if ((yyvsp[(5) - (8)].ConstVal)->getType() != (yyvsp[(7) - (8)].ConstVal)->getType()) | 
 |       GEN_ERROR("Select operand types must match"); | 
 |     (yyval.ConstVal) = ConstantExpr::getSelect((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 192: | 
 | #line 1916 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType()) | 
 |       GEN_ERROR("Binary operator types must match"); | 
 |     CHECK_FOR_ERROR; | 
 |     (yyval.ConstVal) = ConstantExpr::get((yyvsp[(1) - (6)].BinaryOpVal), (yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal)); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 193: | 
 | #line 1922 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType()) | 
 |       GEN_ERROR("Logical operator types must match"); | 
 |     if (!(yyvsp[(3) - (6)].ConstVal)->getType()->isInteger()) { | 
 |       if (Instruction::isShift((yyvsp[(1) - (6)].BinaryOpVal)) || !isa<VectorType>((yyvsp[(3) - (6)].ConstVal)->getType()) ||  | 
 |           !cast<VectorType>((yyvsp[(3) - (6)].ConstVal)->getType())->getElementType()->isInteger()) | 
 |         GEN_ERROR("Logical operator requires integral operands"); | 
 |     } | 
 |     (yyval.ConstVal) = ConstantExpr::get((yyvsp[(1) - (6)].BinaryOpVal), (yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 194: | 
 | #line 1933 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType()) | 
 |       GEN_ERROR("icmp operand types must match"); | 
 |     (yyval.ConstVal) = ConstantExpr::getICmp((yyvsp[(2) - (7)].IPredicate), (yyvsp[(4) - (7)].ConstVal), (yyvsp[(6) - (7)].ConstVal)); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 195: | 
 | #line 1938 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType()) | 
 |       GEN_ERROR("fcmp operand types must match"); | 
 |     (yyval.ConstVal) = ConstantExpr::getFCmp((yyvsp[(2) - (7)].FPredicate), (yyvsp[(4) - (7)].ConstVal), (yyvsp[(6) - (7)].ConstVal)); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 196: | 
 | #line 1943 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!ExtractElementInst::isValidOperands((yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal))) | 
 |       GEN_ERROR("Invalid extractelement operands"); | 
 |     (yyval.ConstVal) = ConstantExpr::getExtractElement((yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 197: | 
 | #line 1949 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!InsertElementInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal))) | 
 |       GEN_ERROR("Invalid insertelement operands"); | 
 |     (yyval.ConstVal) = ConstantExpr::getInsertElement((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 198: | 
 | #line 1955 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!ShuffleVectorInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal))) | 
 |       GEN_ERROR("Invalid shufflevector operands"); | 
 |     (yyval.ConstVal) = ConstantExpr::getShuffleVector((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 199: | 
 | #line 1964 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     ((yyval.ConstVector) = (yyvsp[(1) - (3)].ConstVector))->push_back((yyvsp[(3) - (3)].ConstVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 200: | 
 | #line 1968 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ConstVector) = new std::vector<Constant*>(); | 
 |     (yyval.ConstVector)->push_back((yyvsp[(1) - (1)].ConstVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 201: | 
 | #line 1976 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.BoolVal) = false; ;} | 
 |     break; | 
 |  | 
 |   case 202: | 
 | #line 1976 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.BoolVal) = true; ;} | 
 |     break; | 
 |  | 
 |   case 203: | 
 | #line 1979 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.BoolVal) = true; ;} | 
 |     break; | 
 |  | 
 |   case 204: | 
 | #line 1979 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.BoolVal) = false; ;} | 
 |     break; | 
 |  | 
 |   case 205: | 
 | #line 1982 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     const Type* VTy = (yyvsp[(1) - (2)].TypeVal)->get(); | 
 |     Value *V = getVal(VTy, (yyvsp[(2) - (2)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     GlobalValue* Aliasee = dyn_cast<GlobalValue>(V); | 
 |     if (!Aliasee) | 
 |       GEN_ERROR("Aliases can be created only to global values"); | 
 |  | 
 |     (yyval.ConstVal) = Aliasee; | 
 |     CHECK_FOR_ERROR | 
 |     delete (yyvsp[(1) - (2)].TypeVal); | 
 |    ;} | 
 |     break; | 
 |  | 
 |   case 206: | 
 | #line 1994 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     Constant *Val = (yyvsp[(3) - (6)].ConstVal); | 
 |     const Type *DestTy = (yyvsp[(5) - (6)].TypeVal)->get(); | 
 |     if (!CastInst::castIsValid((yyvsp[(1) - (6)].CastOpVal), (yyvsp[(3) - (6)].ConstVal), DestTy)) | 
 |       GEN_ERROR("invalid cast opcode for cast from '" + | 
 |                 Val->getType()->getDescription() + "' to '" + | 
 |                 DestTy->getDescription() + "'"); | 
 |      | 
 |     (yyval.ConstVal) = ConstantExpr::getCast((yyvsp[(1) - (6)].CastOpVal), (yyvsp[(3) - (6)].ConstVal), DestTy); | 
 |     CHECK_FOR_ERROR | 
 |     delete (yyvsp[(5) - (6)].TypeVal); | 
 |    ;} | 
 |     break; | 
 |  | 
 |   case 207: | 
 | #line 2015 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; | 
 |     CurModule.ModuleDone(); | 
 |     CHECK_FOR_ERROR; | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 208: | 
 | #line 2020 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; | 
 |     CurModule.ModuleDone(); | 
 |     CHECK_FOR_ERROR; | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 211: | 
 | #line 2033 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { CurFun.isDeclare = false; ;} | 
 |     break; | 
 |  | 
 |   case 212: | 
 | #line 2033 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     CurFun.FunctionDone(); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 213: | 
 | #line 2037 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { CurFun.isDeclare = true; ;} | 
 |     break; | 
 |  | 
 |   case 214: | 
 | #line 2037 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 215: | 
 | #line 2040 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 216: | 
 | #line 2043 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (3)].TypeVal))->getDescription()); | 
 |     // Eagerly resolve types.  This is not an optimization, this is a | 
 |     // requirement that is due to the fact that we could have this: | 
 |     // | 
 |     // %list = type { %list * } | 
 |     // %list = type { %list * }    ; repeated type decl | 
 |     // | 
 |     // If types are not resolved eagerly, then the two types will not be | 
 |     // determined to be the same type! | 
 |     // | 
 |     ResolveTypeTo((yyvsp[(1) - (3)].StrVal), *(yyvsp[(3) - (3)].TypeVal)); | 
 |  | 
 |     if (!setTypeName(*(yyvsp[(3) - (3)].TypeVal), (yyvsp[(1) - (3)].StrVal)) && !(yyvsp[(1) - (3)].StrVal)) { | 
 |       CHECK_FOR_ERROR | 
 |       // If this is a named type that is not a redefinition, add it to the slot | 
 |       // table. | 
 |       CurModule.Types.push_back(*(yyvsp[(3) - (3)].TypeVal)); | 
 |     } | 
 |  | 
 |     delete (yyvsp[(3) - (3)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 217: | 
 | #line 2067 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     ResolveTypeTo((yyvsp[(1) - (3)].StrVal), (yyvsp[(3) - (3)].PrimType)); | 
 |  | 
 |     if (!setTypeName((yyvsp[(3) - (3)].PrimType), (yyvsp[(1) - (3)].StrVal)) && !(yyvsp[(1) - (3)].StrVal)) { | 
 |       CHECK_FOR_ERROR | 
 |       // If this is a named type that is not a redefinition, add it to the slot | 
 |       // table. | 
 |       CurModule.Types.push_back((yyvsp[(3) - (3)].PrimType)); | 
 |     } | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 218: | 
 | #line 2079 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {  | 
 |     /* "Externally Visible" Linkage */ | 
 |     if ((yyvsp[(5) - (6)].ConstVal) == 0)  | 
 |       GEN_ERROR("Global value initializer is not a constant"); | 
 |     CurGV = ParseGlobalVariable((yyvsp[(1) - (6)].StrVal), GlobalValue::ExternalLinkage, | 
 |                                 (yyvsp[(2) - (6)].Visibility), (yyvsp[(4) - (6)].BoolVal), (yyvsp[(5) - (6)].ConstVal)->getType(), (yyvsp[(5) - (6)].ConstVal), (yyvsp[(3) - (6)].BoolVal), (yyvsp[(6) - (6)].UIntVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 219: | 
 | #line 2086 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     CurGV = 0; | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 220: | 
 | #line 2090 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if ((yyvsp[(6) - (7)].ConstVal) == 0)  | 
 |       GEN_ERROR("Global value initializer is not a constant"); | 
 |     CurGV = ParseGlobalVariable((yyvsp[(1) - (7)].StrVal), (yyvsp[(2) - (7)].Linkage), (yyvsp[(3) - (7)].Visibility), (yyvsp[(5) - (7)].BoolVal), (yyvsp[(6) - (7)].ConstVal)->getType(), (yyvsp[(6) - (7)].ConstVal), (yyvsp[(4) - (7)].BoolVal), (yyvsp[(7) - (7)].UIntVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 221: | 
 | #line 2095 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     CurGV = 0; | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 222: | 
 | #line 2099 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(6) - (7)].TypeVal))->getDescription()); | 
 |     CurGV = ParseGlobalVariable((yyvsp[(1) - (7)].StrVal), (yyvsp[(2) - (7)].Linkage), (yyvsp[(3) - (7)].Visibility), (yyvsp[(5) - (7)].BoolVal), *(yyvsp[(6) - (7)].TypeVal), 0, (yyvsp[(4) - (7)].BoolVal), (yyvsp[(7) - (7)].UIntVal)); | 
 |     CHECK_FOR_ERROR | 
 |     delete (yyvsp[(6) - (7)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 223: | 
 | #line 2105 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     CurGV = 0; | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 224: | 
 | #line 2109 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     std::string Name; | 
 |     if ((yyvsp[(1) - (5)].StrVal)) { | 
 |       Name = *(yyvsp[(1) - (5)].StrVal); | 
 |       delete (yyvsp[(1) - (5)].StrVal); | 
 |     } | 
 |     if (Name.empty()) | 
 |       GEN_ERROR("Alias name cannot be empty"); | 
 |      | 
 |     Constant* Aliasee = (yyvsp[(5) - (5)].ConstVal); | 
 |     if (Aliasee == 0) | 
 |       GEN_ERROR(std::string("Invalid aliasee for alias: ") + Name); | 
 |  | 
 |     GlobalAlias* GA = new GlobalAlias(Aliasee->getType(), (yyvsp[(4) - (5)].Linkage), Name, Aliasee, | 
 |                                       CurModule.CurrentModule); | 
 |     GA->setVisibility((yyvsp[(2) - (5)].Visibility)); | 
 |     InsertValue(GA, CurModule.Values); | 
 |      | 
 |      | 
 |     // If there was a forward reference of this alias, resolve it now. | 
 |      | 
 |     ValID ID; | 
 |     if (!Name.empty()) | 
 |       ID = ValID::createGlobalName(Name); | 
 |     else | 
 |       ID = ValID::createGlobalID(CurModule.Values.size()-1); | 
 |      | 
 |     if (GlobalValue *FWGV = | 
 |           CurModule.GetForwardRefForGlobal(GA->getType(), ID)) { | 
 |       // Replace uses of the fwdref with the actual alias. | 
 |       FWGV->replaceAllUsesWith(GA); | 
 |       if (GlobalVariable *GV = dyn_cast<GlobalVariable>(FWGV)) | 
 |         GV->eraseFromParent(); | 
 |       else | 
 |         cast<Function>(FWGV)->eraseFromParent(); | 
 |     } | 
 |     ID.destroy(); | 
 |      | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 225: | 
 | #line 2149 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {  | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 226: | 
 | #line 2152 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 227: | 
 | #line 2158 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |   const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); | 
 |   if (AsmSoFar.empty()) | 
 |     CurModule.CurrentModule->setModuleInlineAsm(*(yyvsp[(1) - (1)].StrVal)); | 
 |   else | 
 |     CurModule.CurrentModule->setModuleInlineAsm(AsmSoFar+"\n"+*(yyvsp[(1) - (1)].StrVal)); | 
 |   delete (yyvsp[(1) - (1)].StrVal); | 
 |   CHECK_FOR_ERROR | 
 | ;} | 
 |     break; | 
 |  | 
 |   case 228: | 
 | #line 2168 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     CurModule.CurrentModule->setTargetTriple(*(yyvsp[(3) - (3)].StrVal)); | 
 |     delete (yyvsp[(3) - (3)].StrVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 229: | 
 | #line 2172 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     CurModule.CurrentModule->setDataLayout(*(yyvsp[(3) - (3)].StrVal)); | 
 |     delete (yyvsp[(3) - (3)].StrVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 231: | 
 | #line 2179 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |           CurModule.CurrentModule->addLibrary(*(yyvsp[(3) - (3)].StrVal)); | 
 |           delete (yyvsp[(3) - (3)].StrVal); | 
 |           CHECK_FOR_ERROR | 
 |         ;} | 
 |     break; | 
 |  | 
 |   case 232: | 
 | #line 2184 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |           CurModule.CurrentModule->addLibrary(*(yyvsp[(1) - (1)].StrVal)); | 
 |           delete (yyvsp[(1) - (1)].StrVal); | 
 |           CHECK_FOR_ERROR | 
 |         ;} | 
 |     break; | 
 |  | 
 |   case 233: | 
 | #line 2189 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |           CHECK_FOR_ERROR | 
 |         ;} | 
 |     break; | 
 |  | 
 |   case 234: | 
 | #line 2198 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription()); | 
 |     if (*(yyvsp[(3) - (5)].TypeVal) == Type::VoidTy) | 
 |       GEN_ERROR("void typed arguments are invalid"); | 
 |     ArgListEntry E; E.Attrs = (yyvsp[(4) - (5)].ParamAttrs); E.Ty = (yyvsp[(3) - (5)].TypeVal); E.Name = (yyvsp[(5) - (5)].StrVal); | 
 |     (yyval.ArgList) = (yyvsp[(1) - (5)].ArgList); | 
 |     (yyvsp[(1) - (5)].ArgList)->push_back(E); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 235: | 
 | #line 2208 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription()); | 
 |     if (*(yyvsp[(1) - (3)].TypeVal) == Type::VoidTy) | 
 |       GEN_ERROR("void typed arguments are invalid"); | 
 |     ArgListEntry E; E.Attrs = (yyvsp[(2) - (3)].ParamAttrs); E.Ty = (yyvsp[(1) - (3)].TypeVal); E.Name = (yyvsp[(3) - (3)].StrVal); | 
 |     (yyval.ArgList) = new ArgListType; | 
 |     (yyval.ArgList)->push_back(E); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 236: | 
 | #line 2219 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ArgList) = (yyvsp[(1) - (1)].ArgList); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 237: | 
 | #line 2223 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ArgList) = (yyvsp[(1) - (3)].ArgList); | 
 |     struct ArgListEntry E; | 
 |     E.Ty = new PATypeHolder(Type::VoidTy); | 
 |     E.Name = 0; | 
 |     E.Attrs = ParamAttr::None; | 
 |     (yyval.ArgList)->push_back(E); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 238: | 
 | #line 2232 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ArgList) = new ArgListType; | 
 |     struct ArgListEntry E; | 
 |     E.Ty = new PATypeHolder(Type::VoidTy); | 
 |     E.Name = 0; | 
 |     E.Attrs = ParamAttr::None; | 
 |     (yyval.ArgList)->push_back(E); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 239: | 
 | #line 2241 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ArgList) = 0; | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 240: | 
 | #line 2247 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |   std::string FunctionName(*(yyvsp[(3) - (10)].StrVal)); | 
 |   delete (yyvsp[(3) - (10)].StrVal);  // Free strdup'd memory! | 
 |    | 
 |   // Check the function result for abstractness if this is a define. We should | 
 |   // have no abstract types at this point | 
 |   if (!CurFun.isDeclare && CurModule.TypeIsUnresolved((yyvsp[(2) - (10)].TypeVal))) | 
 |     GEN_ERROR("Reference to abstract result: "+ (yyvsp[(2) - (10)].TypeVal)->get()->getDescription()); | 
 |  | 
 |   if (!FunctionType::isValidReturnType(*(yyvsp[(2) - (10)].TypeVal))) | 
 |     GEN_ERROR("Invalid result type for LLVM function"); | 
 |      | 
 |   std::vector<const Type*> ParamTypeList; | 
 |   SmallVector<ParamAttrsWithIndex, 8> Attrs; | 
 |   if ((yyvsp[(7) - (10)].ParamAttrs) != ParamAttr::None) | 
 |     Attrs.push_back(ParamAttrsWithIndex::get(0, (yyvsp[(7) - (10)].ParamAttrs))); | 
 |   if ((yyvsp[(5) - (10)].ArgList)) {   // If there are arguments... | 
 |     unsigned index = 1; | 
 |     for (ArgListType::iterator I = (yyvsp[(5) - (10)].ArgList)->begin(); I != (yyvsp[(5) - (10)].ArgList)->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 && I->Attrs != ParamAttr::None) | 
 |         Attrs.push_back(ParamAttrsWithIndex::get(index, I->Attrs)); | 
 |     } | 
 |   } | 
 |  | 
 |   bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy; | 
 |   if (isVarArg) ParamTypeList.pop_back(); | 
 |  | 
 |   PAListPtr PAL; | 
 |   if (!Attrs.empty()) | 
 |     PAL = PAListPtr::get(Attrs.begin(), Attrs.end()); | 
 |  | 
 |   FunctionType *FT = FunctionType::get(*(yyvsp[(2) - (10)].TypeVal), ParamTypeList, isVarArg); | 
 |   const PointerType *PFT = PointerType::getUnqual(FT); | 
 |   delete (yyvsp[(2) - (10)].TypeVal); | 
 |  | 
 |   ValID ID; | 
 |   if (!FunctionName.empty()) { | 
 |     ID = ValID::createGlobalName((char*)FunctionName.c_str()); | 
 |   } else { | 
 |     ID = ValID::createGlobalID(CurModule.Values.size()); | 
 |   } | 
 |  | 
 |   Function *Fn = 0; | 
 |   // See if this function was forward referenced.  If so, recycle the object. | 
 |   if (GlobalValue *FWRef = CurModule.GetForwardRefForGlobal(PFT, ID)) { | 
 |     // Move the function to the end of the list, from whereever it was  | 
 |     // previously inserted. | 
 |     Fn = cast<Function>(FWRef); | 
 |     assert(Fn->getParamAttrs().isEmpty() && | 
 |            "Forward reference has parameter attributes!"); | 
 |     CurModule.CurrentModule->getFunctionList().remove(Fn); | 
 |     CurModule.CurrentModule->getFunctionList().push_back(Fn); | 
 |   } else if (!FunctionName.empty() &&     // Merge with an earlier prototype? | 
 |              (Fn = CurModule.CurrentModule->getFunction(FunctionName))) { | 
 |     if (Fn->getFunctionType() != FT ) { | 
 |       // The existing function doesn't have the same type. This is an overload | 
 |       // error. | 
 |       GEN_ERROR("Overload of function '" + FunctionName + "' not permitted."); | 
 |     } else if (Fn->getParamAttrs() != PAL) { | 
 |       // The existing function doesn't have the same parameter attributes. | 
 |       // This is an overload error. | 
 |       GEN_ERROR("Overload of function '" + FunctionName + "' not permitted."); | 
 |     } else if (!CurFun.isDeclare && !Fn->isDeclaration()) { | 
 |       // Neither the existing or the current function is a declaration and they | 
 |       // have the same name and same type. Clearly this is a redefinition. | 
 |       GEN_ERROR("Redefinition of function '" + FunctionName + "'"); | 
 |     } else if (Fn->isDeclaration()) { | 
 |       // Make sure to strip off any argument names so we can't get conflicts. | 
 |       for (Function::arg_iterator AI = Fn->arg_begin(), AE = Fn->arg_end(); | 
 |            AI != AE; ++AI) | 
 |         AI->setName(""); | 
 |     } | 
 |   } else  {  // Not already defined? | 
 |     Fn = Function::Create(FT, GlobalValue::ExternalWeakLinkage, FunctionName, | 
 |                           CurModule.CurrentModule); | 
 |     InsertValue(Fn, CurModule.Values); | 
 |   } | 
 |  | 
 |   CurFun.FunctionStart(Fn); | 
 |  | 
 |   if (CurFun.isDeclare) { | 
 |     // If we have declaration, always overwrite linkage.  This will allow us to | 
 |     // correctly handle cases, when pointer to function is passed as argument to | 
 |     // another function. | 
 |     Fn->setLinkage(CurFun.Linkage); | 
 |     Fn->setVisibility(CurFun.Visibility); | 
 |   } | 
 |   Fn->setCallingConv((yyvsp[(1) - (10)].UIntVal)); | 
 |   Fn->setParamAttrs(PAL); | 
 |   Fn->setAlignment((yyvsp[(9) - (10)].UIntVal)); | 
 |   if ((yyvsp[(8) - (10)].StrVal)) { | 
 |     Fn->setSection(*(yyvsp[(8) - (10)].StrVal)); | 
 |     delete (yyvsp[(8) - (10)].StrVal); | 
 |   } | 
 |   if ((yyvsp[(10) - (10)].StrVal)) { | 
 |     Fn->setCollector((yyvsp[(10) - (10)].StrVal)->c_str()); | 
 |     delete (yyvsp[(10) - (10)].StrVal); | 
 |   } | 
 |  | 
 |   // Add all of the arguments we parsed to the function... | 
 |   if ((yyvsp[(5) - (10)].ArgList)) {                     // Is null if empty... | 
 |     if (isVarArg) {  // Nuke the last entry | 
 |       assert((yyvsp[(5) - (10)].ArgList)->back().Ty->get() == Type::VoidTy && (yyvsp[(5) - (10)].ArgList)->back().Name == 0 && | 
 |              "Not a varargs marker!"); | 
 |       delete (yyvsp[(5) - (10)].ArgList)->back().Ty; | 
 |       (yyvsp[(5) - (10)].ArgList)->pop_back();  // Delete the last entry | 
 |     } | 
 |     Function::arg_iterator ArgIt = Fn->arg_begin(); | 
 |     Function::arg_iterator ArgEnd = Fn->arg_end(); | 
 |     unsigned Idx = 1; | 
 |     for (ArgListType::iterator I = (yyvsp[(5) - (10)].ArgList)->begin();  | 
 |          I != (yyvsp[(5) - (10)].ArgList)->end() && ArgIt != ArgEnd; ++I, ++ArgIt) { | 
 |       delete I->Ty;                          // Delete the typeholder... | 
 |       setValueName(ArgIt, I->Name);       // Insert arg into symtab... | 
 |       CHECK_FOR_ERROR | 
 |       InsertValue(ArgIt); | 
 |       Idx++; | 
 |     } | 
 |  | 
 |     delete (yyvsp[(5) - (10)].ArgList);                     // We're now done with the argument list | 
 |   } | 
 |   CHECK_FOR_ERROR | 
 | ;} | 
 |     break; | 
 |  | 
 |   case 243: | 
 | #line 2377 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |   (yyval.FunctionVal) = CurFun.CurrentFunction; | 
 |  | 
 |   // Make sure that we keep track of the linkage type even if there was a | 
 |   // previous "declare". | 
 |   (yyval.FunctionVal)->setLinkage((yyvsp[(1) - (4)].Linkage)); | 
 |   (yyval.FunctionVal)->setVisibility((yyvsp[(2) - (4)].Visibility)); | 
 | ;} | 
 |     break; | 
 |  | 
 |   case 246: | 
 | #line 2388 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |   (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal); | 
 |   CHECK_FOR_ERROR | 
 | ;} | 
 |     break; | 
 |  | 
 |   case 247: | 
 | #line 2393 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     CurFun.CurrentFunction->setLinkage((yyvsp[(1) - (3)].Linkage)); | 
 |     CurFun.CurrentFunction->setVisibility((yyvsp[(2) - (3)].Visibility)); | 
 |     (yyval.FunctionVal) = CurFun.CurrentFunction; | 
 |     CurFun.FunctionDone(); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 248: | 
 | #line 2405 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.BoolVal) = false; | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 249: | 
 | #line 2409 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.BoolVal) = true; | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 250: | 
 | #line 2414 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {    // A reference to a direct constant | 
 |     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SInt64Val)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 251: | 
 | #line 2418 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].UInt64Val)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 252: | 
 | #line 2422 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                     // Perhaps it's an FP constant? | 
 |     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].FPVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 253: | 
 | #line 2426 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue()); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 254: | 
 | #line 2430 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse()); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 255: | 
 | #line 2434 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ValIDVal) = ValID::createNull(); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 256: | 
 | #line 2438 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ValIDVal) = ValID::createUndef(); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 257: | 
 | #line 2442 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {     // A vector zero constant. | 
 |     (yyval.ValIDVal) = ValID::createZeroInit(); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 258: | 
 | #line 2446 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { // Nonempty unsized packed vector | 
 |     const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0]->getType(); | 
 |     int NumElements = (yyvsp[(2) - (3)].ConstVector)->size();  | 
 |      | 
 |     VectorType* pt = VectorType::get(ETy, NumElements); | 
 |     PATypeHolder* PTy = new PATypeHolder( | 
 |                                          HandleUpRefs( | 
 |                                             VectorType::get( | 
 |                                                 ETy,  | 
 |                                                 NumElements) | 
 |                                             ) | 
 |                                          ); | 
 |      | 
 |     // Verify all elements are correct type! | 
 |     for (unsigned i = 0; i < (yyvsp[(2) - (3)].ConstVector)->size(); i++) { | 
 |       if (ETy != (*(yyvsp[(2) - (3)].ConstVector))[i]->getType()) | 
 |         GEN_ERROR("Element #" + utostr(i) + " is not of type '" +  | 
 |                      ETy->getDescription() +"' as required!\nIt is of type '" + | 
 |                      (*(yyvsp[(2) - (3)].ConstVector))[i]->getType()->getDescription() + "'."); | 
 |     } | 
 |  | 
 |     (yyval.ValIDVal) = ValID::create(ConstantVector::get(pt, *(yyvsp[(2) - (3)].ConstVector))); | 
 |     delete PTy; delete (yyvsp[(2) - (3)].ConstVector); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 259: | 
 | #line 2471 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].ConstVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 260: | 
 | #line 2475 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ValIDVal) = ValID::createInlineAsm(*(yyvsp[(3) - (5)].StrVal), *(yyvsp[(5) - (5)].StrVal), (yyvsp[(2) - (5)].BoolVal)); | 
 |     delete (yyvsp[(3) - (5)].StrVal); | 
 |     delete (yyvsp[(5) - (5)].StrVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 261: | 
 | #line 2485 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {  // Is it an integer reference...? | 
 |     (yyval.ValIDVal) = ValID::createLocalID((yyvsp[(1) - (1)].UIntVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 262: | 
 | #line 2489 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ValIDVal) = ValID::createGlobalID((yyvsp[(1) - (1)].UIntVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 263: | 
 | #line 2493 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                   // Is it a named reference...? | 
 |     (yyval.ValIDVal) = ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal)); | 
 |     delete (yyvsp[(1) - (1)].StrVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 264: | 
 | #line 2498 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                   // Is it a named reference...? | 
 |     (yyval.ValIDVal) = ValID::createGlobalName(*(yyvsp[(1) - (1)].StrVal)); | 
 |     delete (yyvsp[(1) - (1)].StrVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 267: | 
 | #line 2511 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); | 
 |     (yyval.ValueVal) = getVal(*(yyvsp[(1) - (2)].TypeVal), (yyvsp[(2) - (2)].ValIDVal));  | 
 |     delete (yyvsp[(1) - (2)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 268: | 
 | #line 2520 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ValueList) = new std::vector<Value *>(); | 
 |     (yyval.ValueList)->push_back((yyvsp[(1) - (1)].ValueVal));  | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 269: | 
 | #line 2525 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     ((yyval.ValueList)=(yyvsp[(1) - (3)].ValueList))->push_back((yyvsp[(3) - (3)].ValueVal));  | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 270: | 
 | #line 2530 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 271: | 
 | #line 2534 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { // Do not allow functions with 0 basic blocks    | 
 |     (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 272: | 
 | #line 2543 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     setValueName((yyvsp[(3) - (3)].TermInstVal), (yyvsp[(2) - (3)].StrVal)); | 
 |     CHECK_FOR_ERROR | 
 |     InsertValue((yyvsp[(3) - (3)].TermInstVal)); | 
 |     (yyvsp[(1) - (3)].BasicBlockVal)->getInstList().push_back((yyvsp[(3) - (3)].TermInstVal)); | 
 |     (yyval.BasicBlockVal) = (yyvsp[(1) - (3)].BasicBlockVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 273: | 
 | #line 2552 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[(2) - (2)].InstVal))) | 
 |       if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0))) | 
 |         if (CI2->getParent() == 0) | 
 |           (yyvsp[(1) - (2)].BasicBlockVal)->getInstList().push_back(CI2); | 
 |     (yyvsp[(1) - (2)].BasicBlockVal)->getInstList().push_back((yyvsp[(2) - (2)].InstVal)); | 
 |     (yyval.BasicBlockVal) = (yyvsp[(1) - (2)].BasicBlockVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 274: | 
 | #line 2561 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {          // Empty space between instruction lists | 
 |     (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalID(CurFun.NextValNum), 0); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 275: | 
 | #line 2565 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {   // Only the unwind to block | 
 |     (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalID(CurFun.NextValNum), getBBVal((yyvsp[(3) - (3)].ValIDVal))); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 276: | 
 | #line 2569 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {             // Labelled (named) basic block | 
 |     (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal)), 0); | 
 |     delete (yyvsp[(1) - (1)].StrVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 277: | 
 | #line 2574 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalName(*(yyvsp[(1) - (4)].StrVal)), getBBVal((yyvsp[(4) - (4)].ValIDVal))); | 
 |     delete (yyvsp[(1) - (4)].StrVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 278: | 
 | #line 2581 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { // Return with a result... | 
 |     ValueList &VL = *(yyvsp[(2) - (2)].ValueList); | 
 |     assert(!VL.empty() && "Invalid ret operands!"); | 
 |     (yyval.TermInstVal) = ReturnInst::Create(&VL[0], VL.size()); | 
 |     delete (yyvsp[(2) - (2)].ValueList); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 279: | 
 | #line 2588 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                                    // Return with no result... | 
 |     (yyval.TermInstVal) = ReturnInst::Create(); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 280: | 
 | #line 2592 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {                           // Unconditional Branch... | 
 |     BasicBlock* tmpBB = getBBVal((yyvsp[(3) - (3)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.TermInstVal) = BranchInst::Create(tmpBB); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 281: | 
 | #line 2597 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {   | 
 |     assert(cast<IntegerType>((yyvsp[(2) - (9)].PrimType))->getBitWidth() == 1 && "Not Bool?"); | 
 |     BasicBlock* tmpBBA = getBBVal((yyvsp[(6) - (9)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     BasicBlock* tmpBBB = getBBVal((yyvsp[(9) - (9)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     Value* tmpVal = getVal(Type::Int1Ty, (yyvsp[(3) - (9)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.TermInstVal) = BranchInst::Create(tmpBBA, tmpBBB, tmpVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 282: | 
 | #line 2607 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     Value* tmpVal = getVal((yyvsp[(2) - (9)].PrimType), (yyvsp[(3) - (9)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (9)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     SwitchInst *S = SwitchInst::Create(tmpVal, tmpBB, (yyvsp[(8) - (9)].JumpTable)->size()); | 
 |     (yyval.TermInstVal) = S; | 
 |  | 
 |     std::vector<std::pair<Constant*,BasicBlock*> >::iterator I = (yyvsp[(8) - (9)].JumpTable)->begin(), | 
 |       E = (yyvsp[(8) - (9)].JumpTable)->end(); | 
 |     for (; I != E; ++I) { | 
 |       if (ConstantInt *CI = dyn_cast<ConstantInt>(I->first)) | 
 |           S->addCase(CI, I->second); | 
 |       else | 
 |         GEN_ERROR("Switch case is constant, but not a simple integer"); | 
 |     } | 
 |     delete (yyvsp[(8) - (9)].JumpTable); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 283: | 
 | #line 2626 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     Value* tmpVal = getVal((yyvsp[(2) - (8)].PrimType), (yyvsp[(3) - (8)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (8)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     SwitchInst *S = SwitchInst::Create(tmpVal, tmpBB, 0); | 
 |     (yyval.TermInstVal) = S; | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 284: | 
 | #line 2636 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |  | 
 |     // Handle the short syntax | 
 |     const PointerType *PFTy = 0; | 
 |     const FunctionType *Ty = 0; | 
 |     if (!(PFTy = dyn_cast<PointerType>((yyvsp[(3) - (14)].TypeVal)->get())) || | 
 |         !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) { | 
 |       // Pull out the types of all of the arguments... | 
 |       std::vector<const Type*> ParamTypes; | 
 |       ParamList::iterator I = (yyvsp[(6) - (14)].ParamList)->begin(), E = (yyvsp[(6) - (14)].ParamList)->end(); | 
 |       for (; I != E; ++I) { | 
 |         const Type *Ty = I->Val->getType(); | 
 |         if (Ty == Type::VoidTy) | 
 |           GEN_ERROR("Short call syntax cannot be used with varargs"); | 
 |         ParamTypes.push_back(Ty); | 
 |       } | 
 |        | 
 |       if (!FunctionType::isValidReturnType(*(yyvsp[(3) - (14)].TypeVal))) | 
 |         GEN_ERROR("Invalid result type for LLVM function"); | 
 |  | 
 |       Ty = FunctionType::get((yyvsp[(3) - (14)].TypeVal)->get(), ParamTypes, false); | 
 |       PFTy = PointerType::getUnqual(Ty); | 
 |     } | 
 |  | 
 |     delete (yyvsp[(3) - (14)].TypeVal); | 
 |  | 
 |     Value *V = getVal(PFTy, (yyvsp[(4) - (14)].ValIDVal));   // Get the function we're calling... | 
 |     CHECK_FOR_ERROR | 
 |     BasicBlock *Normal = getBBVal((yyvsp[(11) - (14)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     BasicBlock *Except = getBBVal((yyvsp[(14) - (14)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |  | 
 |     SmallVector<ParamAttrsWithIndex, 8> Attrs; | 
 |     if ((yyvsp[(8) - (14)].ParamAttrs) != ParamAttr::None) | 
 |       Attrs.push_back(ParamAttrsWithIndex::get(0, (yyvsp[(8) - (14)].ParamAttrs))); | 
 |  | 
 |     // Check the arguments | 
 |     ValueList Args; | 
 |     if ((yyvsp[(6) - (14)].ParamList)->empty()) {                                   // Has no arguments? | 
 |       // Make sure no arguments is a good thing! | 
 |       if (Ty->getNumParams() != 0) | 
 |         GEN_ERROR("No arguments passed to a function that " | 
 |                        "expects arguments"); | 
 |     } else {                                     // Has arguments? | 
 |       // Loop through FunctionType's arguments and ensure they are specified | 
 |       // correctly! | 
 |       FunctionType::param_iterator I = Ty->param_begin(); | 
 |       FunctionType::param_iterator E = Ty->param_end(); | 
 |       ParamList::iterator ArgI = (yyvsp[(6) - (14)].ParamList)->begin(), ArgE = (yyvsp[(6) - (14)].ParamList)->end(); | 
 |       unsigned index = 1; | 
 |  | 
 |       for (; ArgI != ArgE && I != E; ++ArgI, ++I, ++index) { | 
 |         if (ArgI->Val->getType() != *I) | 
 |           GEN_ERROR("Parameter " + ArgI->Val->getName()+ " is not of type '" + | 
 |                          (*I)->getDescription() + "'"); | 
 |         Args.push_back(ArgI->Val); | 
 |         if (ArgI->Attrs != ParamAttr::None) | 
 |           Attrs.push_back(ParamAttrsWithIndex::get(index, ArgI->Attrs)); | 
 |       } | 
 |  | 
 |       if (Ty->isVarArg()) { | 
 |         if (I == E) | 
 |           for (; ArgI != ArgE; ++ArgI, ++index) { | 
 |             Args.push_back(ArgI->Val); // push the remaining varargs | 
 |             if (ArgI->Attrs != ParamAttr::None) | 
 |               Attrs.push_back(ParamAttrsWithIndex::get(index, ArgI->Attrs)); | 
 |           } | 
 |       } else if (I != E || ArgI != ArgE) | 
 |         GEN_ERROR("Invalid number of parameters detected"); | 
 |     } | 
 |  | 
 |     PAListPtr PAL; | 
 |     if (!Attrs.empty()) | 
 |       PAL = PAListPtr::get(Attrs.begin(), Attrs.end()); | 
 |  | 
 |     // Create the InvokeInst | 
 |     InvokeInst *II = InvokeInst::Create(V, Normal, Except, Args.begin(),Args.end()); | 
 |     II->setCallingConv((yyvsp[(2) - (14)].UIntVal)); | 
 |     II->setParamAttrs(PAL); | 
 |     (yyval.TermInstVal) = II; | 
 |     delete (yyvsp[(6) - (14)].ParamList); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 285: | 
 | #line 2720 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.TermInstVal) = new UnwindInst(); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 286: | 
 | #line 2724 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.TermInstVal) = new UnreachableInst(); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 287: | 
 | #line 2731 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.JumpTable) = (yyvsp[(1) - (6)].JumpTable); | 
 |     Constant *V = cast<Constant>(getExistingVal((yyvsp[(2) - (6)].PrimType), (yyvsp[(3) - (6)].ValIDVal))); | 
 |     CHECK_FOR_ERROR | 
 |     if (V == 0) | 
 |       GEN_ERROR("May only switch on a constant pool value"); | 
 |  | 
 |     BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (6)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB)); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 288: | 
 | #line 2742 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >(); | 
 |     Constant *V = cast<Constant>(getExistingVal((yyvsp[(1) - (5)].PrimType), (yyvsp[(2) - (5)].ValIDVal))); | 
 |     CHECK_FOR_ERROR | 
 |  | 
 |     if (V == 0) | 
 |       GEN_ERROR("May only switch on a constant pool value"); | 
 |  | 
 |     BasicBlock* tmpBB = getBBVal((yyvsp[(5) - (5)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB));  | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 289: | 
 | #line 2755 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     // Is this definition named?? if so, assign the name... | 
 |     setValueName((yyvsp[(2) - (2)].InstVal), (yyvsp[(1) - (2)].StrVal)); | 
 |     CHECK_FOR_ERROR | 
 |     InsertValue((yyvsp[(2) - (2)].InstVal)); | 
 |     (yyval.InstVal) = (yyvsp[(2) - (2)].InstVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 290: | 
 | #line 2765 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     {    // Used for PHI nodes | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (6)].TypeVal))->getDescription()); | 
 |     (yyval.PHIList) = new std::list<std::pair<Value*, BasicBlock*> >(); | 
 |     Value* tmpVal = getVal(*(yyvsp[(1) - (6)].TypeVal), (yyvsp[(3) - (6)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     BasicBlock* tmpBB = getBBVal((yyvsp[(5) - (6)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.PHIList)->push_back(std::make_pair(tmpVal, tmpBB)); | 
 |     delete (yyvsp[(1) - (6)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 291: | 
 | #line 2776 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.PHIList) = (yyvsp[(1) - (7)].PHIList); | 
 |     Value* tmpVal = getVal((yyvsp[(1) - (7)].PHIList)->front().first->getType(), (yyvsp[(4) - (7)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (7)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyvsp[(1) - (7)].PHIList)->push_back(std::make_pair(tmpVal, tmpBB)); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 292: | 
 | #line 2786 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0 | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription()); | 
 |     // Used for call and invoke instructions | 
 |     (yyval.ParamList) = new ParamList(); | 
 |     ParamListEntry E; E.Attrs = (yyvsp[(2) - (4)].ParamAttrs) | (yyvsp[(4) - (4)].ParamAttrs); E.Val = getVal((yyvsp[(1) - (4)].TypeVal)->get(), (yyvsp[(3) - (4)].ValIDVal)); | 
 |     (yyval.ParamList)->push_back(E); | 
 |     delete (yyvsp[(1) - (4)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 293: | 
 | #line 2797 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0 | 
 |     // Labels are only valid in ASMs | 
 |     (yyval.ParamList) = new ParamList(); | 
 |     ParamListEntry E; E.Attrs = (yyvsp[(2) - (4)].ParamAttrs) | (yyvsp[(4) - (4)].ParamAttrs); E.Val = getBBVal((yyvsp[(3) - (4)].ValIDVal)); | 
 |     (yyval.ParamList)->push_back(E); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 294: | 
 | #line 2805 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0 | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription()); | 
 |     (yyval.ParamList) = (yyvsp[(1) - (6)].ParamList); | 
 |     ParamListEntry E; E.Attrs = (yyvsp[(4) - (6)].ParamAttrs) | (yyvsp[(6) - (6)].ParamAttrs); E.Val = getVal((yyvsp[(3) - (6)].TypeVal)->get(), (yyvsp[(5) - (6)].ValIDVal)); | 
 |     (yyval.ParamList)->push_back(E); | 
 |     delete (yyvsp[(3) - (6)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 295: | 
 | #line 2815 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0 | 
 |     (yyval.ParamList) = (yyvsp[(1) - (6)].ParamList); | 
 |     ParamListEntry E; E.Attrs = (yyvsp[(4) - (6)].ParamAttrs) | (yyvsp[(6) - (6)].ParamAttrs); E.Val = getBBVal((yyvsp[(5) - (6)].ValIDVal)); | 
 |     (yyval.ParamList)->push_back(E); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 296: | 
 | #line 2822 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ParamList) = new ParamList(); ;} | 
 |     break; | 
 |  | 
 |   case 297: | 
 | #line 2825 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { (yyval.ValueList) = new std::vector<Value*>(); ;} | 
 |     break; | 
 |  | 
 |   case 298: | 
 | #line 2826 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.ValueList) = (yyvsp[(1) - (3)].ValueList); | 
 |     (yyval.ValueList)->push_back((yyvsp[(3) - (3)].ValueVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 299: | 
 | #line 2833 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.BoolVal) = true; | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 300: | 
 | #line 2837 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.BoolVal) = false; | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 301: | 
 | #line 2842 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription()); | 
 |     if (!(*(yyvsp[(2) - (5)].TypeVal))->isInteger() && !(*(yyvsp[(2) - (5)].TypeVal))->isFloatingPoint() &&  | 
 |         !isa<VectorType>((*(yyvsp[(2) - (5)].TypeVal)).get())) | 
 |       GEN_ERROR( | 
 |         "Arithmetic operator requires integer, FP, or packed operands"); | 
 |     Value* val1 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(3) - (5)].ValIDVal));  | 
 |     CHECK_FOR_ERROR | 
 |     Value* val2 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(5) - (5)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.InstVal) = BinaryOperator::create((yyvsp[(1) - (5)].BinaryOpVal), val1, val2); | 
 |     if ((yyval.InstVal) == 0) | 
 |       GEN_ERROR("binary operator returned null"); | 
 |     delete (yyvsp[(2) - (5)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 302: | 
 | #line 2858 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription()); | 
 |     if (!(*(yyvsp[(2) - (5)].TypeVal))->isInteger()) { | 
 |       if (Instruction::isShift((yyvsp[(1) - (5)].BinaryOpVal)) || !isa<VectorType>((yyvsp[(2) - (5)].TypeVal)->get()) || | 
 |           !cast<VectorType>((yyvsp[(2) - (5)].TypeVal)->get())->getElementType()->isInteger()) | 
 |         GEN_ERROR("Logical operator requires integral operands"); | 
 |     } | 
 |     Value* tmpVal1 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(3) - (5)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     Value* tmpVal2 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(5) - (5)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.InstVal) = BinaryOperator::create((yyvsp[(1) - (5)].BinaryOpVal), tmpVal1, tmpVal2); | 
 |     if ((yyval.InstVal) == 0) | 
 |       GEN_ERROR("binary operator returned null"); | 
 |     delete (yyvsp[(2) - (5)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 303: | 
 | #line 2875 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription()); | 
 |     if (isa<VectorType>((*(yyvsp[(3) - (6)].TypeVal)).get())) | 
 |       GEN_ERROR("Vector types not supported by icmp instruction"); | 
 |     Value* tmpVal1 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(4) - (6)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2); | 
 |     if ((yyval.InstVal) == 0) | 
 |       GEN_ERROR("icmp operator returned null"); | 
 |     delete (yyvsp[(3) - (6)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 304: | 
 | #line 2889 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription()); | 
 |     if (isa<VectorType>((*(yyvsp[(3) - (6)].TypeVal)).get())) | 
 |       GEN_ERROR("Vector types not supported by fcmp instruction"); | 
 |     Value* tmpVal1 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(4) - (6)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2); | 
 |     if ((yyval.InstVal) == 0) | 
 |       GEN_ERROR("fcmp operator returned null"); | 
 |     delete (yyvsp[(3) - (6)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 305: | 
 | #line 2903 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription()); | 
 |     Value* Val = (yyvsp[(2) - (4)].ValueVal); | 
 |     const Type* DestTy = (yyvsp[(4) - (4)].TypeVal)->get(); | 
 |     if (!CastInst::castIsValid((yyvsp[(1) - (4)].CastOpVal), Val, DestTy)) | 
 |       GEN_ERROR("invalid cast opcode for cast from '" + | 
 |                 Val->getType()->getDescription() + "' to '" + | 
 |                 DestTy->getDescription() + "'");  | 
 |     (yyval.InstVal) = CastInst::create((yyvsp[(1) - (4)].CastOpVal), Val, DestTy); | 
 |     delete (yyvsp[(4) - (4)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 306: | 
 | #line 2915 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if ((yyvsp[(2) - (6)].ValueVal)->getType() != Type::Int1Ty) | 
 |       GEN_ERROR("select condition must be boolean"); | 
 |     if ((yyvsp[(4) - (6)].ValueVal)->getType() != (yyvsp[(6) - (6)].ValueVal)->getType()) | 
 |       GEN_ERROR("select value types should match"); | 
 |     (yyval.InstVal) = SelectInst::Create((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 307: | 
 | #line 2923 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription()); | 
 |     (yyval.InstVal) = new VAArgInst((yyvsp[(2) - (4)].ValueVal), *(yyvsp[(4) - (4)].TypeVal)); | 
 |     delete (yyvsp[(4) - (4)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 308: | 
 | #line 2930 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!ExtractElementInst::isValidOperands((yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal))) | 
 |       GEN_ERROR("Invalid extractelement operands"); | 
 |     (yyval.InstVal) = new ExtractElementInst((yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 309: | 
 | #line 2936 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!InsertElementInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal))) | 
 |       GEN_ERROR("Invalid insertelement operands"); | 
 |     (yyval.InstVal) = InsertElementInst::Create((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 310: | 
 | #line 2942 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!ShuffleVectorInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal))) | 
 |       GEN_ERROR("Invalid shufflevector operands"); | 
 |     (yyval.InstVal) = new ShuffleVectorInst((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 311: | 
 | #line 2948 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     const Type *Ty = (yyvsp[(2) - (2)].PHIList)->front().first->getType(); | 
 |     if (!Ty->isFirstClassType()) | 
 |       GEN_ERROR("PHI node operands must be of first class type"); | 
 |     (yyval.InstVal) = PHINode::Create(Ty); | 
 |     ((PHINode*)(yyval.InstVal))->reserveOperandSpace((yyvsp[(2) - (2)].PHIList)->size()); | 
 |     while ((yyvsp[(2) - (2)].PHIList)->begin() != (yyvsp[(2) - (2)].PHIList)->end()) { | 
 |       if ((yyvsp[(2) - (2)].PHIList)->front().first->getType() != Ty)  | 
 |         GEN_ERROR("All elements of a PHI node must be of the same type"); | 
 |       cast<PHINode>((yyval.InstVal))->addIncoming((yyvsp[(2) - (2)].PHIList)->front().first, (yyvsp[(2) - (2)].PHIList)->front().second); | 
 |       (yyvsp[(2) - (2)].PHIList)->pop_front(); | 
 |     } | 
 |     delete (yyvsp[(2) - (2)].PHIList);  // Free the list... | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 312: | 
 | #line 2964 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |  | 
 |     // Handle the short syntax | 
 |     const PointerType *PFTy = 0; | 
 |     const FunctionType *Ty = 0; | 
 |     if (!(PFTy = dyn_cast<PointerType>((yyvsp[(3) - (8)].TypeVal)->get())) || | 
 |         !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) { | 
 |       // Pull out the types of all of the arguments... | 
 |       std::vector<const Type*> ParamTypes; | 
 |       ParamList::iterator I = (yyvsp[(6) - (8)].ParamList)->begin(), E = (yyvsp[(6) - (8)].ParamList)->end(); | 
 |       for (; I != E; ++I) { | 
 |         const Type *Ty = I->Val->getType(); | 
 |         if (Ty == Type::VoidTy) | 
 |           GEN_ERROR("Short call syntax cannot be used with varargs"); | 
 |         ParamTypes.push_back(Ty); | 
 |       } | 
 |  | 
 |       if (!FunctionType::isValidReturnType(*(yyvsp[(3) - (8)].TypeVal))) | 
 |         GEN_ERROR("Invalid result type for LLVM function"); | 
 |  | 
 |       Ty = FunctionType::get((yyvsp[(3) - (8)].TypeVal)->get(), ParamTypes, false); | 
 |       PFTy = PointerType::getUnqual(Ty); | 
 |     } | 
 |  | 
 |     Value *V = getVal(PFTy, (yyvsp[(4) - (8)].ValIDVal));   // Get the function we're calling... | 
 |     CHECK_FOR_ERROR | 
 |  | 
 |     // Check for call to invalid intrinsic to avoid crashing later. | 
 |     if (Function *theF = dyn_cast<Function>(V)) { | 
 |       if (theF->hasName() && (theF->getValueName()->getKeyLength() >= 5) && | 
 |           (0 == strncmp(theF->getValueName()->getKeyData(), "llvm.", 5)) && | 
 |           !theF->getIntrinsicID(true)) | 
 |         GEN_ERROR("Call to invalid LLVM intrinsic function '" + | 
 |                   theF->getName() + "'"); | 
 |     } | 
 |  | 
 |     // Set up the ParamAttrs for the function | 
 |     SmallVector<ParamAttrsWithIndex, 8> Attrs; | 
 |     if ((yyvsp[(8) - (8)].ParamAttrs) != ParamAttr::None) | 
 |       Attrs.push_back(ParamAttrsWithIndex::get(0, (yyvsp[(8) - (8)].ParamAttrs))); | 
 |     // Check the arguments  | 
 |     ValueList Args; | 
 |     if ((yyvsp[(6) - (8)].ParamList)->empty()) {                                   // Has no arguments? | 
 |       // Make sure no arguments is a good thing! | 
 |       if (Ty->getNumParams() != 0) | 
 |         GEN_ERROR("No arguments passed to a function that " | 
 |                        "expects arguments"); | 
 |     } else {                                     // Has arguments? | 
 |       // Loop through FunctionType's arguments and ensure they are specified | 
 |       // correctly.  Also, gather any parameter attributes. | 
 |       FunctionType::param_iterator I = Ty->param_begin(); | 
 |       FunctionType::param_iterator E = Ty->param_end(); | 
 |       ParamList::iterator ArgI = (yyvsp[(6) - (8)].ParamList)->begin(), ArgE = (yyvsp[(6) - (8)].ParamList)->end(); | 
 |       unsigned index = 1; | 
 |  | 
 |       for (; ArgI != ArgE && I != E; ++ArgI, ++I, ++index) { | 
 |         if (ArgI->Val->getType() != *I) | 
 |           GEN_ERROR("Parameter " + ArgI->Val->getName()+ " is not of type '" + | 
 |                          (*I)->getDescription() + "'"); | 
 |         Args.push_back(ArgI->Val); | 
 |         if (ArgI->Attrs != ParamAttr::None) | 
 |           Attrs.push_back(ParamAttrsWithIndex::get(index, ArgI->Attrs)); | 
 |       } | 
 |       if (Ty->isVarArg()) { | 
 |         if (I == E) | 
 |           for (; ArgI != ArgE; ++ArgI, ++index) { | 
 |             Args.push_back(ArgI->Val); // push the remaining varargs | 
 |             if (ArgI->Attrs != ParamAttr::None) | 
 |               Attrs.push_back(ParamAttrsWithIndex::get(index, ArgI->Attrs)); | 
 |           } | 
 |       } else if (I != E || ArgI != ArgE) | 
 |         GEN_ERROR("Invalid number of parameters detected"); | 
 |     } | 
 |  | 
 |     // Finish off the ParamAttrs and check them | 
 |     PAListPtr PAL; | 
 |     if (!Attrs.empty()) | 
 |       PAL = PAListPtr::get(Attrs.begin(), Attrs.end()); | 
 |  | 
 |     // Create the call node | 
 |     CallInst *CI = CallInst::Create(V, Args.begin(), Args.end()); | 
 |     CI->setTailCall((yyvsp[(1) - (8)].BoolVal)); | 
 |     CI->setCallingConv((yyvsp[(2) - (8)].UIntVal)); | 
 |     CI->setParamAttrs(PAL); | 
 |     (yyval.InstVal) = CI; | 
 |     delete (yyvsp[(6) - (8)].ParamList); | 
 |     delete (yyvsp[(3) - (8)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 313: | 
 | #line 3053 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.InstVal) = (yyvsp[(1) - (1)].InstVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 314: | 
 | #line 3058 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.BoolVal) = true; | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 315: | 
 | #line 3062 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     (yyval.BoolVal) = false; | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 316: | 
 | #line 3069 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription()); | 
 |     (yyval.InstVal) = new MallocInst(*(yyvsp[(2) - (3)].TypeVal), 0, (yyvsp[(3) - (3)].UIntVal)); | 
 |     delete (yyvsp[(2) - (3)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 317: | 
 | #line 3076 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription()); | 
 |     Value* tmpVal = getVal((yyvsp[(4) - (6)].PrimType), (yyvsp[(5) - (6)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.InstVal) = new MallocInst(*(yyvsp[(2) - (6)].TypeVal), tmpVal, (yyvsp[(6) - (6)].UIntVal)); | 
 |     delete (yyvsp[(2) - (6)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 318: | 
 | #line 3084 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription()); | 
 |     (yyval.InstVal) = new AllocaInst(*(yyvsp[(2) - (3)].TypeVal), 0, (yyvsp[(3) - (3)].UIntVal)); | 
 |     delete (yyvsp[(2) - (3)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 319: | 
 | #line 3091 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription()); | 
 |     Value* tmpVal = getVal((yyvsp[(4) - (6)].PrimType), (yyvsp[(5) - (6)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.InstVal) = new AllocaInst(*(yyvsp[(2) - (6)].TypeVal), tmpVal, (yyvsp[(6) - (6)].UIntVal)); | 
 |     delete (yyvsp[(2) - (6)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 320: | 
 | #line 3099 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!isa<PointerType>((yyvsp[(2) - (2)].ValueVal)->getType())) | 
 |       GEN_ERROR("Trying to free nonpointer type " +  | 
 |                      (yyvsp[(2) - (2)].ValueVal)->getType()->getDescription() + ""); | 
 |     (yyval.InstVal) = new FreeInst((yyvsp[(2) - (2)].ValueVal)); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 321: | 
 | #line 3107 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription()); | 
 |     if (!isa<PointerType>((yyvsp[(3) - (5)].TypeVal)->get())) | 
 |       GEN_ERROR("Can't load from nonpointer type: " + | 
 |                      (*(yyvsp[(3) - (5)].TypeVal))->getDescription()); | 
 |     if (!cast<PointerType>((yyvsp[(3) - (5)].TypeVal)->get())->getElementType()->isFirstClassType()) | 
 |       GEN_ERROR("Can't load from pointer of non-first-class type: " + | 
 |                      (*(yyvsp[(3) - (5)].TypeVal))->getDescription()); | 
 |     Value* tmpVal = getVal(*(yyvsp[(3) - (5)].TypeVal), (yyvsp[(4) - (5)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.InstVal) = new LoadInst(tmpVal, "", (yyvsp[(1) - (5)].BoolVal), (yyvsp[(5) - (5)].UIntVal)); | 
 |     delete (yyvsp[(3) - (5)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 322: | 
 | #line 3121 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (7)].TypeVal))->getDescription()); | 
 |     const PointerType *PT = dyn_cast<PointerType>((yyvsp[(5) - (7)].TypeVal)->get()); | 
 |     if (!PT) | 
 |       GEN_ERROR("Can't store to a nonpointer type: " + | 
 |                      (*(yyvsp[(5) - (7)].TypeVal))->getDescription()); | 
 |     const Type *ElTy = PT->getElementType(); | 
 |     if (ElTy != (yyvsp[(3) - (7)].ValueVal)->getType()) | 
 |       GEN_ERROR("Can't store '" + (yyvsp[(3) - (7)].ValueVal)->getType()->getDescription() + | 
 |                      "' into space of type '" + ElTy->getDescription() + "'"); | 
 |  | 
 |     Value* tmpVal = getVal(*(yyvsp[(5) - (7)].TypeVal), (yyvsp[(6) - (7)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.InstVal) = new StoreInst((yyvsp[(3) - (7)].ValueVal), tmpVal, (yyvsp[(1) - (7)].BoolVal), (yyvsp[(7) - (7)].UIntVal)); | 
 |     delete (yyvsp[(5) - (7)].TypeVal); | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 323: | 
 | #line 3138 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |   Value *TmpVal = getVal((yyvsp[(2) - (5)].TypeVal)->get(), (yyvsp[(3) - (5)].ValIDVal)); | 
 |   if (!GetResultInst::isValidOperands(TmpVal, (yyvsp[(5) - (5)].UInt64Val))) | 
 |       GEN_ERROR("Invalid getresult operands"); | 
 |     (yyval.InstVal) = new GetResultInst(TmpVal, (yyvsp[(5) - (5)].UInt64Val)); | 
 |     delete (yyvsp[(2) - (5)].TypeVal); | 
 |     CHECK_FOR_ERROR | 
 |   ;} | 
 |     break; | 
 |  | 
 |   case 324: | 
 | #line 3146 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |     { | 
 |     if (!UpRefs.empty()) | 
 |       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (4)].TypeVal))->getDescription()); | 
 |     if (!isa<PointerType>((yyvsp[(2) - (4)].TypeVal)->get())) | 
 |       GEN_ERROR("getelementptr insn requires pointer operand"); | 
 |  | 
 |     if (!GetElementPtrInst::getIndexedType(*(yyvsp[(2) - (4)].TypeVal), (yyvsp[(4) - (4)].ValueList)->begin(), (yyvsp[(4) - (4)].ValueList)->end(), true)) | 
 |       GEN_ERROR("Invalid getelementptr indices for type '" + | 
 |                      (*(yyvsp[(2) - (4)].TypeVal))->getDescription()+ "'"); | 
 |     Value* tmpVal = getVal(*(yyvsp[(2) - (4)].TypeVal), (yyvsp[(3) - (4)].ValIDVal)); | 
 |     CHECK_FOR_ERROR | 
 |     (yyval.InstVal) = GetElementPtrInst::Create(tmpVal, (yyvsp[(4) - (4)].ValueList)->begin(), (yyvsp[(4) - (4)].ValueList)->end()); | 
 |     delete (yyvsp[(2) - (4)].TypeVal);  | 
 |     delete (yyvsp[(4) - (4)].ValueList); | 
 |   ;} | 
 |     break; | 
 |  | 
 |  | 
 | /* Line 1267 of yacc.c.  */ | 
 | #line 6419 "llvmAsmParser.tab.c" | 
 |       default: break; | 
 |     } | 
 |   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); | 
 |  | 
 |   YYPOPSTACK (yylen); | 
 |   yylen = 0; | 
 |   YY_STACK_PRINT (yyss, yyssp); | 
 |  | 
 |   *++yyvsp = yyval; | 
 |  | 
 |  | 
 |   /* Now `shift' the result of the reduction.  Determine what state | 
 |      that goes to, based on the state we popped back to and the rule | 
 |      number reduced by.  */ | 
 |  | 
 |   yyn = yyr1[yyn]; | 
 |  | 
 |   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; | 
 |   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) | 
 |     yystate = yytable[yystate]; | 
 |   else | 
 |     yystate = yydefgoto[yyn - YYNTOKENS]; | 
 |  | 
 |   goto yynewstate; | 
 |  | 
 |  | 
 | /*------------------------------------. | 
 | | yyerrlab -- here on detecting error | | 
 | `------------------------------------*/ | 
 | yyerrlab: | 
 |   /* If not already recovering from an error, report this error.  */ | 
 |   if (!yyerrstatus) | 
 |     { | 
 |       ++yynerrs; | 
 | #if ! YYERROR_VERBOSE | 
 |       yyerror (YY_("syntax error")); | 
 | #else | 
 |       { | 
 | 	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); | 
 | 	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) | 
 | 	  { | 
 | 	    YYSIZE_T yyalloc = 2 * yysize; | 
 | 	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) | 
 | 	      yyalloc = YYSTACK_ALLOC_MAXIMUM; | 
 | 	    if (yymsg != yymsgbuf) | 
 | 	      YYSTACK_FREE (yymsg); | 
 | 	    yymsg = (char *) YYSTACK_ALLOC (yyalloc); | 
 | 	    if (yymsg) | 
 | 	      yymsg_alloc = yyalloc; | 
 | 	    else | 
 | 	      { | 
 | 		yymsg = yymsgbuf; | 
 | 		yymsg_alloc = sizeof yymsgbuf; | 
 | 	      } | 
 | 	  } | 
 |  | 
 | 	if (0 < yysize && yysize <= yymsg_alloc) | 
 | 	  { | 
 | 	    (void) yysyntax_error (yymsg, yystate, yychar); | 
 | 	    yyerror (yymsg); | 
 | 	  } | 
 | 	else | 
 | 	  { | 
 | 	    yyerror (YY_("syntax error")); | 
 | 	    if (yysize != 0) | 
 | 	      goto yyexhaustedlab; | 
 | 	  } | 
 |       } | 
 | #endif | 
 |     } | 
 |  | 
 |  | 
 |  | 
 |   if (yyerrstatus == 3) | 
 |     { | 
 |       /* If just tried and failed to reuse look-ahead token after an | 
 | 	 error, discard it.  */ | 
 |  | 
 |       if (yychar <= YYEOF) | 
 | 	{ | 
 | 	  /* Return failure if at end of input.  */ | 
 | 	  if (yychar == YYEOF) | 
 | 	    YYABORT; | 
 | 	} | 
 |       else | 
 | 	{ | 
 | 	  yydestruct ("Error: discarding", | 
 | 		      yytoken, &yylval); | 
 | 	  yychar = YYEMPTY; | 
 | 	} | 
 |     } | 
 |  | 
 |   /* Else will try to reuse look-ahead token after shifting the error | 
 |      token.  */ | 
 |   goto yyerrlab1; | 
 |  | 
 |  | 
 | /*---------------------------------------------------. | 
 | | yyerrorlab -- error raised explicitly by YYERROR.  | | 
 | `---------------------------------------------------*/ | 
 | yyerrorlab: | 
 |  | 
 |   /* Pacify compilers like GCC when the user code never invokes | 
 |      YYERROR and the label yyerrorlab therefore never appears in user | 
 |      code.  */ | 
 |   if (/*CONSTCOND*/ 0) | 
 |      goto yyerrorlab; | 
 |  | 
 |   /* Do not reclaim the symbols of the rule which action triggered | 
 |      this YYERROR.  */ | 
 |   YYPOPSTACK (yylen); | 
 |   yylen = 0; | 
 |   YY_STACK_PRINT (yyss, yyssp); | 
 |   yystate = *yyssp; | 
 |   goto yyerrlab1; | 
 |  | 
 |  | 
 | /*-------------------------------------------------------------. | 
 | | yyerrlab1 -- common code for both syntax error and YYERROR.  | | 
 | `-------------------------------------------------------------*/ | 
 | yyerrlab1: | 
 |   yyerrstatus = 3;	/* Each real token shifted decrements this.  */ | 
 |  | 
 |   for (;;) | 
 |     { | 
 |       yyn = yypact[yystate]; | 
 |       if (yyn != YYPACT_NINF) | 
 | 	{ | 
 | 	  yyn += YYTERROR; | 
 | 	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) | 
 | 	    { | 
 | 	      yyn = yytable[yyn]; | 
 | 	      if (0 < yyn) | 
 | 		break; | 
 | 	    } | 
 | 	} | 
 |  | 
 |       /* Pop the current state because it cannot handle the error token.  */ | 
 |       if (yyssp == yyss) | 
 | 	YYABORT; | 
 |  | 
 |  | 
 |       yydestruct ("Error: popping", | 
 | 		  yystos[yystate], yyvsp); | 
 |       YYPOPSTACK (1); | 
 |       yystate = *yyssp; | 
 |       YY_STACK_PRINT (yyss, yyssp); | 
 |     } | 
 |  | 
 |   if (yyn == YYFINAL) | 
 |     YYACCEPT; | 
 |  | 
 |   *++yyvsp = yylval; | 
 |  | 
 |  | 
 |   /* Shift the error token.  */ | 
 |   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); | 
 |  | 
 |   yystate = yyn; | 
 |   goto yynewstate; | 
 |  | 
 |  | 
 | /*-------------------------------------. | 
 | | yyacceptlab -- YYACCEPT comes here.  | | 
 | `-------------------------------------*/ | 
 | yyacceptlab: | 
 |   yyresult = 0; | 
 |   goto yyreturn; | 
 |  | 
 | /*-----------------------------------. | 
 | | yyabortlab -- YYABORT comes here.  | | 
 | `-----------------------------------*/ | 
 | yyabortlab: | 
 |   yyresult = 1; | 
 |   goto yyreturn; | 
 |  | 
 | #ifndef yyoverflow | 
 | /*-------------------------------------------------. | 
 | | yyexhaustedlab -- memory exhaustion comes here.  | | 
 | `-------------------------------------------------*/ | 
 | yyexhaustedlab: | 
 |   yyerror (YY_("memory exhausted")); | 
 |   yyresult = 2; | 
 |   /* Fall through.  */ | 
 | #endif | 
 |  | 
 | yyreturn: | 
 |   if (yychar != YYEOF && yychar != YYEMPTY) | 
 |      yydestruct ("Cleanup: discarding lookahead", | 
 | 		 yytoken, &yylval); | 
 |   /* Do not reclaim the symbols of the rule which action triggered | 
 |      this YYABORT or YYACCEPT.  */ | 
 |   YYPOPSTACK (yylen); | 
 |   YY_STACK_PRINT (yyss, yyssp); | 
 |   while (yyssp != yyss) | 
 |     { | 
 |       yydestruct ("Cleanup: popping", | 
 | 		  yystos[*yyssp], yyvsp); | 
 |       YYPOPSTACK (1); | 
 |     } | 
 | #ifndef yyoverflow | 
 |   if (yyss != yyssa) | 
 |     YYSTACK_FREE (yyss); | 
 | #endif | 
 | #if YYERROR_VERBOSE | 
 |   if (yymsg != yymsgbuf) | 
 |     YYSTACK_FREE (yymsg); | 
 | #endif | 
 |   /* Make sure YYID is used.  */ | 
 |   return YYID (yyresult); | 
 | } | 
 |  | 
 |  | 
 | #line 3163 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y" | 
 |  | 
 |  | 
 | // common code from the two 'RunVMAsmParser' functions | 
 | static Module* RunParser(Module * M) { | 
 |   CurModule.CurrentModule = M; | 
 |   // Check to make sure the parser succeeded | 
 |   if (yyparse()) { | 
 |     if (ParserResult) | 
 |       delete ParserResult; | 
 |     return 0; | 
 |   } | 
 |  | 
 |   // Emit an error if there are any unresolved types left. | 
 |   if (!CurModule.LateResolveTypes.empty()) { | 
 |     const ValID &DID = CurModule.LateResolveTypes.begin()->first; | 
 |     if (DID.Type == ValID::LocalName) { | 
 |       GenerateError("Undefined type remains at eof: '"+DID.getName() + "'"); | 
 |     } else { | 
 |       GenerateError("Undefined type remains at eof: #" + itostr(DID.Num)); | 
 |     } | 
 |     if (ParserResult) | 
 |       delete ParserResult; | 
 |     return 0; | 
 |   } | 
 |  | 
 |   // Emit an error if there are any unresolved values left. | 
 |   if (!CurModule.LateResolveValues.empty()) { | 
 |     Value *V = CurModule.LateResolveValues.back(); | 
 |     std::map<Value*, std::pair<ValID, int> >::iterator I = | 
 |       CurModule.PlaceHolderInfo.find(V); | 
 |  | 
 |     if (I != CurModule.PlaceHolderInfo.end()) { | 
 |       ValID &DID = I->second.first; | 
 |       if (DID.Type == ValID::LocalName) { | 
 |         GenerateError("Undefined value remains at eof: "+DID.getName() + "'"); | 
 |       } else { | 
 |         GenerateError("Undefined value remains at eof: #" + itostr(DID.Num)); | 
 |       } | 
 |       if (ParserResult) | 
 |         delete ParserResult; | 
 |       return 0; | 
 |     } | 
 |   } | 
 |  | 
 |   // Check to make sure that parsing produced a result | 
 |   if (!ParserResult) | 
 |     return 0; | 
 |  | 
 |   // Reset ParserResult variable while saving its value for the result. | 
 |   Module *Result = ParserResult; | 
 |   ParserResult = 0; | 
 |  | 
 |   return Result; | 
 | } | 
 |  | 
 | void llvm::GenerateError(const std::string &message, int LineNo) { | 
 |   if (LineNo == -1) LineNo = LLLgetLineNo(); | 
 |   // TODO: column number in exception | 
 |   if (TheParseError) | 
 |     TheParseError->setError(LLLgetFilename(), message, LineNo); | 
 |   TriggerError = 1; | 
 | } | 
 |  | 
 | int yyerror(const char *ErrorMsg) { | 
 |   std::string where = LLLgetFilename() + ":" + utostr(LLLgetLineNo()) + ": "; | 
 |   std::string errMsg = where + "error: " + std::string(ErrorMsg); | 
 |   if (yychar != YYEMPTY && yychar != 0) { | 
 |     errMsg += " while reading token: '"; | 
 |     errMsg += std::string(LLLgetTokenStart(),  | 
 |                           LLLgetTokenStart()+LLLgetTokenLength()) + "'"; | 
 |   } | 
 |   GenerateError(errMsg); | 
 |   return 0; | 
 | } | 
 |  |