diff options
| -rw-r--r-- | llvm/docs/LangRef.html | 41 | ||||
| -rw-r--r-- | llvm/include/llvm/Intrinsics.h | 21 | ||||
| -rw-r--r-- | llvm/lib/Analysis/ConstantFolding.cpp | 25 | ||||
| -rw-r--r-- | llvm/lib/AsmParser/llvmAsmParser.cpp | 4787 | ||||
| -rw-r--r-- | llvm/lib/AsmParser/llvmAsmParser.h | 333 | ||||
| -rw-r--r-- | llvm/lib/AsmParser/llvmAsmParser.y | 7 | ||||
| -rw-r--r-- | llvm/lib/Bytecode/Reader/Reader.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/IntrinsicLowering.cpp | 34 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 21 | ||||
| -rw-r--r-- | llvm/lib/Transforms/Utils/Local.cpp | 21 | ||||
| -rw-r--r-- | llvm/lib/VMCore/Function.cpp | 98 | ||||
| -rw-r--r-- | llvm/lib/VMCore/Verifier.cpp | 161 | 
12 files changed, 3280 insertions, 2271 deletions
diff --git a/llvm/docs/LangRef.html b/llvm/docs/LangRef.html index c92e7eabfcc..95ac99bc893 100644 --- a/llvm/docs/LangRef.html +++ b/llvm/docs/LangRef.html @@ -3394,20 +3394,21 @@ this can be specified as the fourth argument, otherwise it should be set to 0 or  <!-- _______________________________________________________________________ -->  <div class="doc_subsubsection"> -  <a name="i_isunordered">'<tt>llvm.isunordered</tt>' Intrinsic</a> +  <a name="i_isunordered">'<tt>llvm.isunordered.*</tt>' Intrinsic</a>  </div>  <div class="doc_text">  <h5>Syntax:</h5>  <pre> -  declare bool %llvm.isunordered(<float or double> Val1, <float or double> Val2) +  declare bool %llvm.isunordered.f32(float Val1, float  Val2) +  declare bool %llvm.isunordered.f64(double Val1, double Val2)  </pre>  <h5>Overview:</h5>  <p> -The '<tt>llvm.isunordered</tt>' intrinsic returns true if either or both of the +The '<tt>llvm.isunordered</tt>' intrinsics return true if either or both of the  specified floating point values is a NAN.  </p> @@ -3435,13 +3436,14 @@ false.  <h5>Syntax:</h5>  <pre> -  declare <float or double> %llvm.sqrt(<float or double> Val) +  declare double %llvm.sqrt.f32(float Val) +  declare double %llvm.sqrt.f64(double Val)  </pre>  <h5>Overview:</h5>  <p> -The '<tt>llvm.sqrt</tt>' intrinsic returns the sqrt of the specified operand, +The '<tt>llvm.sqrt</tt>' intrinsics return the sqrt of the specified operand,  returning the same value as the libm '<tt>sqrt</tt>' function would.  Unlike  <tt>sqrt</tt> in libm, however, <tt>llvm.sqrt</tt> has undefined behavior for  negative numbers (which allows for better optimization). @@ -3483,6 +3485,7 @@ These allow efficient code generation for some algorithms.  <h5>Syntax:</h5>  <pre> +  declare ushort %llvm.bswap.i8( ubyte <id> )    declare ushort %llvm.bswap.i16( ushort <id> )    declare uint %llvm.bswap.i32( uint <id> )    declare ulong %llvm.bswap.i64( ulong <id> ) @@ -3511,20 +3514,24 @@ to 64 bits.  <!-- _______________________________________________________________________ -->  <div class="doc_subsubsection"> -  <a name="int_ctpop">'<tt>llvm.ctpop</tt>' Intrinsic</a> +  <a name="int_ctpop">'<tt>llvm.ctpop.*</tt>' Intrinsic</a>  </div>  <div class="doc_text">  <h5>Syntax:</h5>  <pre> -  declare int %llvm.ctpop(int <src>) +  declare sbyte %llvm.ctpop.i8(sbyte <src>) +  declare short %llvm.ctpop.i16(short <src>) +  declare int   %llvm.ctpop.i32(int <src>) +  declare long  %llvm.ctpop.i64(long <src>)  </pre>  <h5>Overview:</h5>  <p> -The '<tt>llvm.ctpop</tt>' intrinsic counts the number of ones in a variable. +The '<tt>llvm.ctpop</tt>' family of intrinsics counts the number of ones in a  +variable.  </p>  <h5>Arguments:</h5> @@ -3550,15 +3557,17 @@ The '<tt>llvm.ctpop</tt>' intrinsic counts the 1's in a variable.  <h5>Syntax:</h5>  <pre> -  declare int %llvm.ctlz(int <src>) - +  declare sbyte %llvm.ctlz.i8(sbyte <src>) +  declare short %llvm.ctlz.i16(short <src>) +  declare int   %llvm.ctlz.i32(int <src>) +  declare long  %llvm.ctlz.i64(long <src>)  </pre>  <h5>Overview:</h5>  <p> -The '<tt>llvm.ctlz</tt>' intrinsic counts the number of leading zeros in a -variable. +The '<tt>llvm.ctlz</tt>' family of intrinsic functions counts the number of  +leading zeros in a variable.  </p>  <h5>Arguments:</h5> @@ -3588,13 +3597,17 @@ of src. For example, <tt>llvm.cttz(int 2) = 30</tt>.  <h5>Syntax:</h5>  <pre> -  declare int %llvm.cttz(int <src>) +  declare sbyte %llvm.cttz.i8(sbyte <src>) +  declare short %llvm.cttz.i16(short <src>) +  declare int   %llvm.cttz.i32(int <src>) +  declare long  %llvm.cttz.i64(long <src>)  </pre>  <h5>Overview:</h5>  <p> -The '<tt>llvm.cttz</tt>' intrinsic counts the number of trailing zeros. +The '<tt>llvm.cttz</tt>' family of intrinsic functions counts the number of  +trailing zeros.  </p>  <h5>Arguments:</h5> diff --git a/llvm/include/llvm/Intrinsics.h b/llvm/include/llvm/Intrinsics.h index a0e01dddcf4..37589c5153d 100644 --- a/llvm/include/llvm/Intrinsics.h +++ b/llvm/include/llvm/Intrinsics.h @@ -62,16 +62,27 @@ namespace Intrinsic {      memcpy,         // Copy non-overlapping memory blocks      memmove,        // Copy potentially overlapping memory blocks      memset,         // Fill memory with a byte value -    isunordered,    // Return true if either argument is a NaN -    sqrt,           // Square root +    isunordered_f32,// Return true if either float argument is a NaN +    isunordered_f64,// Return true if either double argument is a NaN +    sqrt_f32,       // Square root of float +    sqrt_f64,       // Square root of double      // Bit manipulation instrinsics.      bswap_i16,      // Byteswap 16 bits      bswap_i32,      // Byteswap 32 bits      bswap_i64,      // Byteswap 64 bits -    ctpop,          // Count population -    ctlz,           // Count leading zeros -    cttz,           // Count trailing zeros +    ctpop_i8,       // Count population of sbyte +    ctpop_i16,      // Count population of short +    ctpop_i32,      // Count population of int +    ctpop_i64,      // Count population of long +    ctlz_i8,        // Count leading zeros of sbyte +    ctlz_i16,       // Count leading zeros of short +    ctlz_i32,       // Count leading zeros of int +    ctlz_i64,       // Count leading zeros of long +    cttz_i8,        // Count trailing zeros of sbyte +    cttz_i16,       // Count trailing zeros of short +    cttz_i32,       // Count trailing zeros of int +    cttz_i64,       // Count trailing zeros of long      // Input/Output intrinsics.      readport, diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp index 915a7cb734f..3321115c53e 100644 --- a/llvm/lib/Analysis/ConstantFolding.cpp +++ b/llvm/lib/Analysis/ConstantFolding.cpp @@ -35,15 +35,26 @@ llvm::canConstantFoldCallTo(Function *F) {    const std::string &Name = F->getName();    switch (F->getIntrinsicID()) { -  case Intrinsic::isunordered: -  case Intrinsic::sqrt: +  case Intrinsic::isunordered_f32: +  case Intrinsic::isunordered_f64: +  case Intrinsic::sqrt_f32: +  case Intrinsic::sqrt_f64:    case Intrinsic::bswap_i16:    case Intrinsic::bswap_i32:    case Intrinsic::bswap_i64:    // FIXME: these should be constant folded as well -  //case Intrinsic::ctpop: -  //case Intrinsic::ctlz: -  //case Intrinsic::cttz: +  //case Intrinsic::ctpop_i8: +  //case Intrinsic::ctpop_i16: +  //case Intrinsic::ctpop_i32: +  //case Intrinsic::ctpop_i64: +  //case Intrinsic::ctlz_i8: +  //case Intrinsic::ctlz_i16: +  //case Intrinsic::ctlz_i32: +  //case Intrinsic::ctlz_i64: +  //case Intrinsic::cttz_i8: +  //case Intrinsic::cttz_i16: +  //case Intrinsic::cttz_i32: +  //case Intrinsic::cttz_i64:      return true;    default: break;    } @@ -125,7 +136,7 @@ llvm::ConstantFoldCall(Function *F, const std::vector<Constant*> &Operands) {              return ConstantFP::get(Ty, log(V));            else if (Name == "log10" && V > 0)              return ConstantFoldFP(log10, V, Ty); -          else if (Name == "llvm.sqrt") { +          else if (Name == "llvm.sqrt.f32" || Name == "llvm.sqrt.f64") {              if (V >= -0.0)                return ConstantFP::get(Ty, sqrt(V));              else // Undefined @@ -164,7 +175,7 @@ llvm::ConstantFoldCall(Function *F, const std::vector<Constant*> &Operands) {        if (ConstantFP *Op2 = dyn_cast<ConstantFP>(Operands[1])) {          double Op2V = Op2->getValue(); -        if (Name == "llvm.isunordered") +        if (Name == "llvm.isunordered.f32" || Name == "llvm.isunordered.f64")            return ConstantBool::get(IsNAN(Op1V) || IsNAN(Op2V));          else          if (Name == "pow") { diff --git a/llvm/lib/AsmParser/llvmAsmParser.cpp b/llvm/lib/AsmParser/llvmAsmParser.cpp index 72fd1ebe9e6..45bcc6f6171 100644 --- a/llvm/lib/AsmParser/llvmAsmParser.cpp +++ b/llvm/lib/AsmParser/llvmAsmParser.cpp @@ -1,118 +1,270 @@ +/* A Bison parser, made by GNU Bison 1.875c.  */ -/*  A Bison parser, made from /Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y -    by GNU Bison version 1.28  */ +/* Skeleton parser for Yacc-like parsing with Bison, +   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -#define YYBISON 1  /* Identify Bison output.  */ +   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., 59 Temple Place - Suite 330, +   Boston, MA 02111-1307, USA.  */ +/* As a special exception, when this file is copied by Bison into a +   Bison output file, you may use that output file without restriction. +   This special exception was added by the Free Software Foundation +   in version 1.24 of Bison.  */ + +/* 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 + +/* Skeleton name.  */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers.  */ +#define YYPURE 0 + +/* Using locations.  */ +#define YYLSP_NEEDED 0 + +/* If NAME_PREFIX is specified substitute the variables and functions +   names.  */  #define yyparse llvmAsmparse -#define yylex llvmAsmlex +#define yylex   llvmAsmlex  #define yyerror llvmAsmerror -#define yylval llvmAsmlval -#define yychar llvmAsmchar +#define yylval  llvmAsmlval +#define yychar  llvmAsmchar  #define yydebug llvmAsmdebug  #define yynerrs llvmAsmnerrs -#define	ESINT64VAL	257 -#define	EUINT64VAL	258 -#define	SINTVAL	259 -#define	UINTVAL	260 -#define	FPVAL	261 -#define	VOID	262 -#define	BOOL	263 -#define	SBYTE	264 -#define	UBYTE	265 -#define	SHORT	266 -#define	USHORT	267 -#define	INT	268 -#define	UINT	269 -#define	LONG	270 -#define	ULONG	271 -#define	FLOAT	272 -#define	DOUBLE	273 -#define	TYPE	274 -#define	LABEL	275 -#define	VAR_ID	276 -#define	LABELSTR	277 -#define	STRINGCONSTANT	278 -#define	IMPLEMENTATION	279 -#define	ZEROINITIALIZER	280 -#define	TRUETOK	281 -#define	FALSETOK	282 -#define	BEGINTOK	283 -#define	ENDTOK	284 -#define	DECLARE	285 -#define	GLOBAL	286 -#define	CONSTANT	287 -#define	SECTION	288 -#define	VOLATILE	289 -#define	TO	290 -#define	DOTDOTDOT	291 -#define	NULL_TOK	292 -#define	UNDEF	293 -#define	CONST	294 -#define	INTERNAL	295 -#define	LINKONCE	296 -#define	WEAK	297 -#define	APPENDING	298 -#define	OPAQUE	299 -#define	NOT	300 -#define	EXTERNAL	301 -#define	TARGET	302 -#define	TRIPLE	303 -#define	ENDIAN	304 -#define	POINTERSIZE	305 -#define	LITTLE	306 -#define	BIG	307 -#define	ALIGN	308 -#define	DEPLIBS	309 -#define	CALL	310 -#define	TAIL	311 -#define	CC_TOK	312 -#define	CCC_TOK	313 -#define	FASTCC_TOK	314 -#define	COLDCC_TOK	315 -#define	RET	316 -#define	BR	317 -#define	SWITCH	318 -#define	INVOKE	319 -#define	UNWIND	320 -#define	UNREACHABLE	321 -#define	ADD	322 -#define	SUB	323 -#define	MUL	324 -#define	DIV	325 -#define	REM	326 -#define	AND	327 -#define	OR	328 -#define	XOR	329 -#define	SETLE	330 -#define	SETGE	331 -#define	SETLT	332 -#define	SETGT	333 -#define	SETEQ	334 -#define	SETNE	335 -#define	MALLOC	336 -#define	ALLOCA	337 -#define	FREE	338 -#define	LOAD	339 -#define	STORE	340 -#define	GETELEMENTPTR	341 -#define	PHI_TOK	342 -#define	CAST	343 -#define	SELECT	344 -#define	SHL	345 -#define	SHR	346 -#define	VAARG	347 -#define	EXTRACTELEMENT	348 -#define	VAARG_old	349 -#define	VANEXT_old	350 - -#line 14 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + + +/* 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, +     SINTVAL = 260, +     UINTVAL = 261, +     FPVAL = 262, +     VOID = 263, +     BOOL = 264, +     SBYTE = 265, +     UBYTE = 266, +     SHORT = 267, +     USHORT = 268, +     INT = 269, +     UINT = 270, +     LONG = 271, +     ULONG = 272, +     FLOAT = 273, +     DOUBLE = 274, +     TYPE = 275, +     LABEL = 276, +     VAR_ID = 277, +     LABELSTR = 278, +     STRINGCONSTANT = 279, +     IMPLEMENTATION = 280, +     ZEROINITIALIZER = 281, +     TRUETOK = 282, +     FALSETOK = 283, +     BEGINTOK = 284, +     ENDTOK = 285, +     DECLARE = 286, +     GLOBAL = 287, +     CONSTANT = 288, +     SECTION = 289, +     VOLATILE = 290, +     TO = 291, +     DOTDOTDOT = 292, +     NULL_TOK = 293, +     UNDEF = 294, +     CONST = 295, +     INTERNAL = 296, +     LINKONCE = 297, +     WEAK = 298, +     APPENDING = 299, +     OPAQUE = 300, +     NOT = 301, +     EXTERNAL = 302, +     TARGET = 303, +     TRIPLE = 304, +     ENDIAN = 305, +     POINTERSIZE = 306, +     LITTLE = 307, +     BIG = 308, +     ALIGN = 309, +     DEPLIBS = 310, +     CALL = 311, +     TAIL = 312, +     CC_TOK = 313, +     CCC_TOK = 314, +     FASTCC_TOK = 315, +     COLDCC_TOK = 316, +     RET = 317, +     BR = 318, +     SWITCH = 319, +     INVOKE = 320, +     UNWIND = 321, +     UNREACHABLE = 322, +     ADD = 323, +     SUB = 324, +     MUL = 325, +     DIV = 326, +     REM = 327, +     AND = 328, +     OR = 329, +     XOR = 330, +     SETLE = 331, +     SETGE = 332, +     SETLT = 333, +     SETGT = 334, +     SETEQ = 335, +     SETNE = 336, +     MALLOC = 337, +     ALLOCA = 338, +     FREE = 339, +     LOAD = 340, +     STORE = 341, +     GETELEMENTPTR = 342, +     PHI_TOK = 343, +     CAST = 344, +     SELECT = 345, +     SHL = 346, +     SHR = 347, +     VAARG = 348, +     EXTRACTELEMENT = 349, +     VAARG_old = 350, +     VANEXT_old = 351 +   }; +#endif +#define ESINT64VAL 258 +#define EUINT64VAL 259 +#define SINTVAL 260 +#define UINTVAL 261 +#define FPVAL 262 +#define VOID 263 +#define BOOL 264 +#define SBYTE 265 +#define UBYTE 266 +#define SHORT 267 +#define USHORT 268 +#define INT 269 +#define UINT 270 +#define LONG 271 +#define ULONG 272 +#define FLOAT 273 +#define DOUBLE 274 +#define TYPE 275 +#define LABEL 276 +#define VAR_ID 277 +#define LABELSTR 278 +#define STRINGCONSTANT 279 +#define IMPLEMENTATION 280 +#define ZEROINITIALIZER 281 +#define TRUETOK 282 +#define FALSETOK 283 +#define BEGINTOK 284 +#define ENDTOK 285 +#define DECLARE 286 +#define GLOBAL 287 +#define CONSTANT 288 +#define SECTION 289 +#define VOLATILE 290 +#define TO 291 +#define DOTDOTDOT 292 +#define NULL_TOK 293 +#define UNDEF 294 +#define CONST 295 +#define INTERNAL 296 +#define LINKONCE 297 +#define WEAK 298 +#define APPENDING 299 +#define OPAQUE 300 +#define NOT 301 +#define EXTERNAL 302 +#define TARGET 303 +#define TRIPLE 304 +#define ENDIAN 305 +#define POINTERSIZE 306 +#define LITTLE 307 +#define BIG 308 +#define ALIGN 309 +#define DEPLIBS 310 +#define CALL 311 +#define TAIL 312 +#define CC_TOK 313 +#define CCC_TOK 314 +#define FASTCC_TOK 315 +#define COLDCC_TOK 316 +#define RET 317 +#define BR 318 +#define SWITCH 319 +#define INVOKE 320 +#define UNWIND 321 +#define UNREACHABLE 322 +#define ADD 323 +#define SUB 324 +#define MUL 325 +#define DIV 326 +#define REM 327 +#define AND 328 +#define OR 329 +#define XOR 330 +#define SETLE 331 +#define SETGE 332 +#define SETLT 333 +#define SETGT 334 +#define SETEQ 335 +#define SETNE 336 +#define MALLOC 337 +#define ALLOCA 338 +#define FREE 339 +#define LOAD 340 +#define STORE 341 +#define GETELEMENTPTR 342 +#define PHI_TOK 343 +#define CAST 344 +#define SELECT 345 +#define SHL 346 +#define SHR 347 +#define VAARG 348 +#define EXTRACTELEMENT 349 +#define VAARG_old 350 +#define VANEXT_old 351 + + + + +/* Copy the first part of user declarations.  */ +#line 14 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"  #include "ParserInternals.h"  #include "llvm/CallingConv.h"  #include "llvm/Instructions.h"  #include "llvm/Module.h"  #include "llvm/SymbolTable.h" +#include "llvm/Assembly/AutoUpgrade.h"  #include "llvm/Support/GetElementPtrTypeIterator.h"  #include "llvm/ADT/STLExtras.h"  #include "llvm/Support/MathExtras.h" @@ -200,12 +352,16 @@ static struct PerModuleInfo {        ThrowException(UndefinedReferences);      } +    // Rename any overloaded intrinsic functions. +    for (Module::iterator FI = CurrentModule->begin(), FE = +         CurrentModule->end(); FI != FE; ++FI) +      UpgradeIntrinsicFunction(&(*FI)); +      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. @@ -965,8 +1121,23 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {  } -#line 873 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -typedef union { + +/* 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 + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +#line 878 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +typedef union YYSTYPE {    llvm::Module                           *ModuleVal;    llvm::Function                         *FunctionVal;    std::pair<llvm::PATypeHolder*, char*>  *ArgVal; @@ -1005,944 +1176,1286 @@ typedef union {    llvm::Instruction::OtherOps             OtherOpVal;    llvm::Module::Endianness                Endianness;  } YYSTYPE; -#include <stdio.h> - -#ifndef __cplusplus -#ifndef __STDC__ -#define const -#endif +/* Line 191 of yacc.c.  */ +#line 1181 "llvmAsmParser.tab.c" +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1  #endif -#define	YYFINAL		454 -#define	YYFLAG		-32768 -#define	YYNTBASE	111 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 350 ? yytranslate[x] : 180) - -static const char 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,   100, -   101,   109,     2,    98,     2,     2,     2,     2,     2,     2, -     2,     2,     2,     2,     2,     2,     2,     2,     2,   105, -    97,   106,     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, -   102,    99,   104,     2,     2,     2,     2,     2,   110,     2, -     2,     2,     2,     2,     2,     2,     2,     2,     2,     2, -     2,     2,     2,     2,     2,     2,     2,     2,     2,   103, -     2,     2,   107,     2,   108,     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,     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 -}; +/* Copy the second part of user declarations.  */ -#if YYDEBUG != 0 -static const short yyprhs[] = {     0, -     0,     2,     4,     6,     8,    10,    12,    14,    16,    18, -    20,    22,    24,    26,    28,    30,    32,    34,    36,    38, -    40,    42,    44,    46,    48,    50,    52,    54,    56,    58, -    60,    62,    64,    67,    68,    70,    72,    74,    76,    77, -    78,    80,    82,    84,    87,    88,    91,    92,    96,    99, -   100,   102,   103,   107,   109,   112,   114,   116,   118,   120, -   122,   124,   126,   128,   130,   132,   134,   136,   138,   140, -   142,   144,   146,   148,   150,   152,   154,   157,   162,   168, -   174,   178,   181,   184,   186,   190,   192,   196,   198,   199, -   204,   208,   212,   217,   222,   226,   229,   232,   235,   238, -   241,   244,   247,   250,   253,   256,   263,   269,   278,   285, -   292,   299,   306,   313,   317,   319,   321,   323,   325,   328, -   331,   334,   336,   341,   344,   345,   353,   354,   362,   366, -   371,   372,   374,   376,   380,   384,   388,   392,   396,   398, -   399,   401,   403,   405,   406,   409,   413,   415,   417,   421, -   423,   424,   433,   435,   437,   441,   443,   445,   448,   449, -   453,   455,   457,   459,   461,   463,   465,   467,   469,   473, -   475,   477,   479,   481,   483,   486,   489,   492,   496,   499, -   500,   502,   505,   508,   512,   522,   532,   541,   555,   557, -   559,   566,   572,   575,   582,   590,   592,   596,   598,   599, -   602,   604,   610,   616,   622,   625,   630,   635,   642,   647, -   652,   657,   662,   665,   673,   675,   678,   679,   681,   682, -   686,   693,   697,   704,   707,   712,   719 -}; -static const short yyrhs[] = {     5, -     0,     6,     0,     3,     0,     4,     0,    68,     0,    69, -     0,    70,     0,    71,     0,    72,     0,    73,     0,    74, -     0,    75,     0,    76,     0,    77,     0,    78,     0,    79, -     0,    80,     0,    81,     0,    91,     0,    92,     0,    16, -     0,    14,     0,    12,     0,    10,     0,    17,     0,    15, -     0,    13,     0,    11,     0,   117,     0,   118,     0,    18, -     0,    19,     0,   150,    97,     0,     0,    41,     0,    42, -     0,    43,     0,    44,     0,     0,     0,    59,     0,    60, -     0,    61,     0,    58,     4,     0,     0,    54,     4,     0, -     0,    98,    54,     4,     0,    34,    24,     0,     0,   126, -     0,     0,    98,   129,   128,     0,   126,     0,    54,     4, -     0,   132,     0,     8,     0,   134,     0,     8,     0,   134, -     0,     9,     0,    10,     0,    11,     0,    12,     0,    13, -     0,    14,     0,    15,     0,    16,     0,    17,     0,    18, -     0,    19,     0,    20,     0,    21,     0,    45,     0,   133, -     0,   163,     0,    99,     4,     0,   131,   100,   136,   101, -     0,   102,     4,   103,   134,   104,     0,   105,     4,   103, -   134,   106,     0,   107,   135,   108,     0,   107,   108,     0, -   134,   109,     0,   134,     0,   135,    98,   134,     0,   135, -     0,   135,    98,    37,     0,    37,     0,     0,   132,   102, -   139,   104,     0,   132,   102,   104,     0,   132,   110,    24, -     0,   132,   105,   139,   106,     0,   132,   107,   139,   108, -     0,   132,   107,   108,     0,   132,    38,     0,   132,    39, -     0,   132,   163,     0,   132,   138,     0,   132,    26,     0, -   117,   112,     0,   118,     4,     0,     9,    27,     0,     9, -    28,     0,   120,     7,     0,    89,   100,   137,    36,   132, -   101,     0,    87,   100,   137,   177,   101,     0,    90,   100, -   137,    98,   137,    98,   137,   101,     0,   113,   100,   137, -    98,   137,   101,     0,   114,   100,   137,    98,   137,   101, -     0,   115,   100,   137,    98,   137,   101,     0,   116,   100, -   137,    98,   137,   101,     0,    94,   100,   137,    98,   137, -   101,     0,   139,    98,   137,     0,   137,     0,    32,     0, -    33,     0,   142,     0,   142,   159,     0,   142,   160,     0, -   142,    25,     0,   143,     0,   143,   121,    20,   130,     0, -   143,   160,     0,     0,   143,   121,   122,   140,   137,   144, -   128,     0,     0,   143,   121,    47,   140,   132,   145,   128, -     0,   143,    48,   147,     0,   143,    55,    97,   148,     0, -     0,    53,     0,    52,     0,    50,    97,   146,     0,    51, -    97,     4,     0,    49,    97,    24,     0,   102,   149,   104, -     0,   149,    98,    24,     0,    24,     0,     0,    22,     0, -    24,     0,   150,     0,     0,   132,   151,     0,   153,    98, -   152,     0,   152,     0,   153,     0,   153,    98,    37,     0, -    37,     0,     0,   123,   130,   150,   100,   154,   101,   127, -   124,     0,    29,     0,   107,     0,   122,   155,   156,     0, -    30,     0,   108,     0,   166,   158,     0,     0,    31,   161, -   155,     0,     3,     0,     4,     0,     7,     0,    27,     0, -    28,     0,    38,     0,    39,     0,    26,     0,   105,   139, -   106,     0,   138,     0,   111,     0,   150,     0,   163,     0, -   162,     0,   132,   164,     0,   166,   167,     0,   157,   167, -     0,   168,   121,   169,     0,   168,   171,     0,     0,    23, -     0,    62,   165,     0,    62,     8,     0,    63,    21,   164, -     0,    63,     9,   164,    98,    21,   164,    98,    21,   164, -     0,    64,   119,   164,    98,    21,   164,   102,   170,   104, -     0,    64,   119,   164,    98,    21,   164,   102,   104,     0, -    65,   123,   130,   164,   100,   174,   101,    36,    21,   164, -    66,    21,   164,     0,    66,     0,    67,     0,   170,   119, -   162,    98,    21,   164,     0,   119,   162,    98,    21,   164, -     0,   121,   176,     0,   132,   102,   164,    98,   164,   104, -     0,   172,    98,   102,   164,    98,   164,   104,     0,   165, -     0,   173,    98,   165,     0,   173,     0,     0,    57,    56, -     0,    56,     0,   113,   132,   164,    98,   164,     0,   114, -   132,   164,    98,   164,     0,   115,   132,   164,    98,   164, -     0,    46,   165,     0,   116,   165,    98,   165,     0,    89, -   165,    36,   132,     0,    90,   165,    98,   165,    98,   165, -     0,    93,   165,    98,   132,     0,    95,   165,    98,   132, -     0,    96,   165,    98,   132,     0,    94,   165,    98,   165, -     0,    88,   172,     0,   175,   123,   130,   164,   100,   174, -   101,     0,   179,     0,    98,   173,     0,     0,    35,     0, -     0,    82,   132,   125,     0,    82,   132,    98,    15,   164, -   125,     0,    83,   132,   125,     0,    83,   132,    98,    15, -   164,   125,     0,    84,   165,     0,   178,    85,   132,   164, -     0,   178,    86,   165,    98,   132,   164,     0,    87,   132, -   164,   177,     0 -}; +/* Line 214 of yacc.c.  */ +#line 1193 "llvmAsmParser.tab.c" -#endif +#if ! defined (yyoverflow) || YYERROR_VERBOSE -#if YYDEBUG != 0 -static const short yyrline[] = { 0, -   991,   992,   999,  1000,  1009,  1009,  1009,  1009,  1009,  1010, -  1010,  1010,  1011,  1011,  1011,  1011,  1011,  1011,  1013,  1013, -  1017,  1017,  1017,  1017,  1018,  1018,  1018,  1018,  1019,  1019, -  1020,  1020,  1023,  1026,  1030,  1030,  1031,  1032,  1033,  1036, -  1036,  1037,  1038,  1039,  1048,  1048,  1054,  1054,  1062,  1069, -  1069,  1075,  1075,  1077,  1081,  1094,  1094,  1095,  1095,  1097, -  1106,  1106,  1106,  1106,  1106,  1106,  1106,  1107,  1107,  1107, -  1107,  1107,  1107,  1108,  1111,  1114,  1120,  1127,  1139,  1143, -  1154,  1163,  1166,  1174,  1178,  1183,  1184,  1187,  1190,  1200, -  1225,  1238,  1266,  1291,  1311,  1323,  1332,  1336,  1395,  1401, -  1409,  1414,  1419,  1422,  1425,  1432,  1442,  1473,  1480,  1501, -  1511,  1516,  1523,  1533,  1536,  1543,  1543,  1553,  1560,  1564, -  1567,  1570,  1583,  1603,  1605,  1608,  1611,  1615,  1618,  1620, -  1622,  1627,  1628,  1630,  1633,  1641,  1646,  1648,  1652,  1656, -  1664,  1664,  1665,  1665,  1667,  1673,  1678,  1684,  1687,  1692, -  1696,  1700,  1786,  1786,  1788,  1796,  1796,  1798,  1802,  1802, -  1811,  1814,  1817,  1820,  1823,  1826,  1829,  1832,  1835,  1859, -  1866,  1869,  1874,  1874,  1880,  1884,  1887,  1895,  1904,  1908, -  1918,  1929,  1932,  1935,  1938,  1941,  1955,  1959,  2012,  2015, -  2021,  2029,  2039,  2046,  2051,  2058,  2062,  2068,  2068,  2070, -  2073,  2079,  2091,  2102,  2112,  2124,  2131,  2138,  2145,  2150, -  2169,  2191,  2199,  2213,  2270,  2276,  2278,  2282,  2285,  2291, -  2295,  2299,  2303,  2307,  2314,  2324,  2337 -}; -#endif +# ifndef YYFREE +#  define YYFREE free +# endif +# ifndef YYMALLOC +#  define YYMALLOC malloc +# endif +/* The parser invokes alloca or malloc; define the necessary symbols.  */ + +# ifdef YYSTACK_USE_ALLOCA +#  if YYSTACK_USE_ALLOCA +#   define YYSTACK_ALLOC alloca +#  endif +# else +#  if defined (alloca) || defined (_ALLOCA_H) +#   define YYSTACK_ALLOC alloca +#  else +#   ifdef __GNUC__ +#    define YYSTACK_ALLOC __builtin_alloca +#   endif +#  endif +# endif + +# ifdef YYSTACK_ALLOC +   /* Pacify GCC's `empty if-body' warning. */ +#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# else +#  if defined (__STDC__) || defined (__cplusplus) +#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ +#   define YYSIZE_T size_t +#  endif +#  define YYSTACK_ALLOC YYMALLOC +#  define YYSTACK_FREE YYFREE +# 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 +{ +  short 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 (short) + 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					\ +	{					\ +	  register YYSIZE_T yyi;		\ +	  for (yyi = 0; yyi < (Count); yyi++)	\ +	    (To)[yyi] = (From)[yyi];		\ +	}					\ +      while (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 (0) -#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) - -static const char * const yytname[] = {   "$","error","$undefined.","ESINT64VAL", -"EUINT64VAL","SINTVAL","UINTVAL","FPVAL","VOID","BOOL","SBYTE","UBYTE","SHORT", -"USHORT","INT","UINT","LONG","ULONG","FLOAT","DOUBLE","TYPE","LABEL","VAR_ID", -"LABELSTR","STRINGCONSTANT","IMPLEMENTATION","ZEROINITIALIZER","TRUETOK","FALSETOK", -"BEGINTOK","ENDTOK","DECLARE","GLOBAL","CONSTANT","SECTION","VOLATILE","TO", -"DOTDOTDOT","NULL_TOK","UNDEF","CONST","INTERNAL","LINKONCE","WEAK","APPENDING", -"OPAQUE","NOT","EXTERNAL","TARGET","TRIPLE","ENDIAN","POINTERSIZE","LITTLE", -"BIG","ALIGN","DEPLIBS","CALL","TAIL","CC_TOK","CCC_TOK","FASTCC_TOK","COLDCC_TOK", -"RET","BR","SWITCH","INVOKE","UNWIND","UNREACHABLE","ADD","SUB","MUL","DIV", -"REM","AND","OR","XOR","SETLE","SETGE","SETLT","SETGT","SETEQ","SETNE","MALLOC", -"ALLOCA","FREE","LOAD","STORE","GETELEMENTPTR","PHI_TOK","CAST","SELECT","SHL", -"SHR","VAARG","EXTRACTELEMENT","VAARG_old","VANEXT_old","'='","','","'\\\\'", -"'('","')'","'['","'x'","']'","'<'","'>'","'{'","'}'","'*'","'c'","INTVAL","EINT64VAL", -"ArithmeticOps","LogicalOps","SetCondOps","ShiftOps","SIntType","UIntType","IntType", -"FPType","OptAssign","OptLinkage","OptCallingConv","OptAlign","OptCAlign","SectionString", -"OptSection","GlobalVarAttributes","GlobalVarAttribute","TypesV","UpRTypesV", -"Types","PrimType","UpRTypes","TypeListI","ArgTypeListI","ConstVal","ConstExpr", -"ConstVector","GlobalType","Module","FunctionList","ConstPool","@1","@2","BigOrLittle", -"TargetDefinition","LibrariesDefinition","LibList","Name","OptName","ArgVal", -"ArgListH","ArgList","FunctionHeaderH","BEGIN","FunctionHeader","END","Function", -"FunctionProto","@3","ConstValueRef","SymbolicValueRef","ValueRef","ResolvedVal", -"BasicBlockList","BasicBlock","InstructionList","BBTerminatorInst","JumpTable", -"Inst","PHIList","ValueRefList","ValueRefListE","OptTailCall","InstVal","IndexList", -"OptVolatile","MemoryInst", NULL -};  #endif -static const short yyr1[] = {     0, -   111,   111,   112,   112,   113,   113,   113,   113,   113,   114, -   114,   114,   115,   115,   115,   115,   115,   115,   116,   116, -   117,   117,   117,   117,   118,   118,   118,   118,   119,   119, -   120,   120,   121,   121,   122,   122,   122,   122,   122,   123, -   123,   123,   123,   123,   124,   124,   125,   125,   126,   127, -   127,   128,   128,   129,   129,   130,   130,   131,   131,   132, -   133,   133,   133,   133,   133,   133,   133,   133,   133,   133, -   133,   133,   133,   134,   134,   134,   134,   134,   134,   134, -   134,   134,   134,   135,   135,   136,   136,   136,   136,   137, -   137,   137,   137,   137,   137,   137,   137,   137,   137,   137, -   137,   137,   137,   137,   137,   138,   138,   138,   138,   138, -   138,   138,   138,   139,   139,   140,   140,   141,   142,   142, -   142,   142,   143,   143,   144,   143,   145,   143,   143,   143, -   143,   146,   146,   147,   147,   147,   148,   149,   149,   149, -   150,   150,   151,   151,   152,   153,   153,   154,   154,   154, -   154,   155,   156,   156,   157,   158,   158,   159,   161,   160, -   162,   162,   162,   162,   162,   162,   162,   162,   162,   162, -   163,   163,   164,   164,   165,   166,   166,   167,   168,   168, -   168,   169,   169,   169,   169,   169,   169,   169,   169,   169, -   170,   170,   171,   172,   172,   173,   173,   174,   174,   175, -   175,   176,   176,   176,   176,   176,   176,   176,   176,   176, -   176,   176,   176,   176,   176,   177,   177,   178,   178,   179, -   179,   179,   179,   179,   179,   179,   179 +#if defined (__STDC__) || defined (__cplusplus) +   typedef signed char yysigned_char; +#else +   typedef short yysigned_char; +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL  4 +/* YYLAST -- Last index in YYTABLE.  */ +#define YYLAST   1236 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS  111 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS  70 +/* YYNRULES -- Number of rules. */ +#define YYNRULES  228 +/* YYNRULES -- Number of states. */ +#define YYNSTATES  454 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */ +#define YYUNDEFTOK  2 +#define YYMAXUTOK   351 + +#define YYTRANSLATE(YYX) 						\ +  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */ +static const unsigned char 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, +     100,   101,   109,     2,    98,     2,     2,     2,     2,     2, +       2,     2,     2,     2,     2,     2,     2,     2,     2,     2, +     105,    97,   106,     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,   102,    99,   104,     2,     2,     2,     2,     2,   110, +       2,     2,     2,     2,     2,     2,     2,     2,     2,     2, +       2,     2,     2,     2,     2,     2,     2,     2,     2,     2, +     103,     2,     2,   107,     2,   108,     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  }; -static const short yyr2[] = {     0, -     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,     2,     0,     1,     1,     1,     1,     0,     0, -     1,     1,     1,     2,     0,     2,     0,     3,     2,     0, -     1,     0,     3,     1,     2,     1,     1,     1,     1,     1, -     1,     1,     1,     1,     1,     1,     1,     1,     1,     1, -     1,     1,     1,     1,     1,     1,     2,     4,     5,     5, -     3,     2,     2,     1,     3,     1,     3,     1,     0,     4, -     3,     3,     4,     4,     3,     2,     2,     2,     2,     2, -     2,     2,     2,     2,     2,     6,     5,     8,     6,     6, -     6,     6,     6,     3,     1,     1,     1,     1,     2,     2, -     2,     1,     4,     2,     0,     7,     0,     7,     3,     4, -     0,     1,     1,     3,     3,     3,     3,     3,     1,     0, -     1,     1,     1,     0,     2,     3,     1,     1,     3,     1, -     0,     8,     1,     1,     3,     1,     1,     2,     0,     3, -     1,     1,     1,     1,     1,     1,     1,     1,     3,     1, -     1,     1,     1,     1,     2,     2,     2,     3,     2,     0, -     1,     2,     2,     3,     9,     9,     8,    13,     1,     1, -     6,     5,     2,     6,     7,     1,     3,     1,     0,     2, -     1,     5,     5,     5,     2,     4,     4,     6,     4,     4, -     4,     4,     2,     7,     1,     2,     0,     1,     0,     3, -     6,     3,     6,     2,     4,     6,     4 +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in +   YYRHS.  */ +static const unsigned short 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,    70,    71,    73,    75,    77, +      79,    80,    81,    83,    85,    87,    90,    91,    94,    95, +      99,   102,   103,   105,   106,   110,   112,   115,   117,   119, +     121,   123,   125,   127,   129,   131,   133,   135,   137,   139, +     141,   143,   145,   147,   149,   151,   153,   155,   157,   160, +     165,   171,   177,   181,   184,   187,   189,   193,   195,   199, +     201,   202,   207,   211,   215,   220,   225,   229,   232,   235, +     238,   241,   244,   247,   250,   253,   256,   259,   266,   272, +     281,   288,   295,   302,   309,   316,   320,   322,   324,   326, +     328,   331,   334,   337,   339,   344,   347,   348,   356,   357, +     365,   369,   374,   375,   377,   379,   383,   387,   391,   395, +     399,   401,   402,   404,   406,   408,   409,   412,   416,   418, +     420,   424,   426,   427,   436,   438,   440,   444,   446,   448, +     451,   452,   456,   458,   460,   462,   464,   466,   468,   470, +     472,   476,   478,   480,   482,   484,   486,   489,   492,   495, +     499,   502,   503,   505,   508,   511,   515,   525,   535,   544, +     558,   560,   562,   569,   575,   578,   585,   593,   595,   599, +     601,   602,   605,   607,   613,   619,   625,   628,   633,   638, +     645,   650,   655,   660,   665,   668,   676,   678,   681,   682, +     684,   685,   689,   696,   700,   707,   710,   715,   722  }; -static const short yydefact[] = {   131, -    39,   122,   121,   159,    35,    36,    37,    38,    40,   180, -   119,   120,   180,   141,   142,     0,     0,    39,     0,   124, -    40,     0,    41,    42,    43,     0,     0,   181,   177,    34, -   156,   157,   158,   176,     0,     0,     0,   129,     0,     0, -     0,     0,    33,   160,    44,     1,     2,    57,    61,    62, -    63,    64,    65,    66,    67,    68,    69,    70,    71,    72, -    73,    74,     0,     0,     0,     0,   171,     0,     0,    56, -    75,    60,   172,    76,   153,   154,   155,   219,   179,     0, -     0,     0,   140,   130,   123,   116,   117,     0,     0,    77, -     0,     0,    59,    82,    84,     0,     0,    89,    83,   218, -     0,   201,     0,     0,     0,     0,    40,   189,   190,     5, -     6,     7,     8,     9,    10,    11,    12,    13,    14,    15, -    16,    17,    18,     0,     0,     0,     0,     0,     0,     0, -    19,    20,     0,     0,     0,     0,     0,     0,     0,     0, -   178,    40,   193,     0,   215,   136,   133,   132,   134,   135, -   139,     0,   127,    61,    62,    63,    64,    65,    66,    67, -    68,    69,    70,    71,     0,     0,     0,     0,   125,     0, -     0,     0,    81,   151,    88,    86,     0,     0,   205,   200, -   183,   182,     0,     0,    24,    28,    23,    27,    22,    26, -    21,    25,    29,    30,     0,     0,    47,    47,   224,     0, -     0,   213,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,     0,     0,   137,    52,   103,   104, -     3,     4,   101,   102,   105,   100,    96,    97,     0,     0, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -    99,    98,    52,    58,    58,    85,   150,   144,   147,   148, -     0,     0,    78,   161,   162,   163,   168,   164,   165,   166, -   167,     0,   170,   174,   173,   175,     0,   184,     0,     0, -     0,   220,     0,   222,   217,     0,     0,     0,     0,     0, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -   138,     0,   128,     0,     0,     0,     0,    91,   115,     0, -     0,    95,     0,    92,     0,     0,     0,     0,   126,    79, -    80,   143,   145,     0,    50,    87,     0,     0,     0,     0, -     0,     0,     0,     0,   227,     0,     0,   207,     0,   209, -   212,   210,   211,     0,     0,     0,   206,     0,   225,     0, -     0,     0,    54,    52,   217,     0,     0,     0,     0,    90, -    93,    94,     0,     0,     0,     0,   149,   146,    51,    45, -   169,     0,     0,   199,    47,    48,    47,   196,   216,     0, -     0,     0,   202,   203,   204,   199,     0,    49,    55,    53, -     0,     0,     0,     0,   114,     0,     0,     0,     0,     0, -   152,     0,     0,   198,     0,     0,   221,   223,     0,     0, -     0,   208,     0,   226,   107,     0,     0,     0,     0,     0, -     0,     0,    46,     0,     0,     0,   197,   194,     0,   214, -   106,     0,   113,   109,   110,   111,   112,     0,   187,     0, -     0,     0,   195,     0,   185,     0,   186,     0,     0,   108, -     0,     0,     0,     0,     0,     0,   192,     0,     0,   191, -   188,     0,     0,     0 +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const short yyrhs[] = +{ +     142,     0,    -1,     5,    -1,     6,    -1,     3,    -1,     4, +      -1,    68,    -1,    69,    -1,    70,    -1,    71,    -1,    72, +      -1,    73,    -1,    74,    -1,    75,    -1,    76,    -1,    77, +      -1,    78,    -1,    79,    -1,    80,    -1,    81,    -1,    91, +      -1,    92,    -1,    16,    -1,    14,    -1,    12,    -1,    10, +      -1,    17,    -1,    15,    -1,    13,    -1,    11,    -1,   118, +      -1,   119,    -1,    18,    -1,    19,    -1,   151,    97,    -1, +      -1,    41,    -1,    42,    -1,    43,    -1,    44,    -1,    -1, +      -1,    59,    -1,    60,    -1,    61,    -1,    58,     4,    -1, +      -1,    54,     4,    -1,    -1,    98,    54,     4,    -1,    34, +      24,    -1,    -1,   127,    -1,    -1,    98,   130,   129,    -1, +     127,    -1,    54,     4,    -1,   133,    -1,     8,    -1,   135, +      -1,     8,    -1,   135,    -1,     9,    -1,    10,    -1,    11, +      -1,    12,    -1,    13,    -1,    14,    -1,    15,    -1,    16, +      -1,    17,    -1,    18,    -1,    19,    -1,    20,    -1,    21, +      -1,    45,    -1,   134,    -1,   164,    -1,    99,     4,    -1, +     132,   100,   137,   101,    -1,   102,     4,   103,   135,   104, +      -1,   105,     4,   103,   135,   106,    -1,   107,   136,   108, +      -1,   107,   108,    -1,   135,   109,    -1,   135,    -1,   136, +      98,   135,    -1,   136,    -1,   136,    98,    37,    -1,    37, +      -1,    -1,   133,   102,   140,   104,    -1,   133,   102,   104, +      -1,   133,   110,    24,    -1,   133,   105,   140,   106,    -1, +     133,   107,   140,   108,    -1,   133,   107,   108,    -1,   133, +      38,    -1,   133,    39,    -1,   133,   164,    -1,   133,   139, +      -1,   133,    26,    -1,   118,   113,    -1,   119,     4,    -1, +       9,    27,    -1,     9,    28,    -1,   121,     7,    -1,    89, +     100,   138,    36,   133,   101,    -1,    87,   100,   138,   178, +     101,    -1,    90,   100,   138,    98,   138,    98,   138,   101, +      -1,   114,   100,   138,    98,   138,   101,    -1,   115,   100, +     138,    98,   138,   101,    -1,   116,   100,   138,    98,   138, +     101,    -1,   117,   100,   138,    98,   138,   101,    -1,    94, +     100,   138,    98,   138,   101,    -1,   140,    98,   138,    -1, +     138,    -1,    32,    -1,    33,    -1,   143,    -1,   143,   160, +      -1,   143,   161,    -1,   143,    25,    -1,   144,    -1,   144, +     122,    20,   131,    -1,   144,   161,    -1,    -1,   144,   122, +     123,   141,   138,   145,   129,    -1,    -1,   144,   122,    47, +     141,   133,   146,   129,    -1,   144,    48,   148,    -1,   144, +      55,    97,   149,    -1,    -1,    53,    -1,    52,    -1,    50, +      97,   147,    -1,    51,    97,     4,    -1,    49,    97,    24, +      -1,   102,   150,   104,    -1,   150,    98,    24,    -1,    24, +      -1,    -1,    22,    -1,    24,    -1,   151,    -1,    -1,   133, +     152,    -1,   154,    98,   153,    -1,   153,    -1,   154,    -1, +     154,    98,    37,    -1,    37,    -1,    -1,   124,   131,   151, +     100,   155,   101,   128,   125,    -1,    29,    -1,   107,    -1, +     123,   156,   157,    -1,    30,    -1,   108,    -1,   167,   159, +      -1,    -1,    31,   162,   156,    -1,     3,    -1,     4,    -1, +       7,    -1,    27,    -1,    28,    -1,    38,    -1,    39,    -1, +      26,    -1,   105,   140,   106,    -1,   139,    -1,   112,    -1, +     151,    -1,   164,    -1,   163,    -1,   133,   165,    -1,   167, +     168,    -1,   158,   168,    -1,   169,   122,   170,    -1,   169, +     172,    -1,    -1,    23,    -1,    62,   166,    -1,    62,     8, +      -1,    63,    21,   165,    -1,    63,     9,   165,    98,    21, +     165,    98,    21,   165,    -1,    64,   120,   165,    98,    21, +     165,   102,   171,   104,    -1,    64,   120,   165,    98,    21, +     165,   102,   104,    -1,    65,   124,   131,   165,   100,   175, +     101,    36,    21,   165,    66,    21,   165,    -1,    66,    -1, +      67,    -1,   171,   120,   163,    98,    21,   165,    -1,   120, +     163,    98,    21,   165,    -1,   122,   177,    -1,   133,   102, +     165,    98,   165,   104,    -1,   173,    98,   102,   165,    98, +     165,   104,    -1,   166,    -1,   174,    98,   166,    -1,   174, +      -1,    -1,    57,    56,    -1,    56,    -1,   114,   133,   165, +      98,   165,    -1,   115,   133,   165,    98,   165,    -1,   116, +     133,   165,    98,   165,    -1,    46,   166,    -1,   117,   166, +      98,   166,    -1,    89,   166,    36,   133,    -1,    90,   166, +      98,   166,    98,   166,    -1,    93,   166,    98,   133,    -1, +      95,   166,    98,   133,    -1,    96,   166,    98,   133,    -1, +      94,   166,    98,   166,    -1,    88,   173,    -1,   176,   124, +     131,   165,   100,   175,   101,    -1,   180,    -1,    98,   174, +      -1,    -1,    35,    -1,    -1,    82,   133,   126,    -1,    82, +     133,    98,    15,   165,   126,    -1,    83,   133,   126,    -1, +      83,   133,    98,    15,   165,   126,    -1,    84,   166,    -1, +     179,    85,   133,   165,    -1,   179,    86,   166,    98,   133, +     165,    -1,    87,   133,   165,   178,    -1  }; -static const short yydefgoto[] = {    67, -   223,   237,   238,   239,   240,   165,   166,   195,   167,    18, -     9,    26,   391,   272,   343,   360,   293,   344,    68,    69, -   168,    71,    72,    96,   177,   299,   263,   300,    88,   452, -     1,     2,   243,   218,   149,    38,    84,   152,    73,   313, -   249,   250,   251,    27,    77,    10,    33,    11,    12,    21, -   264,    74,   266,   368,    13,    29,    30,   141,   431,    79, -   202,   394,   395,   142,   143,   325,   144,   145 +/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ +static const unsigned short yyrline[] = +{ +       0,   996,   996,   997,  1004,  1005,  1014,  1014,  1014,  1014, +    1014,  1015,  1015,  1015,  1016,  1016,  1016,  1016,  1016,  1016, +    1018,  1018,  1022,  1022,  1022,  1022,  1023,  1023,  1023,  1023, +    1024,  1024,  1025,  1025,  1028,  1031,  1035,  1036,  1037,  1038, +    1039,  1041,  1042,  1043,  1044,  1045,  1053,  1054,  1059,  1060, +    1067,  1074,  1075,  1080,  1081,  1082,  1086,  1099,  1099,  1100, +    1100,  1102,  1111,  1111,  1111,  1111,  1111,  1111,  1111,  1112, +    1112,  1112,  1112,  1112,  1112,  1113,  1116,  1119,  1125,  1132, +    1144,  1148,  1159,  1168,  1171,  1179,  1183,  1188,  1189,  1192, +    1195,  1205,  1230,  1243,  1271,  1296,  1316,  1328,  1337,  1341, +    1400,  1406,  1414,  1419,  1424,  1427,  1430,  1437,  1447,  1478, +    1485,  1506,  1516,  1521,  1528,  1538,  1541,  1548,  1548,  1558, +    1565,  1569,  1572,  1575,  1588,  1608,  1610,  1610,  1616,  1616, +    1623,  1625,  1627,  1632,  1633,  1635,  1638,  1646,  1651,  1653, +    1657,  1661,  1669,  1669,  1670,  1670,  1672,  1678,  1683,  1689, +    1692,  1697,  1701,  1705,  1791,  1791,  1793,  1801,  1801,  1803, +    1807,  1807,  1816,  1819,  1822,  1825,  1828,  1831,  1834,  1837, +    1840,  1864,  1871,  1874,  1879,  1879,  1885,  1889,  1892,  1900, +    1909,  1913,  1923,  1934,  1937,  1940,  1943,  1946,  1960,  1964, +    2017,  2020,  2026,  2034,  2044,  2051,  2056,  2063,  2067,  2073, +    2073,  2075,  2078,  2084,  2096,  2107,  2117,  2129,  2136,  2143, +    2150,  2155,  2174,  2196,  2204,  2218,  2275,  2281,  2283,  2287, +    2290,  2296,  2300,  2304,  2308,  2312,  2319,  2329,  2342  }; +#endif -static const short yypact[] = {-32768, -    41,   181,-32768,-32768,-32768,-32768,-32768,-32768,    62,    12, --32768,-32768,   -14,-32768,-32768,   100,    -8,    49,     0,-32768, -    62,    38,-32768,-32768,-32768,   979,   -19,-32768,-32768,   112, --32768,-32768,-32768,-32768,     8,    27,    68,-32768,    36,   979, -   -13,   -13,-32768,-32768,-32768,-32768,-32768,    69,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,   169,   171,   173,   491,-32768,   112,    78,-32768, --32768,   -82,-32768,-32768,-32768,-32768,-32768,  1140,-32768,   156, -    24,   177,   158,-32768,-32768,-32768,-32768,  1017,  1055,-32768, -    81,    83,-32768,-32768,   -82,   -77,    90,   789,-32768,-32768, -  1017,-32768,   136,  1093,     4,   116,    62,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,  1017,  1017,  1017,  1017,  1017,  1017,  1017, --32768,-32768,  1017,  1017,  1017,  1017,  1017,  1017,  1017,  1017, --32768,    62,-32768,    59,-32768,-32768,-32768,-32768,-32768,-32768, --32768,   -24,-32768,   126,   152,   189,   155,   190,   157,   191, -   160,   192,   193,   195,   168,   194,   197,   360,-32768,  1017, -  1017,  1017,-32768,   827,-32768,   101,   105,   610,-32768,-32768, -    69,-32768,   610,   610,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,   610,   979,   113,   117,-32768,   610, -   114,   119,   196,   128,   132,   133,   137,   139,   610,   610, -   610,   140,   979,  1017,  1017,   210,-32768,   141,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   142,   143, -   144,   147,   865,  1055,   567,   216,   148,   149,   151,   159, --32768,-32768,   141,    33,    37,   -82,-32768,   112,-32768,   162, -   163,   903,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,  1055,-32768,-32768,-32768,-32768,   165,-32768,   167,   610, -     7,-32768,     9,-32768,   170,   610,   164,  1017,  1017,  1017, -  1017,  1017,  1017,   172,   174,   175,  1017,   610,   610,   176, --32768,    52,-32768,  1055,  1055,  1055,  1055,-32768,-32768,   -17, -   -83,-32768,   -72,-32768,  1055,  1055,  1055,  1055,-32768,-32768, --32768,-32768,-32768,   941,   207,-32768,   -33,   237,   246,   179, -   610,   265,   610,  1017,-32768,   183,   610,-32768,   184,-32768, --32768,-32768,-32768,   610,   610,   610,-32768,   185,-32768,  1017, -   247,   271,-32768,   141,   170,   241,   188,   208,  1055,-32768, --32768,-32768,   209,   211,   213,   215,-32768,-32768,-32768,   229, --32768,   610,   610,  1017,   217,-32768,   217,-32768,   219,   610, -   220,  1017,-32768,-32768,-32768,  1017,   610,-32768,-32768,-32768, -   186,  1017,  1055,  1055,-32768,  1055,  1055,  1055,  1055,   285, --32768,   224,   206,   219,   222,   236,-32768,-32768,  1017,   221, -   610,-32768,   223,-32768,-32768,   228,   235,   238,   239,   240, -   242,   243,-32768,   273,    35,   259,-32768,-32768,   232,-32768, --32768,  1055,-32768,-32768,-32768,-32768,-32768,   610,-32768,   691, -    43,   316,-32768,   244,-32768,   249,-32768,   691,   610,-32768, -   321,   250,   283,   610,   330,   331,-32768,   610,   610,-32768, --32768,   353,   354,-32768 +#if YYDEBUG || YYERROR_VERBOSE +/* YYTNME[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", "SINTVAL", +  "UINTVAL", "FPVAL", "VOID", "BOOL", "SBYTE", "UBYTE", "SHORT", "USHORT", +  "INT", "UINT", "LONG", "ULONG", "FLOAT", "DOUBLE", "TYPE", "LABEL", +  "VAR_ID", "LABELSTR", "STRINGCONSTANT", "IMPLEMENTATION", +  "ZEROINITIALIZER", "TRUETOK", "FALSETOK", "BEGINTOK", "ENDTOK", +  "DECLARE", "GLOBAL", "CONSTANT", "SECTION", "VOLATILE", "TO", +  "DOTDOTDOT", "NULL_TOK", "UNDEF", "CONST", "INTERNAL", "LINKONCE", +  "WEAK", "APPENDING", "OPAQUE", "NOT", "EXTERNAL", "TARGET", "TRIPLE", +  "ENDIAN", "POINTERSIZE", "LITTLE", "BIG", "ALIGN", "DEPLIBS", "CALL", +  "TAIL", "CC_TOK", "CCC_TOK", "FASTCC_TOK", "COLDCC_TOK", "RET", "BR", +  "SWITCH", "INVOKE", "UNWIND", "UNREACHABLE", "ADD", "SUB", "MUL", "DIV", +  "REM", "AND", "OR", "XOR", "SETLE", "SETGE", "SETLT", "SETGT", "SETEQ", +  "SETNE", "MALLOC", "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR", +  "PHI_TOK", "CAST", "SELECT", "SHL", "SHR", "VAARG", "EXTRACTELEMENT", +  "VAARG_old", "VANEXT_old", "'='", "','", "'\\\\'", "'('", "')'", "'['", +  "'x'", "']'", "'<'", "'>'", "'{'", "'}'", "'*'", "'c'", "$accept", +  "INTVAL", "EINT64VAL", "ArithmeticOps", "LogicalOps", "SetCondOps", +  "ShiftOps", "SIntType", "UIntType", "IntType", "FPType", "OptAssign", +  "OptLinkage", "OptCallingConv", "OptAlign", "OptCAlign", "SectionString", +  "OptSection", "GlobalVarAttributes", "GlobalVarAttribute", "TypesV", +  "UpRTypesV", "Types", "PrimType", "UpRTypes", "TypeListI", +  "ArgTypeListI", "ConstVal", "ConstExpr", "ConstVector", "GlobalType", +  "Module", "FunctionList", "ConstPool", "@1", "@2", "BigOrLittle", +  "TargetDefinition", "LibrariesDefinition", "LibList", "Name", "OptName", +  "ArgVal", "ArgListH", "ArgList", "FunctionHeaderH", "BEGIN", +  "FunctionHeader", "END", "Function", "FunctionProto", "@3", +  "ConstValueRef", "SymbolicValueRef", "ValueRef", "ResolvedVal", +  "BasicBlockList", "BasicBlock", "InstructionList", "BBTerminatorInst", +  "JumpTable", "Inst", "PHIList", "ValueRefList", "ValueRefListE", +  "OptTailCall", "InstVal", "IndexList", "OptVolatile", "MemoryInst", 0  }; +#endif -static const short yypgoto[] = {-32768, --32768,   277,   279,   281,   282,  -105,  -103,  -403,-32768,   332, -   343,   -78,-32768,  -191,    48,-32768,  -226,-32768,   -34,-32768, -   -26,-32768,   -55,   266,-32768,   -87,   199,  -167,   326,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,     2,-32768, -    55,-32768,-32768,   349,-32768,-32768,-32768,-32768,   369,-32768, -  -359,   -43,   121,   -96,-32768,   359,-32768,-32768,-32768,-32768, --32768,    50,    -1,-32768,-32768,    31,-32768,-32768 +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to +   token YYLEX-NUM.  */ +static const unsigned short 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,    61,    44,    92, +      40,    41,    91,   120,    93,    60,    62,   123,   125,    42, +      99  }; +# endif +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */ +static const unsigned char yyr1[] = +{ +       0,   111,   112,   112,   113,   113,   114,   114,   114,   114, +     114,   115,   115,   115,   116,   116,   116,   116,   116,   116, +     117,   117,   118,   118,   118,   118,   119,   119,   119,   119, +     120,   120,   121,   121,   122,   122,   123,   123,   123,   123, +     123,   124,   124,   124,   124,   124,   125,   125,   126,   126, +     127,   128,   128,   129,   129,   130,   130,   131,   131,   132, +     132,   133,   134,   134,   134,   134,   134,   134,   134,   134, +     134,   134,   134,   134,   134,   135,   135,   135,   135,   135, +     135,   135,   135,   135,   135,   136,   136,   137,   137,   137, +     137,   138,   138,   138,   138,   138,   138,   138,   138,   138, +     138,   138,   138,   138,   138,   138,   138,   139,   139,   139, +     139,   139,   139,   139,   139,   140,   140,   141,   141,   142, +     143,   143,   143,   143,   144,   144,   145,   144,   146,   144, +     144,   144,   144,   147,   147,   148,   148,   148,   149,   150, +     150,   150,   151,   151,   152,   152,   153,   154,   154,   155, +     155,   155,   155,   156,   157,   157,   158,   159,   159,   160, +     162,   161,   163,   163,   163,   163,   163,   163,   163,   163, +     163,   163,   164,   164,   165,   165,   166,   167,   167,   168, +     169,   169,   169,   170,   170,   170,   170,   170,   170,   170, +     170,   170,   171,   171,   172,   173,   173,   174,   174,   175, +     175,   176,   176,   177,   177,   177,   177,   177,   177,   177, +     177,   177,   177,   177,   177,   177,   177,   178,   178,   179, +     179,   180,   180,   180,   180,   180,   180,   180,   180 +}; -#define	YYLAST		1236 - - -static const short yytable[] = {    70, -   193,   169,   194,    19,   179,    85,   274,   182,    28,    75, -    95,   430,   183,    70,   349,    31,   309,   -58,    86,    87, -   172,   321,   351,   323,   184,   349,    99,   438,   196,   199, -   173,    19,   203,   204,    28,   352,   205,   206,   207,   208, -  -118,    45,    95,   212,   185,   186,   187,   188,   189,   190, -   191,   192,   185,   186,   187,   188,   189,   190,   191,   192, -   322,   153,   322,   213,   349,     3,   301,   303,    40,    97, -   436,     4,   361,   216,   178,   147,   148,   178,   442,   217, -   349,     5,     6,     7,     8,   341,   350,    76,    39,     5, -     6,     7,     8,    32,   317,    41,    43,   197,   198,   178, -   200,   201,   178,   178,    80,   342,   178,   178,   178,   178, -   209,   210,   211,   178,   244,   245,   246,   380,   290,    22, -    23,    24,    25,    81,   242,   185,   186,   187,   188,   189, -   190,   191,   192,    14,   265,    15,   310,    83,   429,   265, -   265,    99,   311,   214,   215,    99,   437,   248,    35,    36, -    37,   265,   219,   220,   -24,   -24,   265,   -23,   -23,   -22, -   -22,   270,   -21,   -21,    82,   265,   265,   265,   -59,    70, -   221,   222,    90,   397,    91,   398,    92,    98,   288,   146, -   150,   151,   329,   170,   331,   171,    70,   289,   178,   174, -   337,   180,   -28,   -27,   -26,   -25,   246,   224,   252,   -31, -   -34,   -32,    14,   225,    15,   253,   345,   346,   347,   348, -   271,     4,   -34,   -34,   273,   276,   277,   353,   354,   355, -   356,   -34,   -34,   -34,   -34,   279,   265,   -34,    16,   280, -   281,   278,   265,   291,   282,    17,   283,   287,   292,   304, -   341,   294,   295,   296,   265,   265,   297,   305,   306,   312, -   307,   328,   178,   330,   178,   332,   333,   362,   308,   314, -   178,   385,   318,   315,   319,   327,   363,   324,   366,   334, -   378,   335,   336,   340,   379,   402,   382,   265,   364,   265, -   370,   372,   390,   265,   376,   383,   405,   248,   413,   322, -   265,   265,   265,   428,   432,   407,   408,   178,   409,   410, -   411,   412,   417,   267,   268,   384,   386,   415,   387,   193, -   388,   194,   389,   377,   396,   269,   399,   401,   265,   265, -   275,   414,   416,   420,   418,   193,   265,   194,   421,   284, -   285,   286,   422,   265,   434,   433,   439,   178,   423,   424, -   425,   444,   426,   427,   440,   178,   441,   445,   446,   178, -   448,   449,   453,   454,   137,   406,   138,   265,   139,   140, -    42,    78,   359,   176,    46,    47,   241,    89,   358,    44, -    20,    34,   178,   369,   403,   381,     0,     0,     0,     0, -     0,    14,     0,    15,   265,   226,     0,     0,     0,     0, -   320,     0,     0,     0,     0,   265,   326,   227,   228,     0, -   265,     0,     0,     0,   265,   265,     0,     0,   338,   339, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,     0,     0,     0,   110,   111,   112, -   113,   114,   115,   116,   117,   118,   119,   120,   121,   122, -   123,   365,     0,   367,     0,     0,   229,   371,   230,   231, -   131,   132,     0,   232,   373,   374,   375,     0,     0,     0, -     0,   233,     0,     0,   234,     0,   235,     0,     0,   236, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,   392,   393,     0,     0,     0,     0,     0,     0, -   400,     0,     0,     0,     0,    46,    47,   404,    93,    49, -    50,    51,    52,    53,    54,    55,    56,    57,    58,    59, -    60,    61,    14,     0,    15,     0,     0,     0,     0,     0, -     0,   419,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,     0,    62,     0,     0,     0,     0, -     0,     0,     0,     0,     0,     0,     0,     0,   435,     0, -     0,     0,     0,     0,     0,     0,     0,     0,     0,   443, -     0,     0,     0,     0,   447,     0,     0,     0,   450,   451, -     0,    46,    47,     0,    93,   154,   155,   156,   157,   158, -   159,   160,   161,   162,   163,   164,    60,    61,    14,    63, -    15,     0,    64,     0,     0,    65,     0,    66,    94,     0, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,    62,   254,   255,    46,    47,   256,     0,     0,     0, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,    14,     0,    15,     0,   257,   258,   259,     0,     0, -     0,     0,     0,     0,     0,     0,     0,   260,   261,     0, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,     0,    63,     0,     0,    64,     0, -     0,    65,     0,    66,   302,     0,     0,   110,   111,   112, -   113,   114,   115,   116,   117,   118,   119,   120,   121,   122, -   123,     0,     0,   254,   255,     0,   229,   256,   230,   231, -   131,   132,     0,   232,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,   262,     0,   257,   258,   259,     0, -     0,     0,     0,     0,     0,     0,     0,     0,   260,   261, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,     0,     0,     0,     0,   110,   111, -   112,   113,   114,   115,   116,   117,   118,   119,   120,   121, -   122,   123,     0,     0,     0,     0,     0,   229,     0,   230, -   231,   131,   132,     0,   232,     0,     0,     0,     0,     0, -     0,     0,     0,    46,    47,   262,    93,    49,    50,    51, -    52,    53,    54,    55,    56,    57,    58,    59,    60,    61, -    14,     0,    15,     0,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,     0,   175,     0,     0,     0,     0, -     0,    46,    47,    62,    93,    49,    50,    51,    52,    53, -    54,    55,    56,    57,    58,    59,    60,    61,    14,     0, -    15,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,     0,   247,     0,     0,     0,     0,     0,    46, -    47,    62,    93,   154,   155,   156,   157,   158,   159,   160, -   161,   162,   163,   164,    60,    61,    14,    63,    15,     0, -    64,     0,     0,    65,     0,    66,     0,     0,     0,     0, -     0,     0,     0,     0,     0,     0,     0,    46,    47,    62, -    93,    49,    50,    51,    52,    53,    54,    55,    56,    57, -    58,    59,    60,    61,    14,    63,    15,     0,    64,     0, -     0,    65,     0,    66,     0,     0,     0,     0,     0,   316, -     0,     0,     0,     0,     0,    46,    47,    62,    93,    49, -    50,    51,    52,    53,    54,    55,    56,    57,    58,    59, -    60,    61,    14,    63,    15,     0,    64,     0,   298,    65, -     0,    66,     0,     0,     0,     0,     0,   357,     0,     0, -     0,     0,     0,    46,    47,    62,    48,    49,    50,    51, -    52,    53,    54,    55,    56,    57,    58,    59,    60,    61, -    14,    63,    15,     0,    64,     0,     0,    65,     0,    66, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,    46,    47,    62,    93,    49,    50,    51,    52,    53, -    54,    55,    56,    57,    58,    59,    60,    61,    14,    63, -    15,     0,    64,     0,     0,    65,     0,    66,     0,     0, -     0,     0,     0,     0,     0,     0,     0,     0,     0,    46, -    47,    62,    93,   154,   155,   156,   157,   158,   159,   160, -   161,   162,   163,   164,    60,    61,    14,    63,    15,     0, -    64,     0,     0,    65,     0,    66,     0,     0,     0,     0, -     0,     0,     0,     0,     0,     0,     0,    46,    47,    62, -   181,    49,    50,    51,    52,    53,    54,    55,    56,    57, -    58,    59,    60,    61,    14,    63,    15,     0,    64,     0, -     0,    65,     0,    66,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,     0,     0,     0,    62,     0,     0, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,     0,    63,     0,     0,    64,     0,     0,    65, -     0,    66,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,   100,     0,     0,     0,     0,     0, -     0,     0,     0,     0,     0,   101,     0,     0,     0,     0, -     0,    63,     0,     0,    64,   102,   103,    65,     0,    66, -     0,   104,   105,   106,   107,   108,   109,   110,   111,   112, -   113,   114,   115,   116,   117,   118,   119,   120,   121,   122, -   123,   124,   125,   126,     0,     0,   127,   128,   129,   130, -   131,   132,   133,   134,   135,   136 +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */ +static const unsigned char 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,     2,     0,     1,     1,     1,     1, +       0,     0,     1,     1,     1,     2,     0,     2,     0,     3, +       2,     0,     1,     0,     3,     1,     2,     1,     1,     1, +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1, +       1,     1,     1,     1,     1,     1,     1,     1,     2,     4, +       5,     5,     3,     2,     2,     1,     3,     1,     3,     1, +       0,     4,     3,     3,     4,     4,     3,     2,     2,     2, +       2,     2,     2,     2,     2,     2,     2,     6,     5,     8, +       6,     6,     6,     6,     6,     3,     1,     1,     1,     1, +       2,     2,     2,     1,     4,     2,     0,     7,     0,     7, +       3,     4,     0,     1,     1,     3,     3,     3,     3,     3, +       1,     0,     1,     1,     1,     0,     2,     3,     1,     1, +       3,     1,     0,     8,     1,     1,     3,     1,     1,     2, +       0,     3,     1,     1,     1,     1,     1,     1,     1,     1, +       3,     1,     1,     1,     1,     1,     2,     2,     2,     3, +       2,     0,     1,     2,     2,     3,     9,     9,     8,    13, +       1,     1,     6,     5,     2,     6,     7,     1,     3,     1, +       0,     2,     1,     5,     5,     5,     2,     4,     4,     6, +       4,     4,     4,     4,     2,     7,     1,     2,     0,     1, +       0,     3,     6,     3,     6,     2,     4,     6,     4  }; -static const short yycheck[] = {    26, -   106,    89,   106,     2,   101,    40,   198,   104,    23,    29, -    66,   415,     9,    40,    98,    30,   243,   100,    32,    33, -    98,    15,   106,    15,    21,    98,   109,   431,   107,   126, -   108,    30,   129,   130,    23,   108,   133,   134,   135,   136, -     0,     4,    98,   140,    10,    11,    12,    13,    14,    15, -    16,    17,    10,    11,    12,    13,    14,    15,    16,    17, -    54,    88,    54,   142,    98,    25,   234,   235,    20,    68, -   430,    31,   106,    98,   101,    52,    53,   104,   438,   104, -    98,    41,    42,    43,    44,    34,   104,   107,    97,    41, -    42,    43,    44,   108,   262,    47,    97,   124,   125,   126, -   127,   128,   129,   130,    97,    54,   133,   134,   135,   136, -   137,   138,   139,   140,   170,   171,   172,   344,   215,    58, -    59,    60,    61,    97,   168,    10,    11,    12,    13,    14, -    15,    16,    17,    22,   178,    24,   104,   102,   104,   183, -   184,   109,   106,    85,    86,   109,   104,   174,    49,    50, -    51,   195,    27,    28,     3,     4,   200,     3,     4,     3, -     4,   196,     3,     4,    97,   209,   210,   211,   100,   196, -     3,     4,     4,   365,     4,   367,     4,   100,   213,    24, -     4,    24,   279,   103,   281,   103,   213,   214,   215,   100, -   287,    56,     4,     4,     4,     4,   252,     4,    98,     7, -    20,     7,    22,     7,    24,   101,   294,   295,   296,   297, -    98,    31,    32,    33,    98,   102,    98,   305,   306,   307, -   308,    41,    42,    43,    44,    98,   270,    47,    48,    98, -    98,    36,   276,    24,    98,    55,    98,    98,    98,    24, -    34,   100,   100,   100,   288,   289,   100,   100,   100,   248, -   100,   278,   279,   280,   281,   282,   283,    21,   100,    98, -   287,   349,    98,   101,    98,   102,    21,    98,     4,    98, -    24,    98,    98,    98,     4,   372,    36,   321,   100,   323, -    98,    98,    54,   327,   100,    98,   101,   314,     4,    54, -   334,   335,   336,    21,    36,   383,   384,   324,   386,   387, -   388,   389,   399,   183,   184,    98,    98,   102,    98,   415, -    98,   415,    98,   340,    98,   195,    98,    98,   362,   363, -   200,    98,   101,   101,   104,   431,   370,   431,   101,   209, -   210,   211,    98,   377,   422,   104,    21,   364,   101,   101, -   101,    21,   101,   101,   101,   372,    98,    98,    66,   376, -    21,    21,     0,     0,    78,   382,    78,   401,    78,    78, -    18,    30,   315,    98,     5,     6,   168,    42,   314,    21, -     2,    13,   399,   324,   376,   345,    -1,    -1,    -1,    -1, -    -1,    22,    -1,    24,   428,    26,    -1,    -1,    -1,    -1, -   270,    -1,    -1,    -1,    -1,   439,   276,    38,    39,    -1, -   444,    -1,    -1,    -1,   448,   449,    -1,    -1,   288,   289, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70, -    71,    72,    73,    74,    75,    76,    77,    78,    79,    80, -    81,   321,    -1,   323,    -1,    -1,    87,   327,    89,    90, -    91,    92,    -1,    94,   334,   335,   336,    -1,    -1,    -1, -    -1,   102,    -1,    -1,   105,    -1,   107,    -1,    -1,   110, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,   362,   363,    -1,    -1,    -1,    -1,    -1,    -1, -   370,    -1,    -1,    -1,    -1,     5,     6,   377,     8,     9, -    10,    11,    12,    13,    14,    15,    16,    17,    18,    19, -    20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1, -    -1,   401,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   428,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   439, -    -1,    -1,    -1,    -1,   444,    -1,    -1,    -1,   448,   449, -    -1,     5,     6,    -1,     8,     9,    10,    11,    12,    13, -    14,    15,    16,    17,    18,    19,    20,    21,    22,    99, -    24,    -1,   102,    -1,    -1,   105,    -1,   107,   108,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    45,     3,     4,     5,     6,     7,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    22,    -1,    24,    -1,    26,    27,    28,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    99,    -1,    -1,   102,    -1, -    -1,   105,    -1,   107,   108,    -1,    -1,    68,    69,    70, -    71,    72,    73,    74,    75,    76,    77,    78,    79,    80, -    81,    -1,    -1,     3,     4,    -1,    87,     7,    89,    90, -    91,    92,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,   105,    -1,    26,    27,    28,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    39, -    -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,    68,    69, -    70,    71,    72,    73,    74,    75,    76,    77,    78,    79, -    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    -1,    89, -    90,    91,    92,    -1,    94,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,     5,     6,   105,     8,     9,    10,    11, -    12,    13,    14,    15,    16,    17,    18,    19,    20,    21, -    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1, -    -1,     5,     6,    45,     8,     9,    10,    11,    12,    13, -    14,    15,    16,    17,    18,    19,    20,    21,    22,    -1, -    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,     5, -     6,    45,     8,     9,    10,    11,    12,    13,    14,    15, -    16,    17,    18,    19,    20,    21,    22,    99,    24,    -1, -   102,    -1,    -1,   105,    -1,   107,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,     6,    45, -     8,     9,    10,    11,    12,    13,    14,    15,    16,    17, -    18,    19,    20,    21,    22,    99,    24,    -1,   102,    -1, -    -1,   105,    -1,   107,    -1,    -1,    -1,    -1,    -1,    37, -    -1,    -1,    -1,    -1,    -1,     5,     6,    45,     8,     9, -    10,    11,    12,    13,    14,    15,    16,    17,    18,    19, -    20,    21,    22,    99,    24,    -1,   102,    -1,   104,   105, -    -1,   107,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1, -    -1,    -1,    -1,     5,     6,    45,     8,     9,    10,    11, -    12,    13,    14,    15,    16,    17,    18,    19,    20,    21, -    22,    99,    24,    -1,   102,    -1,    -1,   105,    -1,   107, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,     5,     6,    45,     8,     9,    10,    11,    12,    13, -    14,    15,    16,    17,    18,    19,    20,    21,    22,    99, -    24,    -1,   102,    -1,    -1,   105,    -1,   107,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5, -     6,    45,     8,     9,    10,    11,    12,    13,    14,    15, -    16,    17,    18,    19,    20,    21,    22,    99,    24,    -1, -   102,    -1,    -1,   105,    -1,   107,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,     6,    45, -     8,     9,    10,    11,    12,    13,    14,    15,    16,    17, -    18,    19,    20,    21,    22,    99,    24,    -1,   102,    -1, -    -1,   105,    -1,   107,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    99,    -1,    -1,   102,    -1,    -1,   105, -    -1,   107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    -1,    -1, -    -1,    99,    -1,    -1,   102,    56,    57,   105,    -1,   107, -    -1,    62,    63,    64,    65,    66,    67,    68,    69,    70, -    71,    72,    73,    74,    75,    76,    77,    78,    79,    80, -    81,    82,    83,    84,    -1,    -1,    87,    88,    89,    90, -    91,    92,    93,    94,    95,    96 +/* 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 unsigned char yydefact[] = +{ +     132,     0,    40,   123,     1,   122,   160,    36,    37,    38, +      39,    41,   181,   120,   121,   181,   142,   143,     0,     0, +      40,     0,   125,    41,     0,    42,    43,    44,     0,     0, +     182,   178,    35,   157,   158,   159,   177,     0,     0,     0, +     130,     0,     0,     0,     0,    34,   161,    45,     2,     3, +      58,    62,    63,    64,    65,    66,    67,    68,    69,    70, +      71,    72,    73,    74,    75,     0,     0,     0,     0,   172, +       0,     0,    57,    76,    61,   173,    77,   154,   155,   156, +     220,   180,     0,     0,     0,   141,   131,   124,   117,   118, +       0,     0,    78,     0,     0,    60,    83,    85,     0,     0, +      90,    84,   219,     0,   202,     0,     0,     0,     0,    41, +     190,   191,     6,     7,     8,     9,    10,    11,    12,    13, +      14,    15,    16,    17,    18,    19,     0,     0,     0,     0, +       0,     0,     0,    20,    21,     0,     0,     0,     0,     0, +       0,     0,     0,   179,    41,   194,     0,   216,   137,   134, +     133,   135,   136,   140,     0,   128,    62,    63,    64,    65, +      66,    67,    68,    69,    70,    71,    72,     0,     0,     0, +       0,   126,     0,     0,     0,    82,   152,    89,    87,     0, +       0,   206,   201,   184,   183,     0,     0,    25,    29,    24, +      28,    23,    27,    22,    26,    30,    31,     0,     0,    48, +      48,   225,     0,     0,   214,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,     0,   138, +      53,   104,   105,     4,     5,   102,   103,   106,   101,    97, +      98,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,   100,    99,    53,    59,    59,    86,   151, +     145,   148,   149,     0,     0,    79,   162,   163,   164,   169, +     165,   166,   167,   168,     0,   171,   175,   174,   176,     0, +     185,     0,     0,     0,   221,     0,   223,   218,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,   139,     0,   129,     0,     0,     0,     0, +      92,   116,     0,     0,    96,     0,    93,     0,     0,     0, +       0,   127,    80,    81,   144,   146,     0,    51,    88,     0, +       0,     0,     0,     0,     0,     0,     0,   228,     0,     0, +     208,     0,   210,   213,   211,   212,     0,     0,     0,   207, +       0,   226,     0,     0,     0,    55,    53,   218,     0,     0, +       0,     0,    91,    94,    95,     0,     0,     0,     0,   150, +     147,    52,    46,   170,     0,     0,   200,    48,    49,    48, +     197,   217,     0,     0,     0,   203,   204,   205,   200,     0, +      50,    56,    54,     0,     0,     0,     0,   115,     0,     0, +       0,     0,     0,   153,     0,     0,   199,     0,     0,   222, +     224,     0,     0,     0,   209,     0,   227,   108,     0,     0, +       0,     0,     0,     0,     0,    47,     0,     0,     0,   198, +     195,     0,   215,   107,     0,   114,   110,   111,   112,   113, +       0,   188,     0,     0,     0,   196,     0,   186,     0,   187, +       0,     0,   109,     0,     0,     0,     0,     0,     0,   193, +       0,     0,   192,   189  }; -/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */ -#line 3 "/usr/share/bison.simple" -/* This file comes from bison-1.28.  */ -/* Skeleton output parser for bison, -   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. +/* YYDEFGOTO[NTERM-NUM]. */ +static const short yydefgoto[] = +{ +      -1,    69,   225,   239,   240,   241,   242,   167,   168,   197, +     169,    20,    11,    28,   393,   274,   345,   362,   295,   346, +      70,    71,   170,    73,    74,    98,   179,   301,   265,   302, +      90,     1,     2,     3,   245,   220,   151,    40,    86,   154, +      75,   315,   251,   252,   253,    29,    79,    12,    35,    13, +      14,    23,   266,    76,   268,   370,    15,    31,    32,   143, +     433,    81,   204,   396,   397,   144,   145,   327,   146,   147 +}; -   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. +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing +   STATE-NUM.  */ +#define YYPACT_NINF -408 +static const short yypact[] = +{ +    -408,    21,   120,   181,  -408,  -408,  -408,  -408,  -408,  -408, +    -408,    63,     1,  -408,  -408,   -14,  -408,  -408,    87,   -66, +      48,   -23,  -408,    63,    79,  -408,  -408,  -408,   979,   -22, +    -408,  -408,    62,  -408,  -408,  -408,  -408,   -10,    37,    47, +    -408,    44,   979,    64,    64,  -408,  -408,  -408,  -408,  -408, +      65,  -408,  -408,  -408,  -408,  -408,  -408,  -408,  -408,  -408, +    -408,  -408,  -408,  -408,  -408,   165,   170,   172,   491,  -408, +      62,    80,  -408,  -408,   -82,  -408,  -408,  -408,  -408,  -408, +    1140,  -408,   157,    53,   178,   160,  -408,  -408,  -408,  -408, +    1017,  1055,  -408,    83,    89,  -408,  -408,   -82,   -85,    90, +     789,  -408,  -408,  1017,  -408,   137,  1093,    11,   116,    63, +    -408,  -408,  -408,  -408,  -408,  -408,  -408,  -408,  -408,  -408, +    -408,  -408,  -408,  -408,  -408,  -408,  1017,  1017,  1017,  1017, +    1017,  1017,  1017,  -408,  -408,  1017,  1017,  1017,  1017,  1017, +    1017,  1017,  1017,  -408,    63,  -408,    57,  -408,  -408,  -408, +    -408,  -408,  -408,  -408,   -62,  -408,   122,   150,   190,   152, +     191,   155,   192,   168,   194,   193,   195,   175,   200,   199, +     360,  -408,  1017,  1017,  1017,  -408,   827,  -408,   101,   110, +     610,  -408,  -408,    65,  -408,   610,   610,  -408,  -408,  -408, +    -408,  -408,  -408,  -408,  -408,  -408,  -408,   610,   979,   117, +     118,  -408,   610,   115,   128,   196,   132,   133,   136,   139, +     140,   610,   610,   610,   141,   979,  1017,  1017,   211,  -408, +     142,  -408,  -408,  -408,  -408,  -408,  -408,  -408,  -408,  -408, +    -408,   143,   144,   147,   148,   865,  1055,   567,   217,   149, +     151,   158,   163,  -408,  -408,   142,   -33,   -39,   -82,  -408, +      62,  -408,   162,   164,   903,  -408,  -408,  -408,  -408,  -408, +    -408,  -408,  -408,  -408,  1055,  -408,  -408,  -408,  -408,   166, +    -408,   169,   610,     7,  -408,    10,  -408,   171,   610,   173, +    1017,  1017,  1017,  1017,  1017,  1017,   174,   176,   179,  1017, +     610,   610,   183,  -408,   -19,  -408,  1055,  1055,  1055,  1055, +    -408,  -408,   -16,   -29,  -408,   -79,  -408,  1055,  1055,  1055, +    1055,  -408,  -408,  -408,  -408,  -408,   941,   208,  -408,   -26, +     229,   245,   182,   610,   264,   610,  1017,  -408,   185,   610, +    -408,   187,  -408,  -408,  -408,  -408,   610,   610,   610,  -408, +     186,  -408,  1017,   246,   267,  -408,   142,   171,   237,   189, +     197,  1055,  -408,  -408,  -408,   209,   210,   213,   215,  -408, +    -408,  -408,   225,  -408,   610,   610,  1017,   219,  -408,   219, +    -408,   220,   610,   224,  1017,  -408,  -408,  -408,  1017,   610, +    -408,  -408,  -408,   188,  1017,  1055,  1055,  -408,  1055,  1055, +    1055,  1055,   286,  -408,   226,   204,   220,   214,   240,  -408, +    -408,  1017,   205,   610,  -408,   222,  -408,  -408,   228,   227, +     232,   235,   236,   238,   239,  -408,   320,    35,   306,  -408, +    -408,   241,  -408,  -408,  1055,  -408,  -408,  -408,  -408,  -408, +     610,  -408,   691,    43,   322,  -408,   243,  -408,   249,  -408, +     691,   610,  -408,   327,   251,   285,   610,   331,   332,  -408, +     610,   610,  -408,  -408 +}; -   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. +/* YYPGOTO[NTERM-NUM].  */ +static const short yypgoto[] = +{ +    -408,  -408,  -408,   274,   275,   277,   279,  -107,  -105,  -407, +    -408,   328,   341,   -81,  -408,  -194,    45,  -408,  -228,  -408, +     -38,  -408,   -28,  -408,   -57,   263,  -408,   -89,   198,  -171, +     323,  -408,  -408,  -408,  -408,  -408,  -408,  -408,  -408,  -408, +       9,  -408,    54,  -408,  -408,   346,  -408,  -408,  -408,  -408, +     361,  -408,  -359,   -45,   119,   -98,  -408,   356,  -408,  -408, +    -408,  -408,  -408,    46,    -4,  -408,  -408,    28,  -408,  -408 +}; -   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., 59 Temple Place - Suite 330, -   Boston, MA 02111-1307, USA.  */ +/* 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 -120 +static const short yytable[] = +{ +      72,   195,   171,   196,    87,   181,   276,    77,   184,    30, +     432,    97,    21,   174,    72,   343,    33,   311,   -59,   351, +     185,     4,   323,   175,    30,   325,   440,   101,   198,   354, +     201,    41,   186,   205,   206,   344,   218,   207,   208,   209, +     210,    21,   219,    97,   214,   187,   188,   189,   190,   191, +     192,   193,   194,   187,   188,   189,   190,   191,   192,   193, +     194,   324,   155,   215,   324,   303,   305,   313,    42,   351, +     101,   312,   351,   438,    45,   180,   101,   353,   180,    99, +     363,   444,   351,    47,    16,    78,    17,    82,   352,     7, +       8,     9,    10,   319,    34,    43,    88,    89,   199,   200, +     180,   202,   203,   180,   180,   149,   150,   180,   180,   180, +     180,   211,   212,   213,   180,   246,   247,   248,   382,   292, +    -119,    24,    25,    26,    27,   244,   187,   188,   189,   190, +     191,   192,   193,   194,    83,   267,    37,    38,    39,   431, +     267,   267,   216,   217,    84,     5,    85,   439,   250,   221, +     222,     6,   267,   -25,   -25,   -24,   -24,   267,   -23,   -23, +     272,     7,     8,     9,    10,   -60,   267,   267,   267,    92, +      72,   -22,   -22,   399,    93,   400,    94,   290,   223,   224, +     100,   148,   152,   331,   153,   333,   172,    72,   291,   180, +     176,   339,   173,   182,   -29,   -28,   -27,   248,   -26,   254, +     -32,   -35,   -33,    16,   226,    17,   227,   347,   348,   349, +     350,   255,     6,   -35,   -35,   273,   275,   278,   355,   356, +     357,   358,   -35,   -35,   -35,   -35,   279,   267,   -35,    18, +     281,   282,   280,   267,   283,   293,    19,   284,   285,   289, +     294,   306,   343,   296,   297,   267,   267,   298,   299,   307, +     364,   308,   330,   180,   332,   180,   334,   335,   309,   314, +     316,   180,   387,   310,   320,   317,   365,   321,   368,   326, +     380,   381,   336,   384,   337,   329,   404,   338,   267,   392, +     267,   342,   366,   372,   267,   374,   378,   385,   250,   407, +     415,   267,   267,   267,   324,   386,   409,   410,   180,   411, +     412,   413,   414,   419,   269,   270,   417,   388,   389,   420, +     195,   390,   196,   391,   379,   418,   271,   398,   401,   267, +     267,   277,   403,   422,   416,   424,   195,   267,   196,   423, +     286,   287,   288,   425,   267,   436,   426,   427,   180,   428, +     429,   430,   434,   441,   442,   435,   180,   443,   446,   447, +     180,   448,   450,   451,   139,   140,   408,   141,   267,   142, +      80,    44,   361,   178,    22,    48,    49,    91,   243,    46, +     360,    36,   371,   180,   405,   383,     0,     0,     0,     0, +       0,     0,    16,     0,    17,   267,   228,     0,     0,     0, +       0,   322,     0,     0,     0,     0,   267,   328,   229,   230, +       0,   267,     0,     0,     0,   267,   267,     0,     0,   340, +     341,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,   112,   113, +     114,   115,   116,   117,   118,   119,   120,   121,   122,   123, +     124,   125,   367,     0,   369,     0,     0,   231,   373,   232, +     233,   133,   134,     0,   234,   375,   376,   377,     0,     0, +       0,     0,   235,     0,     0,   236,     0,   237,     0,     0, +     238,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,   394,   395,     0,     0,     0,     0,     0, +       0,   402,     0,     0,     0,     0,    48,    49,   406,    95, +      51,    52,    53,    54,    55,    56,    57,    58,    59,    60, +      61,    62,    63,    16,     0,    17,     0,     0,     0,     0, +       0,     0,   421,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,    64,     0,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,     0,   437, +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +     445,     0,     0,     0,     0,   449,     0,     0,     0,   452, +     453,     0,    48,    49,     0,    95,   156,   157,   158,   159, +     160,   161,   162,   163,   164,   165,   166,    62,    63,    16, +      65,    17,     0,    66,     0,     0,    67,     0,    68,    96, +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,    64,   256,   257,    48,    49,   258,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,    16,     0,    17,     0,   259,   260,   261,     0, +       0,     0,     0,     0,     0,     0,     0,     0,   262,   263, +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,    65,     0,     0,    66, +       0,     0,    67,     0,    68,   304,     0,     0,   112,   113, +     114,   115,   116,   117,   118,   119,   120,   121,   122,   123, +     124,   125,     0,     0,   256,   257,     0,   231,   258,   232, +     233,   133,   134,     0,   234,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,   264,     0,   259,   260,   261, +       0,     0,     0,     0,     0,     0,     0,     0,     0,   262, +     263,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,     0,   112, +     113,   114,   115,   116,   117,   118,   119,   120,   121,   122, +     123,   124,   125,     0,     0,     0,     0,     0,   231,     0, +     232,   233,   133,   134,     0,   234,     0,     0,     0,     0, +       0,     0,     0,     0,    48,    49,   264,    95,    51,    52, +      53,    54,    55,    56,    57,    58,    59,    60,    61,    62, +      63,    16,     0,    17,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,   177,     0,     0,     0, +       0,     0,    48,    49,    64,    95,    51,    52,    53,    54, +      55,    56,    57,    58,    59,    60,    61,    62,    63,    16, +       0,    17,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,   249,     0,     0,     0,     0,     0, +      48,    49,    64,    95,   156,   157,   158,   159,   160,   161, +     162,   163,   164,   165,   166,    62,    63,    16,    65,    17, +       0,    66,     0,     0,    67,     0,    68,     0,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,    48,    49, +      64,    95,    51,    52,    53,    54,    55,    56,    57,    58, +      59,    60,    61,    62,    63,    16,    65,    17,     0,    66, +       0,     0,    67,     0,    68,     0,     0,     0,     0,     0, +     318,     0,     0,     0,     0,     0,    48,    49,    64,    95, +      51,    52,    53,    54,    55,    56,    57,    58,    59,    60, +      61,    62,    63,    16,    65,    17,     0,    66,     0,   300, +      67,     0,    68,     0,     0,     0,     0,     0,   359,     0, +       0,     0,     0,     0,    48,    49,    64,    50,    51,    52, +      53,    54,    55,    56,    57,    58,    59,    60,    61,    62, +      63,    16,    65,    17,     0,    66,     0,     0,    67,     0, +      68,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,    48,    49,    64,    95,    51,    52,    53,    54, +      55,    56,    57,    58,    59,    60,    61,    62,    63,    16, +      65,    17,     0,    66,     0,     0,    67,     0,    68,     0, +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +      48,    49,    64,    95,   156,   157,   158,   159,   160,   161, +     162,   163,   164,   165,   166,    62,    63,    16,    65,    17, +       0,    66,     0,     0,    67,     0,    68,     0,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,    48,    49, +      64,   183,    51,    52,    53,    54,    55,    56,    57,    58, +      59,    60,    61,    62,    63,    16,    65,    17,     0,    66, +       0,     0,    67,     0,    68,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,    64,     0, +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,    65,     0,     0,    66,     0,     0, +      67,     0,    68,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,   102,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,   103,     0,     0,     0, +       0,     0,    65,     0,     0,    66,   104,   105,    67,     0, +      68,     0,   106,   107,   108,   109,   110,   111,   112,   113, +     114,   115,   116,   117,   118,   119,   120,   121,   122,   123, +     124,   125,   126,   127,   128,     0,     0,   129,   130,   131, +     132,   133,   134,   135,   136,   137,   138 +}; -/* As a special exception, when this file is copied by Bison into a -   Bison output file, you may use that output file without restriction. -   This special exception was added by the Free Software Foundation -   in version 1.24 of Bison.  */ +static const short yycheck[] = +{ +      28,   108,    91,   108,    42,   103,   200,    29,   106,    23, +     417,    68,     3,    98,    42,    34,    30,   245,   100,    98, +       9,     0,    15,   108,    23,    15,   433,   109,   109,   108, +     128,    97,    21,   131,   132,    54,    98,   135,   136,   137, +     138,    32,   104,   100,   142,    10,    11,    12,    13,    14, +      15,    16,    17,    10,    11,    12,    13,    14,    15,    16, +      17,    54,    90,   144,    54,   236,   237,   106,    20,    98, +     109,   104,    98,   432,    97,   103,   109,   106,   106,    70, +     106,   440,    98,     4,    22,   107,    24,    97,   104,    41, +      42,    43,    44,   264,   108,    47,    32,    33,   126,   127, +     128,   129,   130,   131,   132,    52,    53,   135,   136,   137, +     138,   139,   140,   141,   142,   172,   173,   174,   346,   217, +       0,    58,    59,    60,    61,   170,    10,    11,    12,    13, +      14,    15,    16,    17,    97,   180,    49,    50,    51,   104, +     185,   186,    85,    86,    97,    25,   102,   104,   176,    27, +      28,    31,   197,     3,     4,     3,     4,   202,     3,     4, +     198,    41,    42,    43,    44,   100,   211,   212,   213,     4, +     198,     3,     4,   367,     4,   369,     4,   215,     3,     4, +     100,    24,     4,   281,    24,   283,   103,   215,   216,   217, +     100,   289,   103,    56,     4,     4,     4,   254,     4,    98, +       7,    20,     7,    22,     4,    24,     7,   296,   297,   298, +     299,   101,    31,    32,    33,    98,    98,   102,   307,   308, +     309,   310,    41,    42,    43,    44,    98,   272,    47,    48, +      98,    98,    36,   278,    98,    24,    55,    98,    98,    98, +      98,    24,    34,   100,   100,   290,   291,   100,   100,   100, +      21,   100,   280,   281,   282,   283,   284,   285,   100,   250, +      98,   289,   351,   100,    98,   101,    21,    98,     4,    98, +      24,     4,    98,    36,    98,   102,   374,    98,   323,    54, +     325,    98,   100,    98,   329,    98,   100,    98,   316,   101, +       4,   336,   337,   338,    54,    98,   385,   386,   326,   388, +     389,   390,   391,   401,   185,   186,   102,    98,    98,   104, +     417,    98,   417,    98,   342,   101,   197,    98,    98,   364, +     365,   202,    98,   101,    98,    98,   433,   372,   433,   101, +     211,   212,   213,   101,   379,   424,   101,   101,   366,   101, +     101,    21,    36,    21,   101,   104,   374,    98,    21,    98, +     378,    66,    21,    21,    80,    80,   384,    80,   403,    80, +      32,    20,   317,   100,     3,     5,     6,    44,   170,    23, +     316,    15,   326,   401,   378,   347,    -1,    -1,    -1,    -1, +      -1,    -1,    22,    -1,    24,   430,    26,    -1,    -1,    -1, +      -1,   272,    -1,    -1,    -1,    -1,   441,   278,    38,    39, +      -1,   446,    -1,    -1,    -1,   450,   451,    -1,    -1,   290, +     291,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69, +      70,    71,    72,    73,    74,    75,    76,    77,    78,    79, +      80,    81,   323,    -1,   325,    -1,    -1,    87,   329,    89, +      90,    91,    92,    -1,    94,   336,   337,   338,    -1,    -1, +      -1,    -1,   102,    -1,    -1,   105,    -1,   107,    -1,    -1, +     110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,   364,   365,    -1,    -1,    -1,    -1,    -1, +      -1,   372,    -1,    -1,    -1,    -1,     5,     6,   379,     8, +       9,    10,    11,    12,    13,    14,    15,    16,    17,    18, +      19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1, +      -1,    -1,   403,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   430, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +     441,    -1,    -1,    -1,    -1,   446,    -1,    -1,    -1,   450, +     451,    -1,     5,     6,    -1,     8,     9,    10,    11,    12, +      13,    14,    15,    16,    17,    18,    19,    20,    21,    22, +      99,    24,    -1,   102,    -1,    -1,   105,    -1,   107,   108, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    45,     3,     4,     5,     6,     7,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    22,    -1,    24,    -1,    26,    27,    28,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    39, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    99,    -1,    -1,   102, +      -1,    -1,   105,    -1,   107,   108,    -1,    -1,    68,    69, +      70,    71,    72,    73,    74,    75,    76,    77,    78,    79, +      80,    81,    -1,    -1,     3,     4,    -1,    87,     7,    89, +      90,    91,    92,    -1,    94,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,   105,    -1,    26,    27,    28, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38, +      39,    -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,    68, +      69,    70,    71,    72,    73,    74,    75,    76,    77,    78, +      79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    -1, +      89,    90,    91,    92,    -1,    94,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,     5,     6,   105,     8,     9,    10, +      11,    12,    13,    14,    15,    16,    17,    18,    19,    20, +      21,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1, +      -1,    -1,     5,     6,    45,     8,     9,    10,    11,    12, +      13,    14,    15,    16,    17,    18,    19,    20,    21,    22, +      -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1, +       5,     6,    45,     8,     9,    10,    11,    12,    13,    14, +      15,    16,    17,    18,    19,    20,    21,    22,    99,    24, +      -1,   102,    -1,    -1,   105,    -1,   107,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,     6, +      45,     8,     9,    10,    11,    12,    13,    14,    15,    16, +      17,    18,    19,    20,    21,    22,    99,    24,    -1,   102, +      -1,    -1,   105,    -1,   107,    -1,    -1,    -1,    -1,    -1, +      37,    -1,    -1,    -1,    -1,    -1,     5,     6,    45,     8, +       9,    10,    11,    12,    13,    14,    15,    16,    17,    18, +      19,    20,    21,    22,    99,    24,    -1,   102,    -1,   104, +     105,    -1,   107,    -1,    -1,    -1,    -1,    -1,    37,    -1, +      -1,    -1,    -1,    -1,     5,     6,    45,     8,     9,    10, +      11,    12,    13,    14,    15,    16,    17,    18,    19,    20, +      21,    22,    99,    24,    -1,   102,    -1,    -1,   105,    -1, +     107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,     5,     6,    45,     8,     9,    10,    11,    12, +      13,    14,    15,    16,    17,    18,    19,    20,    21,    22, +      99,    24,    -1,   102,    -1,    -1,   105,    -1,   107,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +       5,     6,    45,     8,     9,    10,    11,    12,    13,    14, +      15,    16,    17,    18,    19,    20,    21,    22,    99,    24, +      -1,   102,    -1,    -1,   105,    -1,   107,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,     6, +      45,     8,     9,    10,    11,    12,    13,    14,    15,    16, +      17,    18,    19,    20,    21,    22,    99,    24,    -1,   102, +      -1,    -1,   105,    -1,   107,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    99,    -1,    -1,   102,    -1,    -1, +     105,    -1,   107,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    -1, +      -1,    -1,    99,    -1,    -1,   102,    56,    57,   105,    -1, +     107,    -1,    62,    63,    64,    65,    66,    67,    68,    69, +      70,    71,    72,    73,    74,    75,    76,    77,    78,    79, +      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    89, +      90,    91,    92,    93,    94,    95,    96 +}; -/* This is the parser code that is written into each bison parser -  when the %semantic_parser declaration is not specified in the grammar. -  It was written by Richard Stallman by simplifying the hairy parser -  used when %semantic_parser is specified.  */ +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing +   symbol of state STATE-NUM.  */ +static const unsigned char yystos[] = +{ +       0,   142,   143,   144,     0,    25,    31,    41,    42,    43, +      44,   123,   158,   160,   161,   167,    22,    24,    48,    55, +     122,   151,   161,   162,    58,    59,    60,    61,   124,   156, +      23,   168,   169,    30,   108,   159,   168,    49,    50,    51, +     148,    97,    20,    47,   123,    97,   156,     4,     5,     6, +       8,     9,    10,    11,    12,    13,    14,    15,    16,    17, +      18,    19,    20,    21,    45,    99,   102,   105,   107,   112, +     131,   132,   133,   134,   135,   151,   164,    29,   107,   157, +     122,   172,    97,    97,    97,   102,   149,   131,    32,    33, +     141,   141,     4,     4,     4,     8,   108,   135,   136,   151, +     100,   109,    35,    46,    56,    57,    62,    63,    64,    65, +      66,    67,    68,    69,    70,    71,    72,    73,    74,    75, +      76,    77,    78,    79,    80,    81,    82,    83,    84,    87, +      88,    89,    90,    91,    92,    93,    94,    95,    96,   114, +     115,   116,   117,   170,   176,   177,   179,   180,    24,    52, +      53,   147,     4,    24,   150,   133,     9,    10,    11,    12, +      13,    14,    15,    16,    17,    18,    19,   118,   119,   121, +     133,   138,   103,   103,    98,   108,   100,    37,   136,   137, +     133,   166,    56,     8,   166,     9,    21,    10,    11,    12, +      13,    14,    15,    16,    17,   118,   119,   120,   124,   133, +     133,   166,   133,   133,   173,   166,   166,   166,   166,   166, +     166,   133,   133,   133,   166,   124,    85,    86,    98,   104, +     146,    27,    28,     3,     4,   113,     4,     7,    26,    38, +      39,    87,    89,    90,    94,   102,   105,   107,   110,   114, +     115,   116,   117,   139,   164,   145,   135,   135,   135,    37, +     133,   153,   154,   155,    98,   101,     3,     4,     7,    26, +      27,    28,    38,    39,   105,   139,   163,   164,   165,   165, +     165,   165,   131,    98,   126,    98,   126,   165,   102,    98, +      36,    98,    98,    98,    98,    98,   165,   165,   165,    98, +     131,   133,   166,    24,    98,   129,   100,   100,   100,   100, +     104,   138,   140,   140,   108,   140,    24,   100,   100,   100, +     100,   129,   104,   106,   151,   152,    98,   101,    37,   140, +      98,    98,   165,    15,    54,    15,    98,   178,   165,   102, +     133,   166,   133,   166,   133,   133,    98,    98,    98,   166, +     165,   165,    98,    34,    54,   127,   130,   138,   138,   138, +     138,    98,   104,   106,   108,   138,   138,   138,   138,    37, +     153,   127,   128,   106,    21,    21,   100,   165,     4,   165, +     166,   174,    98,   165,    98,   165,   165,   165,   100,   133, +      24,     4,   129,   178,    36,    98,    98,   138,    98,    98, +      98,    98,    54,   125,   165,   165,   174,   175,    98,   126, +     126,    98,   165,    98,   166,   175,   165,   101,   133,   138, +     138,   138,   138,   138,   138,     4,    98,   102,   101,   166, +     104,   165,   101,   101,    98,   101,   101,   101,   101,   101, +      21,   104,   120,   171,    36,   104,   138,   165,   163,   104, +     120,    21,   101,    98,   163,   165,    21,    98,    66,   165, +      21,    21,   165,   165 +}; -#ifndef YYSTACK_USE_ALLOCA -#ifdef alloca -#define YYSTACK_USE_ALLOCA -#else /* alloca not defined */ -#ifdef __GNUC__ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#else /* not GNU C.  */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -#define YYSTACK_USE_ALLOCA -#include <alloca.h> -#else /* not sparc */ -/* We think this test detects Watcom and Microsoft C.  */ -/* This used to test MSDOS, but that is a bad idea -   since that symbol is in the user namespace.  */ -#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -#if 0 /* No need for malloc.h, which pollutes the namespace; -	 instead, just don't use alloca.  */ -#include <malloc.h> +#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__  #endif -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -/* I don't know what this was needed for, but it pollutes the namespace. -   So I turned it off.   rms, 2 May 1997.  */ -/* #include <malloc.h>  */ - #pragma alloca -#define YYSTACK_USE_ALLOCA -#else /* not MSDOS, or __TURBOC__, or _AIX */ -#if 0 -#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, -		 and on HPUX 10.  Eventually we can turn this on.  */ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#endif /* __hpux */ +#if ! defined (YYSIZE_T) && defined (size_t) +# define YYSIZE_T size_t  #endif -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc */ -#endif /* not GNU C */ -#endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ - -#ifdef YYSTACK_USE_ALLOCA -#define YYSTACK_ALLOC alloca -#else -#define YYSTACK_ALLOC malloc +#if ! defined (YYSIZE_T) +# if defined (__STDC__) || defined (__cplusplus) +#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */ +#  define YYSIZE_T size_t +# endif +#endif +#if ! defined (YYSIZE_T) +# define YYSIZE_T unsigned int  #endif - -/* Note: there must be only one dollar sign in this file. -   It is replaced by the list of actions, each action -   as one case of the switch.  */  #define yyerrok		(yyerrstatus = 0)  #define yyclearin	(yychar = YYEMPTY) -#define YYEMPTY		-2 +#define YYEMPTY		(-2)  #define YYEOF		0 +  #define YYACCEPT	goto yyacceptlab -#define YYABORT 	goto yyabortlab -#define YYERROR		goto yyerrlab1 -/* Like YYERROR except do call yyerror. -   This remains here temporarily to ease the -   transition to the new meaning of YYERROR, for GCC. +#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) \ + +#define YYBACKUP(Token, Value)					\  do								\    if (yychar == YYEMPTY && yylen == 1)				\ -    { yychar = (token), yylval = (value);			\ -      yychar1 = YYTRANSLATE (yychar);				\ +    {								\ +      yychar = (Token);						\ +      yylval = (Value);						\ +      yytoken = YYTRANSLATE (yychar);				\        YYPOPSTACK;						\        goto yybackup;						\      }								\    else								\ -    { yyerror ("syntax error: cannot back up"); YYERROR; }	\ +    { 								\ +      yyerror ("syntax error: cannot back up");\ +      YYERROR;							\ +    }								\  while (0)  #define YYTERROR	1  #define YYERRCODE	256 -#ifndef YYPURE -#define YYLEX		yylex() -#endif +/* YYLLOC_DEFAULT -- Compute the default location (before the actions +   are run).  */ -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#ifdef YYLEX_PARAM -#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM) -#else -#define YYLEX		yylex(&yylval, &yylloc) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N)		\ +   ((Current).first_line   = (Rhs)[1].first_line,	\ +    (Current).first_column = (Rhs)[1].first_column,	\ +    (Current).last_line    = (Rhs)[N].last_line,	\ +    (Current).last_column  = (Rhs)[N].last_column)  #endif -#else /* not YYLSP_NEEDED */ + +/* YYLEX -- calling `yylex' with the right arguments.  */ +  #ifdef YYLEX_PARAM -#define YYLEX		yylex(&yylval, YYLEX_PARAM) +# define YYLEX yylex (YYLEX_PARAM)  #else -#define YYLEX		yylex(&yylval) +# define YYLEX yylex ()  #endif -#endif /* not YYLSP_NEEDED */ -#endif - -/* If nonreentrant, generate the variables here */ -#ifndef YYPURE +/* 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 (0) + +# define YYDSYMPRINT(Args)			\ +do {						\ +  if (yydebug)					\ +    yysymprint Args;				\ +} while (0) + +# define YYDSYMPRINTF(Title, Token, Value, Location)		\ +do {								\ +  if (yydebug)							\ +    {								\ +      YYFPRINTF (stderr, "%s ", Title);				\ +      yysymprint (stderr, 					\ +                  Token, Value);	\ +      YYFPRINTF (stderr, "\n");					\ +    }								\ +} while (0) -int	yychar;			/*  the lookahead symbol		*/ -YYSTYPE	yylval;			/*  the semantic value of the		*/ -				/*  lookahead symbol			*/ +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included).                                                   | +`------------------------------------------------------------------*/ -#ifdef YYLSP_NEEDED -YYLTYPE yylloc;			/*  location data for the lookahead	*/ -				/*  symbol				*/ +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_stack_print (short *bottom, short *top) +#else +static void +yy_stack_print (bottom, top) +    short *bottom; +    short *top;  #endif +{ +  YYFPRINTF (stderr, "Stack now"); +  for (/* Nothing. */; bottom <= top; ++bottom) +    YYFPRINTF (stderr, " %d", *bottom); +  YYFPRINTF (stderr, "\n"); +} -int yynerrs;			/*  number of parse errors so far       */ -#endif  /* not YYPURE */ +# define YY_STACK_PRINT(Bottom, Top)				\ +do {								\ +  if (yydebug)							\ +    yy_stack_print ((Bottom), (Top));				\ +} while (0) -#if YYDEBUG != 0 -int yydebug;			/*  nonzero means print parse trace	*/ -/* Since this is uninitialized, it does not stop multiple parsers -   from coexisting.  */ -#endif -/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/ +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced.  | +`------------------------------------------------*/ +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_reduce_print (int yyrule) +#else +static void +yy_reduce_print (yyrule) +    int yyrule; +#endif +{ +  int yyi; +  unsigned int yylno = yyrline[yyrule]; +  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", +             yyrule - 1, yylno); +  /* Print the symbols being reduced, and their result.  */ +  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) +    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); +  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); +} + +# define YY_REDUCE_PRINT(Rule)		\ +do {					\ +  if (yydebug)				\ +    yy_reduce_print (Rule);		\ +} while (0) + +/* Nonzero means print parse trace.  It is left uninitialized so that +   multiple parsers can coexist.  */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YYDSYMPRINT(Args) +# define YYDSYMPRINTF(Title, Token, 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 +# define YYINITDEPTH 200  #endif -/*  YYMAXDEPTH is the maximum size the stacks can grow to -    (effective only if the built-in stack extension method is used).  */ +/* 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 +   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) +   evaluated with infinite-precision integer arithmetic.  */ -#if YYMAXDEPTH == 0 -#undef YYMAXDEPTH +#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0 +# undef YYMAXDEPTH  #endif  #ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 +# define YYMAXDEPTH 10000  #endif + -/* Define __yy_memcpy.  Note that the size argument -   should be passed with type unsigned int, because that is what the non-GCC -   definitions require.  With GCC, __builtin_memcpy takes an arg -   of type size_t, but it can handle unsigned int.  */ - -#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */ -#define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT) -#else				/* not GNU C or C++ */ -#ifndef __cplusplus - -/* This is the most reliable way to avoid incompatibilities -   in available built-in functions on various systems.  */ -static void -__yy_memcpy (to, from, count) -     char *to; -     char *from; -     unsigned int count; + +#if YYERROR_VERBOSE + +# ifndef yystrlen +#  if defined (__GLIBC__) && defined (_STRING_H) +#   define yystrlen strlen +#  else +/* Return the length of YYSTR.  */ +static YYSIZE_T +#   if defined (__STDC__) || defined (__cplusplus) +yystrlen (const char *yystr) +#   else +yystrlen (yystr) +     const char *yystr; +#   endif +{ +  register const char *yys = yystr; + +  while (*yys++ != '\0') +    continue; + +  return yys - yystr - 1; +} +#  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.  */ +static char * +#   if defined (__STDC__) || defined (__cplusplus) +yystpcpy (char *yydest, const char *yysrc) +#   else +yystpcpy (yydest, yysrc) +     char *yydest; +     const char *yysrc; +#   endif  { -  register char *f = from; -  register char *t = to; -  register int i = count; +  register char *yyd = yydest; +  register const char *yys = yysrc; + +  while ((*yyd++ = *yys++) != '\0') +    continue; -  while (i-- > 0) -    *t++ = *f++; +  return yyd - 1;  } +#  endif +# endif -#else /* __cplusplus */ +#endif /* !YYERROR_VERBOSE */ + + -/* This is the most reliable way to avoid incompatibilities -   in available built-in functions on various systems.  */ +#if YYDEBUG +/*--------------------------------. +| Print this symbol on YYOUTPUT.  | +`--------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) +#else  static void -__yy_memcpy (char *to, char *from, unsigned int count) +yysymprint (yyoutput, yytype, yyvaluep) +    FILE *yyoutput; +    int yytype; +    YYSTYPE *yyvaluep; +#endif  { -  register char *t = to; -  register char *f = from; -  register int i = count; +  /* Pacify ``unused variable'' warnings.  */ +  (void) yyvaluep; -  while (i-- > 0) -    *t++ = *f++; +  if (yytype < YYNTOKENS) +    { +      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); +# ifdef YYPRINT +      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif +    } +  else +    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + +  switch (yytype) +    { +      default: +        break; +    } +  YYFPRINTF (yyoutput, ")");  } +#endif /* ! YYDEBUG */ +/*-----------------------------------------------. +| Release the memory associated to this symbol.  | +`-----------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yydestruct (int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yytype, yyvaluep) +    int yytype; +    YYSTYPE *yyvaluep;  #endif -#endif +{ +  /* Pacify ``unused variable'' warnings.  */ +  (void) yyvaluep; + +  switch (yytype) +    { + +      default: +        break; +    } +} -#line 217 "/usr/share/bison.simple" -/* The user can define YYPARSE_PARAM as the name of an argument to be passed -   into yyparse.  The argument should have type void *. -   It should actually point to an object. -   Grammar actions can access the variable by casting it -   to the proper pointer type.  */ +/* Prevent warnings from -Wmissing-prototypes.  */  #ifdef YYPARSE_PARAM -#ifdef __cplusplus -#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* not __cplusplus */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -#endif /* not __cplusplus */ -#else /* not YYPARSE_PARAM */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* not YYPARSE_PARAM */ - -/* Prevent warning if -Wstrict-prototypes.  */ -#ifdef __GNUC__ -#ifdef YYPARSE_PARAM -int yyparse (void *); -#else +# 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 +#endif /* ! YYPARSE_PARAM */ + + + +/* The lookahead symbol.  */ +int yychar; + +/* The semantic value of the lookahead symbol.  */ +YYSTYPE yylval; +/* Number of syntax errors so far.  */ +int yynerrs; + + + +/*----------. +| yyparse.  | +`----------*/ + +#ifdef YYPARSE_PARAM +# if defined (__STDC__) || defined (__cplusplus) +int yyparse (void *YYPARSE_PARAM) +# else +int yyparse (YYPARSE_PARAM) +  void *YYPARSE_PARAM; +# endif +#else /* ! YYPARSE_PARAM */ +#if defined (__STDC__) || defined (__cplusplus) +int +yyparse (void) +#else  int -yyparse(YYPARSE_PARAM_ARG) -     YYPARSE_PARAM_DECL +yyparse () + +#endif +#endif  { +      register int yystate;    register int yyn; +  int yyresult; +  /* Number of tokens to shift before error messages enabled.  */ +  int yyerrstatus; +  /* Lookahead token as an internal (translated) token number.  */ +  int yytoken = 0; + +  /* 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.  */ +  short	yyssa[YYINITDEPTH]; +  short *yyss = yyssa;    register short *yyssp; -  register YYSTYPE *yyvsp; -  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */ -  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */ -  short	yyssa[YYINITDEPTH];	/*  the state stack			*/ -  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/ +  /* The semantic value stack.  */ +  YYSTYPE yyvsa[YYINITDEPTH]; +  YYSTYPE *yyvs = yyvsa; +  register YYSTYPE *yyvsp; -  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */ -  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */ -#ifdef YYLSP_NEEDED -  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/ -  YYLTYPE *yyls = yylsa; -  YYLTYPE *yylsp; -#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--) -#else  #define YYPOPSTACK   (yyvsp--, yyssp--) -#endif -  int yystacksize = YYINITDEPTH; -  int yyfree_stacks = 0; +  YYSIZE_T yystacksize = YYINITDEPTH; -#ifdef YYPURE -  int yychar; -  YYSTYPE yylval; -  int yynerrs; -#ifdef YYLSP_NEEDED -  YYLTYPE yylloc; -#endif -#endif +  /* The variables used to return semantic value and location from the +     action routines.  */ +  YYSTYPE yyval; -  YYSTYPE yyval;		/*  the variable used to return		*/ -				/*  semantic values from the action	*/ -				/*  routines				*/ +  /* When reducing, the number of symbols on the RHS of the reduced +     rule.  */    int yylen; -#if YYDEBUG != 0 -  if (yydebug) -    fprintf(stderr, "Starting parse\n"); -#endif +  YYDPRINTF ((stderr, "Starting parse\n"));    yystate = 0;    yyerrstatus = 0; @@ -1954,110 +2467,96 @@ yyparse(YYPARSE_PARAM_ARG)       so that they stay on the same level as the state stack.       The wasted elements are never initialized.  */ -  yyssp = yyss - 1; +  yyssp = yyss;    yyvsp = yyvs; -#ifdef YYLSP_NEEDED -  yylsp = yyls; -#endif -/* Push a new state, which is found in  yystate  .  */ -/* In all cases, when you get here, the value and location stacks -   have just been pushed. so pushing a state here evens the stacks.  */ -yynewstate: +  goto yysetstate; -  *++yyssp = yystate; +/*------------------------------------------------------------. +| 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++; -  if (yyssp >= yyss + yystacksize - 1) -    { -      /* 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; -      short *yyss1 = yyss; -#ifdef YYLSP_NEEDED -      YYLTYPE *yyls1 = yyls; -#endif + yysetstate: +  *yyssp = yystate; +  if (yyss + yystacksize - 1 <= yyssp) +    {        /* Get the current used size of the three stacks, in elements.  */ -      int size = yyssp - yyss + 1; +      YYSIZE_T yysize = yyssp - yyss + 1;  #ifdef yyoverflow -      /* Each stack pointer address is followed by the size of -	 the data in use in that stack, in bytes.  */ -#ifdef YYLSP_NEEDED -      /* This used to be a conditional around just the two extra args, -	 but that might be undefined if yyoverflow is a macro.  */ -      yyoverflow("parser stack overflow", -		 &yyss1, size * sizeof (*yyssp), -		 &yyvs1, size * sizeof (*yyvsp), -		 &yyls1, size * sizeof (*yylsp), -		 &yystacksize); -#else -      yyoverflow("parser stack overflow", -		 &yyss1, size * sizeof (*yyssp), -		 &yyvs1, size * sizeof (*yyvsp), -		 &yystacksize); -#endif - -      yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED -      yyls = yyls1; -#endif +      { +	/* 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; +	short *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 ("parser stack overflow", +		    &yyss1, yysize * sizeof (*yyssp), +		    &yyvs1, yysize * sizeof (*yyvsp), + +		    &yystacksize); + +	yyss = yyss1; +	yyvs = yyvs1; +      }  #else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE +      goto yyoverflowlab; +# else        /* Extend the stack our own way.  */ -      if (yystacksize >= YYMAXDEPTH) -	{ -	  yyerror("parser stack overflow"); -	  if (yyfree_stacks) -	    { -	      free (yyss); -	      free (yyvs); -#ifdef YYLSP_NEEDED -	      free (yyls); -#endif -	    } -	  return 2; -	} +      if (YYMAXDEPTH <= yystacksize) +	goto yyoverflowlab;        yystacksize *= 2; -      if (yystacksize > YYMAXDEPTH) +      if (YYMAXDEPTH < yystacksize)  	yystacksize = YYMAXDEPTH; -#ifndef YYSTACK_USE_ALLOCA -      yyfree_stacks = 1; -#endif -      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); -      __yy_memcpy ((char *)yyss, (char *)yyss1, -		   size * (unsigned int) sizeof (*yyssp)); -      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); -      __yy_memcpy ((char *)yyvs, (char *)yyvs1, -		   size * (unsigned int) sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED -      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); -      __yy_memcpy ((char *)yyls, (char *)yyls1, -		   size * (unsigned int) sizeof (*yylsp)); -#endif + +      { +	short *yyss1 = yyss; +	union yyalloc *yyptr = +	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); +	if (! yyptr) +	  goto yyoverflowlab; +	YYSTACK_RELOCATE (yyss); +	YYSTACK_RELOCATE (yyvs); + +#  undef YYSTACK_RELOCATE +	if (yyss1 != yyssa) +	  YYSTACK_FREE (yyss1); +      } +# endif  #endif /* no yyoverflow */ -      yyssp = yyss + size - 1; -      yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED -      yylsp = yyls + size - 1; -#endif +      yyssp = yyss + yysize - 1; +      yyvsp = yyvs + yysize - 1; -#if YYDEBUG != 0 -      if (yydebug) -	fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif -      if (yyssp >= yyss + yystacksize - 1) +      YYDPRINTF ((stderr, "Stack size increased to %lu\n", +		  (unsigned long int) yystacksize)); + +      if (yyss + yystacksize - 1 <= yyssp)  	YYABORT;      } -#if YYDEBUG != 0 -  if (yydebug) -    fprintf(stderr, "Entering state %d\n", yystate); -#endif +  YYDPRINTF ((stderr, "Entering state %d\n", yystate));    goto yybackup; - yybackup: + +/*-----------. +| yybackup.  | +`-----------*/ +yybackup:  /* Do appropriate processing given the current state.  */  /* Read a lookahead token if we need one and don't already have one.  */ @@ -2066,315 +2565,311 @@ yynewstate:    /* First try to decide what to do without reference to lookahead token.  */    yyn = yypact[yystate]; -  if (yyn == YYFLAG) +  if (yyn == YYPACT_NINF)      goto yydefault;    /* Not known => get a lookahead token if don't already have one.  */ -  /* yychar is either YYEMPTY or YYEOF -     or a valid token in external form.  */ - +  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */    if (yychar == YYEMPTY)      { -#if YYDEBUG != 0 -      if (yydebug) -	fprintf(stderr, "Reading a token: "); -#endif +      YYDPRINTF ((stderr, "Reading a token: "));        yychar = YYLEX;      } -  /* Convert token to internal form (in yychar1) for indexing tables with */ - -  if (yychar <= 0)		/* This means end of input. */ +  if (yychar <= YYEOF)      { -      yychar1 = 0; -      yychar = YYEOF;		/* Don't call YYLEX any more */ - -#if YYDEBUG != 0 -      if (yydebug) -	fprintf(stderr, "Now at end of input.\n"); -#endif +      yychar = yytoken = YYEOF; +      YYDPRINTF ((stderr, "Now at end of input.\n"));      }    else      { -      yychar1 = YYTRANSLATE(yychar); - -#if YYDEBUG != 0 -      if (yydebug) -	{ -	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); -	  /* Give the individual parser a way to print the precise meaning -	     of a token, for further debugging info.  */ -#ifdef YYPRINT -	  YYPRINT (stderr, yychar, yylval); -#endif -	  fprintf (stderr, ")\n"); -	} -#endif +      yytoken = YYTRANSLATE (yychar); +      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);      } -  yyn += yychar1; -  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) +  /* 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]; - -  /* yyn is what to do for this token type in this state. -     Negative => reduce, -yyn is rule number. -     Positive => shift, yyn is new state. -       New state is final state => don't bother to shift, -       just return success. -     0, or most negative number => error.  */ - -  if (yyn < 0) +  if (yyn <= 0)      { -      if (yyn == YYFLAG) +      if (yyn == 0 || yyn == YYTABLE_NINF)  	goto yyerrlab;        yyn = -yyn;        goto yyreduce;      } -  else if (yyn == 0) -    goto yyerrlab;    if (yyn == YYFINAL)      YYACCEPT;    /* Shift the lookahead token.  */ - -#if YYDEBUG != 0 -  if (yydebug) -    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); -#endif +  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));    /* Discard the token being shifted unless it is eof.  */    if (yychar != YYEOF)      yychar = YYEMPTY;    *++yyvsp = yylval; -#ifdef YYLSP_NEEDED -  *++yylsp = yylloc; -#endif -  /* count tokens shifted since error; after three, turn off error status.  */ -  if (yyerrstatus) yyerrstatus--; + +  /* Count tokens shifted since error; after three, turn off error +     status.  */ +  if (yyerrstatus) +    yyerrstatus--;    yystate = yyn;    goto yynewstate; -/* Do the default action for the current state.  */ -yydefault: +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state.  | +`-----------------------------------------------------------*/ +yydefault:    yyn = yydefact[yystate];    if (yyn == 0)      goto yyerrlab; +  goto yyreduce; -/* Do a reduction.  yyn is the number of a rule to reduce with.  */ + +/*-----------------------------. +| yyreduce -- Do a reduction.  | +`-----------------------------*/  yyreduce: +  /* yyn is the number of a rule to reduce with.  */    yylen = yyr2[yyn]; -  if (yylen > 0) -    yyval = yyvsp[1-yylen]; /* implement default value of the action */ -#if YYDEBUG != 0 -  if (yydebug) -    { -      int i; +  /* If YYLEN is nonzero, implement the default value of the action: +     `$$ = $1'. -      fprintf (stderr, "Reducing via rule %d (line %d), ", -	       yyn, yyrline[yyn]); +     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]; -      /* Print the symbols being reduced, and their result.  */ -      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) -	fprintf (stderr, "%s ", yytname[yyrhs[i]]); -      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); -    } -#endif - -  switch (yyn) { - -case 2: -#line 992 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  YY_REDUCE_PRINT (yyn); +  switch (yyn) +    { +        case 3: +#line 997 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    if (yyvsp[0].UIntVal > (uint32_t)INT32_MAX)     // Outside of my range!      ThrowException("Value too large for type!");    yyval.SIntVal = (int32_t)yyvsp[0].UIntVal; -; -    break;} -case 4: -#line 1000 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +;} +    break; + +  case 5: +#line 1005 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    if (yyvsp[0].UInt64Val > (uint64_t)INT64_MAX)     // Outside of my range!      ThrowException("Value too large for type!");    yyval.SInt64Val = (int64_t)yyvsp[0].UInt64Val; -; -    break;} -case 33: -#line 1023 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +;} +    break; + +  case 34: +#line 1028 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.StrVal = yyvsp[-1].StrVal; -  ; -    break;} -case 34: -#line 1026 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 35: +#line 1031 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.StrVal = 0; -  ; -    break;} -case 35: -#line 1030 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::InternalLinkage; ; -    break;} -case 36: -#line 1031 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::LinkOnceLinkage; ; -    break;} -case 37: -#line 1032 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::WeakLinkage; ; -    break;} -case 38: -#line 1033 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::AppendingLinkage; ; -    break;} -case 39: -#line 1034 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::ExternalLinkage; ; -    break;} -case 40: -#line 1036 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = CallingConv::C; ; -    break;} -case 41: -#line 1037 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = CallingConv::C; ; -    break;} -case 42: -#line 1038 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = CallingConv::Fast; ; -    break;} -case 43: -#line 1039 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = CallingConv::Cold; ; -    break;} -case 44: -#line 1040 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 36: +#line 1035 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.Linkage = GlobalValue::InternalLinkage; ;} +    break; + +  case 37: +#line 1036 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.Linkage = GlobalValue::LinkOnceLinkage; ;} +    break; + +  case 38: +#line 1037 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.Linkage = GlobalValue::WeakLinkage; ;} +    break; + +  case 39: +#line 1038 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.Linkage = GlobalValue::AppendingLinkage; ;} +    break; + +  case 40: +#line 1039 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.Linkage = GlobalValue::ExternalLinkage; ;} +    break; + +  case 41: +#line 1041 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.UIntVal = CallingConv::C; ;} +    break; + +  case 42: +#line 1042 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.UIntVal = CallingConv::C; ;} +    break; + +  case 43: +#line 1043 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.UIntVal = CallingConv::Fast; ;} +    break; + +  case 44: +#line 1044 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.UIntVal = CallingConv::Cold; ;} +    break; + +  case 45: +#line 1045 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                     if ((unsigned)yyvsp[0].UInt64Val != yyvsp[0].UInt64Val)                       ThrowException("Calling conv too large!");                     yyval.UIntVal = yyvsp[0].UInt64Val; -                 ; -    break;} -case 45: -#line 1048 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = 0; ; -    break;} -case 46: -#line 1049 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +                 ;} +    break; + +  case 46: +#line 1053 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.UIntVal = 0; ;} +    break; + +  case 47: +#line 1054 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    yyval.UIntVal = yyvsp[0].UInt64Val;    if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal))      ThrowException("Alignment must be a power of two!"); -; -    break;} -case 47: -#line 1054 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = 0; ; -    break;} -case 48: -#line 1055 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +;} +    break; + +  case 48: +#line 1059 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.UIntVal = 0; ;} +    break; + +  case 49: +#line 1060 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    yyval.UIntVal = yyvsp[0].UInt64Val;    if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal))      ThrowException("Alignment must be a power of two!"); -; -    break;} -case 49: -#line 1062 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +;} +    break; + +  case 50: +#line 1067 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    for (unsigned i = 0, e = strlen(yyvsp[0].StrVal); i != e; ++i)      if (yyvsp[0].StrVal[i] == '"' || yyvsp[0].StrVal[i] == '\\')        ThrowException("Invalid character in section name!");    yyval.StrVal = yyvsp[0].StrVal; -; -    break;} -case 50: -#line 1069 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.StrVal = 0; ; -    break;} -case 51: -#line 1070 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.StrVal = yyvsp[0].StrVal; ; -    break;} -case 52: -#line 1075 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{; -    break;} -case 53: -#line 1076 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{; -    break;} -case 54: -#line 1077 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +;} +    break; + +  case 51: +#line 1074 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.StrVal = 0; ;} +    break; + +  case 52: +#line 1075 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.StrVal = yyvsp[0].StrVal; ;} +    break; + +  case 53: +#line 1080 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {;} +    break; + +  case 54: +#line 1081 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {;} +    break; + +  case 55: +#line 1082 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      CurGV->setSection(yyvsp[0].StrVal);      free(yyvsp[0].StrVal); -  ; -    break;} -case 55: -#line 1081 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 56: +#line 1086 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (yyvsp[0].UInt64Val != 0 && !isPowerOf2_32(yyvsp[0].UInt64Val))        ThrowException("Alignment must be a power of two!");      CurGV->setAlignment(yyvsp[0].UInt64Val); -  ; -    break;} -case 57: -#line 1094 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ; -    break;} -case 59: -#line 1095 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ; -    break;} -case 60: -#line 1097 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 58: +#line 1099 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;} +    break; + +  case 60: +#line 1100 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;} +    break; + +  case 61: +#line 1102 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (!UpRefs.empty())        ThrowException("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());      yyval.TypeVal = yyvsp[0].TypeVal; -  ; -    break;} -case 74: -#line 1108 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 75: +#line 1113 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.TypeVal = new PATypeHolder(OpaqueType::get()); -  ; -    break;} -case 75: -#line 1111 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 76: +#line 1116 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); -  ; -    break;} -case 76: -#line 1114 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{            // Named types are also simple types... +  ;} +    break; + +  case 77: +#line 1119 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {            // Named types are also simple types...    yyval.TypeVal = new PATypeHolder(getTypeVal(yyvsp[0].ValIDVal)); -; -    break;} -case 77: -#line 1120 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{                   // Type UpReference +;} +    break; + +  case 78: +#line 1125 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                   // Type UpReference      if (yyvsp[0].UInt64Val > (uint64_t)~0U) ThrowException("Value out of range!");      OpaqueType *OT = OpaqueType::get();        // Use temporary placeholder      UpRefs.push_back(UpRefRecord((unsigned)yyvsp[0].UInt64Val, OT));  // Add to vector...      yyval.TypeVal = new PATypeHolder(OT);      UR_OUT("New Upreference!\n"); -  ; -    break;} -case 78: -#line 1127 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{           // Function derived type? +  ;} +    break; + +  case 79: +#line 1132 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {           // Function derived type?      std::vector<const Type*> Params;      for (std::list<llvm::PATypeHolder>::iterator I = yyvsp[-1].TypeList->begin(),             E = yyvsp[-1].TypeList->end(); I != E; ++I) @@ -2385,18 +2880,20 @@ case 78:      yyval.TypeVal = new PATypeHolder(HandleUpRefs(FunctionType::get(*yyvsp[-3].TypeVal,Params,isVarArg)));      delete yyvsp[-1].TypeList;      // Delete the argument list      delete yyvsp[-3].TypeVal;      // Delete the return type handle -  ; -    break;} -case 79: -#line 1139 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{          // Sized array type? +  ;} +    break; + +  case 80: +#line 1144 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {          // Sized array type?      yyval.TypeVal = new PATypeHolder(HandleUpRefs(ArrayType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val)));      delete yyvsp[-1].TypeVal; -  ; -    break;} -case 80: -#line 1143 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{          // Packed array type? +  ;} +    break; + +  case 81: +#line 1148 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {          // Packed array type?       const llvm::Type* ElemTy = yyvsp[-1].TypeVal->get();       if ((unsigned)yyvsp[-3].UInt64Val != yyvsp[-3].UInt64Val)          ThrowException("Unsigned result not equal to signed result"); @@ -2406,11 +2903,12 @@ case 80:         ThrowException("Vector length should be a power of 2!");       yyval.TypeVal = new PATypeHolder(HandleUpRefs(PackedType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val)));       delete yyvsp[-1].TypeVal; -  ; -    break;} -case 81: -#line 1154 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{                        // Structure type? +  ;} +    break; + +  case 82: +#line 1159 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                        // Structure type?      std::vector<const Type*> Elements;      for (std::list<llvm::PATypeHolder>::iterator I = yyvsp[-1].TypeList->begin(),             E = yyvsp[-1].TypeList->end(); I != E; ++I) @@ -2418,55 +2916,63 @@ case 81:      yyval.TypeVal = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));      delete yyvsp[-1].TypeList; -  ; -    break;} -case 82: -#line 1163 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{                                  // Empty structure type? +  ;} +    break; + +  case 83: +#line 1168 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                                  // Empty structure type?      yyval.TypeVal = new PATypeHolder(StructType::get(std::vector<const Type*>())); -  ; -    break;} -case 83: -#line 1166 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{                             // Pointer type? +  ;} +    break; + +  case 84: +#line 1171 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                             // Pointer type?      yyval.TypeVal = new PATypeHolder(HandleUpRefs(PointerType::get(*yyvsp[-1].TypeVal)));      delete yyvsp[-1].TypeVal; -  ; -    break;} -case 84: -#line 1174 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 85: +#line 1179 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.TypeList = new std::list<PATypeHolder>();      yyval.TypeList->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal; -  ; -    break;} -case 85: -#line 1178 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 86: +#line 1183 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      (yyval.TypeList=yyvsp[-2].TypeList)->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal; -  ; -    break;} -case 87: -#line 1184 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 88: +#line 1189 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      (yyval.TypeList=yyvsp[-2].TypeList)->push_back(Type::VoidTy); -  ; -    break;} -case 88: -#line 1187 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 89: +#line 1192 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      (yyval.TypeList = new std::list<PATypeHolder>())->push_back(Type::VoidTy); -  ; -    break;} -case 89: -#line 1190 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 90: +#line 1195 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.TypeList = new std::list<PATypeHolder>(); -  ; -    break;} -case 90: -#line 1200 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Nonempty unsized arr +  ;} +    break; + +  case 91: +#line 1205 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { // Nonempty unsized arr      const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-3].TypeVal->get());      if (ATy == 0)        ThrowException("Cannot make array constant with type: '" +  @@ -2490,11 +2996,12 @@ case 90:      yyval.ConstVal = ConstantArray::get(ATy, *yyvsp[-1].ConstVector);      delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector; -  ; -    break;} -case 91: -#line 1225 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 92: +#line 1230 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-2].TypeVal->get());      if (ATy == 0)        ThrowException("Cannot make array constant with type: '" +  @@ -2506,11 +3013,12 @@ case 91:                       " arguments, but has size of " + itostr(NumElements) +"!");      yyval.ConstVal = ConstantArray::get(ATy, std::vector<Constant*>());      delete yyvsp[-2].TypeVal; -  ; -    break;} -case 92: -#line 1238 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 93: +#line 1243 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-2].TypeVal->get());      if (ATy == 0)        ThrowException("Cannot make array constant with type: '" +  @@ -2537,11 +3045,12 @@ case 92:      free(yyvsp[0].StrVal);      yyval.ConstVal = ConstantArray::get(ATy, Vals);      delete yyvsp[-2].TypeVal; -  ; -    break;} -case 93: -#line 1266 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Nonempty unsized arr +  ;} +    break; + +  case 94: +#line 1271 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { // Nonempty unsized arr      const PackedType *PTy = dyn_cast<PackedType>(yyvsp[-3].TypeVal->get());      if (PTy == 0)        ThrowException("Cannot make packed constant with type: '" +  @@ -2565,11 +3074,12 @@ case 93:      yyval.ConstVal = ConstantPacked::get(PTy, *yyvsp[-1].ConstVector);      delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector; -  ; -    break;} -case 94: -#line 1291 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 95: +#line 1296 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      const StructType *STy = dyn_cast<StructType>(yyvsp[-3].TypeVal->get());      if (STy == 0)        ThrowException("Cannot make struct constant with type: '" +  @@ -2588,11 +3098,12 @@ case 94:      yyval.ConstVal = ConstantStruct::get(STy, *yyvsp[-1].ConstVector);      delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector; -  ; -    break;} -case 95: -#line 1311 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 96: +#line 1316 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      const StructType *STy = dyn_cast<StructType>(yyvsp[-2].TypeVal->get());      if (STy == 0)        ThrowException("Cannot make struct constant with type: '" +  @@ -2603,11 +3114,12 @@ case 95:      yyval.ConstVal = ConstantStruct::get(STy, std::vector<Constant*>());      delete yyvsp[-2].TypeVal; -  ; -    break;} -case 96: -#line 1323 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 97: +#line 1328 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      const PointerType *PTy = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());      if (PTy == 0)        ThrowException("Cannot make null pointer constant with type: '" +  @@ -2615,18 +3127,20 @@ case 96:      yyval.ConstVal = ConstantPointerNull::get(PTy);      delete yyvsp[-1].TypeVal; -  ; -    break;} -case 97: -#line 1332 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 98: +#line 1337 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ConstVal = UndefValue::get(yyvsp[-1].TypeVal->get());      delete yyvsp[-1].TypeVal; -  ; -    break;} -case 98: -#line 1336 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 99: +#line 1341 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      const PointerType *Ty = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());      if (Ty == 0)        ThrowException("Global const reference must be a pointer type!"); @@ -2684,66 +3198,74 @@ case 98:      yyval.ConstVal = cast<GlobalValue>(V);      delete yyvsp[-1].TypeVal;            // Free the type handle -  ; -    break;} -case 99: -#line 1395 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 100: +#line 1400 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (yyvsp[-1].TypeVal->get() != yyvsp[0].ConstVal->getType())        ThrowException("Mismatched types for constant expression!");      yyval.ConstVal = yyvsp[0].ConstVal;      delete yyvsp[-1].TypeVal; -  ; -    break;} -case 100: -#line 1401 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 101: +#line 1406 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      const Type *Ty = yyvsp[-1].TypeVal->get();      if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))        ThrowException("Cannot create a null initialized value of this type!");      yyval.ConstVal = Constant::getNullValue(Ty);      delete yyvsp[-1].TypeVal; -  ; -    break;} -case 101: -#line 1409 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{      // integral constants +  ;} +    break; + +  case 102: +#line 1414 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      // integral constants      if (!ConstantSInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].SInt64Val))        ThrowException("Constant value doesn't fit in type!");      yyval.ConstVal = ConstantSInt::get(yyvsp[-1].PrimType, yyvsp[0].SInt64Val); -  ; -    break;} -case 102: -#line 1414 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{            // integral constants +  ;} +    break; + +  case 103: +#line 1419 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {            // integral constants      if (!ConstantUInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].UInt64Val))        ThrowException("Constant value doesn't fit in type!");      yyval.ConstVal = ConstantUInt::get(yyvsp[-1].PrimType, yyvsp[0].UInt64Val); -  ; -    break;} -case 103: -#line 1419 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{                      // Boolean constants +  ;} +    break; + +  case 104: +#line 1424 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                      // Boolean constants      yyval.ConstVal = ConstantBool::True; -  ; -    break;} -case 104: -#line 1422 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{                     // Boolean constants +  ;} +    break; + +  case 105: +#line 1427 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                     // Boolean constants      yyval.ConstVal = ConstantBool::False; -  ; -    break;} -case 105: -#line 1425 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{                   // Float & Double constants +  ;} +    break; + +  case 106: +#line 1430 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                   // Float & Double constants      if (!ConstantFP::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].FPVal))        ThrowException("Floating point constant invalid for type!!");      yyval.ConstVal = ConstantFP::get(yyvsp[-1].PrimType, yyvsp[0].FPVal); -  ; -    break;} -case 106: -#line 1432 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 107: +#line 1437 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (!yyvsp[-3].ConstVal->getType()->isFirstClassType())        ThrowException("cast constant expression from a non-primitive type: '" +                       yyvsp[-3].ConstVal->getType()->getDescription() + "'!"); @@ -2752,11 +3274,12 @@ case 106:                       yyvsp[-1].TypeVal->get()->getDescription() + "'!");      yyval.ConstVal = ConstantExpr::getCast(yyvsp[-3].ConstVal, yyvsp[-1].TypeVal->get());      delete yyvsp[-1].TypeVal; -  ; -    break;} -case 107: -#line 1442 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 108: +#line 1447 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (!isa<PointerType>(yyvsp[-2].ConstVal->getType()))        ThrowException("GetElementPtr requires a pointer operand!"); @@ -2786,21 +3309,23 @@ case 107:      delete yyvsp[-1].ValueList;      yyval.ConstVal = ConstantExpr::getGetElementPtr(yyvsp[-2].ConstVal, IdxVec); -  ; -    break;} -case 108: -#line 1473 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 109: +#line 1478 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (yyvsp[-5].ConstVal->getType() != Type::BoolTy)        ThrowException("Select condition must be of boolean type!");      if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())        ThrowException("Select operand types must match!");      yyval.ConstVal = ConstantExpr::getSelect(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); -  ; -    break;} -case 109: -#line 1480 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 110: +#line 1485 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())        ThrowException("Binary operator types must match!");      // HACK: llvm 1.3 and earlier used to emit invalid pointer constant exprs. @@ -2820,11 +3345,12 @@ case 109:                               ConstantExpr::getCast(yyvsp[-1].ConstVal, IntPtrTy));        yyval.ConstVal = ConstantExpr::getCast(yyval.ConstVal, yyvsp[-3].ConstVal->getType());      } -  ; -    break;} -case 110: -#line 1501 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 111: +#line 1506 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())        ThrowException("Logical operator types must match!");      if (!yyvsp[-3].ConstVal->getType()->isIntegral()) { @@ -2833,87 +3359,99 @@ case 110:          ThrowException("Logical operator requires integral operands!");      }      yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); -  ; -    break;} -case 111: -#line 1511 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 112: +#line 1516 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())        ThrowException("setcc operand types must match!");      yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); -  ; -    break;} -case 112: -#line 1516 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 113: +#line 1521 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (yyvsp[-1].ConstVal->getType() != Type::UByteTy)        ThrowException("Shift count for shift constant must be unsigned byte!");      if (!yyvsp[-3].ConstVal->getType()->isInteger())        ThrowException("Shift constant expression requires integer operand!");      yyval.ConstVal = ConstantExpr::get(yyvsp[-5].OtherOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); -  ; -    break;} -case 113: -#line 1523 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 114: +#line 1528 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {          if (!isa<PackedType>(yyvsp[-3].ConstVal->getType()))        ThrowException("First operand of extractelement must be "                       "packed type!");      if (yyvsp[-1].ConstVal->getType() != Type::UIntTy)        ThrowException("Second operand of extractelement must be uint!");      yyval.ConstVal = ConstantExpr::getExtractElement(yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); -  ; -    break;} -case 114: -#line 1533 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 115: +#line 1538 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      (yyval.ConstVector = yyvsp[-2].ConstVector)->push_back(yyvsp[0].ConstVal); -  ; -    break;} -case 115: -#line 1536 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 116: +#line 1541 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ConstVector = new std::vector<Constant*>();      yyval.ConstVector->push_back(yyvsp[0].ConstVal); -  ; -    break;} -case 116: -#line 1543 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.BoolVal = false; ; -    break;} -case 117: -#line 1543 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.BoolVal = true; ; -    break;} -case 118: -#line 1553 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 117: +#line 1548 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.BoolVal = false; ;} +    break; + +  case 118: +#line 1548 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.BoolVal = true; ;} +    break; + +  case 119: +#line 1558 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    yyval.ModuleVal = ParserResult = yyvsp[0].ModuleVal;    CurModule.ModuleDone(); -; -    break;} -case 119: -#line 1560 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +;} +    break; + +  case 120: +#line 1565 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ModuleVal = yyvsp[-1].ModuleVal;      CurFun.FunctionDone(); -  ; -    break;} -case 120: -#line 1564 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 121: +#line 1569 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ModuleVal = yyvsp[-1].ModuleVal; -  ; -    break;} -case 121: -#line 1567 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 122: +#line 1572 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ModuleVal = yyvsp[-1].ModuleVal; -  ; -    break;} -case 122: -#line 1570 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 123: +#line 1575 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ModuleVal = CurModule.CurrentModule;      // Emit an error if there are any unresolved types left.      if (!CurModule.LateResolveTypes.empty()) { @@ -2923,11 +3461,12 @@ case 122:        else          ThrowException("Reference to an undefined type: #" + itostr(DID.Num));      } -  ; -    break;} -case 123: -#line 1583 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 124: +#line 1588 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      // Eagerly resolve types.  This is not an optimization, this is a      // requirement that is due to the fact that we could have this:      // @@ -2946,164 +3485,189 @@ case 123:      }      delete yyvsp[0].TypeVal; -  ; -    break;} -case 124: -#line 1603 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{       // Function prototypes can be in const pool -  ; -    break;} -case 125: -#line 1605 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 125: +#line 1608 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {       // Function prototypes can be in const pool +  ;} +    break; + +  case 126: +#line 1610 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (yyvsp[0].ConstVal == 0) ThrowException("Global value initializer is not a constant!");      CurGV = ParseGlobalVariable(yyvsp[-3].StrVal, yyvsp[-2].Linkage, yyvsp[-1].BoolVal, yyvsp[0].ConstVal->getType(), yyvsp[0].ConstVal); -                                                       ; -    break;} -case 126: -#line 1608 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +                                                       ;} +    break; + +  case 127: +#line 1613 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      CurGV = 0; -  ; -    break;} -case 127: -#line 1611 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 128: +#line 1616 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      CurGV = ParseGlobalVariable(yyvsp[-3].StrVal, GlobalValue::ExternalLinkage,                                               yyvsp[-1].BoolVal, *yyvsp[0].TypeVal, 0);      delete yyvsp[0].TypeVal; -                                                   ; -    break;} -case 128: -#line 1615 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +                                                   ;} +    break; + +  case 129: +#line 1620 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      CurGV = 0; -  ; -    break;} -case 129: -#line 1618 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{  -  ; -    break;} -case 130: -#line 1620 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ -  ; -    break;} -case 131: -#line 1622 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{  -  ; -    break;} -case 132: -#line 1627 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Endianness = Module::BigEndian; ; -    break;} -case 133: -#line 1628 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Endianness = Module::LittleEndian; ; -    break;} -case 134: -#line 1630 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 130: +#line 1623 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {  +  ;} +    break; + +  case 131: +#line 1625 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { +  ;} +    break; + +  case 132: +#line 1627 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {  +  ;} +    break; + +  case 133: +#line 1632 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.Endianness = Module::BigEndian; ;} +    break; + +  case 134: +#line 1633 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.Endianness = Module::LittleEndian; ;} +    break; + +  case 135: +#line 1635 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      CurModule.CurrentModule->setEndianness(yyvsp[0].Endianness); -  ; -    break;} -case 135: -#line 1633 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 136: +#line 1638 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (yyvsp[0].UInt64Val == 32)        CurModule.CurrentModule->setPointerSize(Module::Pointer32);      else if (yyvsp[0].UInt64Val == 64)        CurModule.CurrentModule->setPointerSize(Module::Pointer64);      else        ThrowException("Invalid pointer size: '" + utostr(yyvsp[0].UInt64Val) + "'!"); -  ; -    break;} -case 136: -#line 1641 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 137: +#line 1646 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      CurModule.CurrentModule->setTargetTriple(yyvsp[0].StrVal);      free(yyvsp[0].StrVal); -  ; -    break;} -case 138: -#line 1648 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 139: +#line 1653 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {            CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);            free(yyvsp[0].StrVal); -        ; -    break;} -case 139: -#line 1652 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +        ;} +    break; + +  case 140: +#line 1657 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {            CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);            free(yyvsp[0].StrVal); -        ; -    break;} -case 140: -#line 1656 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ -        ; -    break;} -case 144: -#line 1665 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.StrVal = 0; ; -    break;} -case 145: -#line 1667 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +        ;} +    break; + +  case 141: +#line 1661 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { +        ;} +    break; + +  case 145: +#line 1670 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.StrVal = 0; ;} +    break; + +  case 146: +#line 1672 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    if (*yyvsp[-1].TypeVal == Type::VoidTy)      ThrowException("void typed arguments are invalid!");    yyval.ArgVal = new std::pair<PATypeHolder*, char*>(yyvsp[-1].TypeVal, yyvsp[0].StrVal); -; -    break;} -case 146: -#line 1673 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +;} +    break; + +  case 147: +#line 1678 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ArgList = yyvsp[-2].ArgList;      yyvsp[-2].ArgList->push_back(*yyvsp[0].ArgVal);      delete yyvsp[0].ArgVal; -  ; -    break;} -case 147: -#line 1678 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 148: +#line 1683 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ArgList = new std::vector<std::pair<PATypeHolder*,char*> >();      yyval.ArgList->push_back(*yyvsp[0].ArgVal);      delete yyvsp[0].ArgVal; -  ; -    break;} -case 148: -#line 1684 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 149: +#line 1689 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ArgList = yyvsp[0].ArgList; -  ; -    break;} -case 149: -#line 1687 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 150: +#line 1692 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ArgList = yyvsp[-2].ArgList;      yyval.ArgList->push_back(std::pair<PATypeHolder*,                              char*>(new PATypeHolder(Type::VoidTy), 0)); -  ; -    break;} -case 150: -#line 1692 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 151: +#line 1697 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ArgList = new std::vector<std::pair<PATypeHolder*,char*> >();      yyval.ArgList->push_back(std::make_pair(new PATypeHolder(Type::VoidTy), (char*)0)); -  ; -    break;} -case 151: -#line 1696 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 152: +#line 1701 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ArgList = 0; -  ; -    break;} -case 152: -#line 1701 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 153: +#line 1706 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    UnEscapeLexed(yyvsp[-5].StrVal);    std::string FunctionName(yyvsp[-5].StrVal);    free(yyvsp[-5].StrVal);  // Free strdup'd memory! @@ -3186,86 +3750,99 @@ case 152:      delete yyvsp[-3].ArgList;                     // We're now done with the argument list    } -; -    break;} -case 155: -#line 1788 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +;} +    break; + +  case 156: +#line 1793 "/proj/llvm/llvm2/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[-2].Linkage); -; -    break;} -case 158: -#line 1798 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +;} +    break; + +  case 159: +#line 1803 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    yyval.FunctionVal = yyvsp[-1].FunctionVal; -; -    break;} -case 159: -#line 1802 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ CurFun.isDeclare = true; ; -    break;} -case 160: -#line 1802 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +;} +    break; + +  case 160: +#line 1807 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { CurFun.isDeclare = true; ;} +    break; + +  case 161: +#line 1807 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    yyval.FunctionVal = CurFun.CurrentFunction;    CurFun.FunctionDone(); -; -    break;} -case 161: -#line 1811 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{    // A reference to a direct constant +;} +    break; + +  case 162: +#line 1816 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    // A reference to a direct constant      yyval.ValIDVal = ValID::create(yyvsp[0].SInt64Val); -  ; -    break;} -case 162: -#line 1814 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 163: +#line 1819 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ValIDVal = ValID::create(yyvsp[0].UInt64Val); -  ; -    break;} -case 163: -#line 1817 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{                     // Perhaps it's an FP constant? +  ;} +    break; + +  case 164: +#line 1822 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                     // Perhaps it's an FP constant?      yyval.ValIDVal = ValID::create(yyvsp[0].FPVal); -  ; -    break;} -case 164: -#line 1820 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 165: +#line 1825 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ValIDVal = ValID::create(ConstantBool::True); -  ; -    break;} -case 165: -#line 1823 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 166: +#line 1828 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ValIDVal = ValID::create(ConstantBool::False); -  ; -    break;} -case 166: -#line 1826 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 167: +#line 1831 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ValIDVal = ValID::createNull(); -  ; -    break;} -case 167: -#line 1829 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 168: +#line 1834 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ValIDVal = ValID::createUndef(); -  ; -    break;} -case 168: -#line 1832 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{     // A vector zero constant. +  ;} +    break; + +  case 169: +#line 1837 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {     // A vector zero constant.      yyval.ValIDVal = ValID::createZeroInit(); -  ; -    break;} -case 169: -#line 1835 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Nonempty unsized packed vector +  ;} +    break; + +  case 170: +#line 1840 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { // Nonempty unsized packed vector      const Type *ETy = (*yyvsp[-1].ConstVector)[0]->getType();      int NumElements = yyvsp[-1].ConstVector->size();  @@ -3288,65 +3865,74 @@ case 169:      yyval.ValIDVal = ValID::create(ConstantPacked::get(pt, *yyvsp[-1].ConstVector));      delete PTy; delete yyvsp[-1].ConstVector; -  ; -    break;} -case 170: -#line 1859 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 171: +#line 1864 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ValIDVal = ValID::create(yyvsp[0].ConstVal); -  ; -    break;} -case 171: -#line 1866 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{  // Is it an integer reference...? +  ;} +    break; + +  case 172: +#line 1871 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {  // Is it an integer reference...?      yyval.ValIDVal = ValID::create(yyvsp[0].SIntVal); -  ; -    break;} -case 172: -#line 1869 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{                   // Is it a named reference...? +  ;} +    break; + +  case 173: +#line 1874 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                   // Is it a named reference...?      yyval.ValIDVal = ValID::create(yyvsp[0].StrVal); -  ; -    break;} -case 175: -#line 1880 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 176: +#line 1885 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ValueVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal); delete yyvsp[-1].TypeVal; -  ; -    break;} -case 176: -#line 1884 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 177: +#line 1889 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.FunctionVal = yyvsp[-1].FunctionVal; -  ; -    break;} -case 177: -#line 1887 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Do not allow functions with 0 basic blocks    +  ;} +    break; + +  case 178: +#line 1892 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { // Do not allow functions with 0 basic blocks         yyval.FunctionVal = yyvsp[-1].FunctionVal; -  ; -    break;} -case 178: -#line 1895 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 179: +#line 1900 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      setValueName(yyvsp[0].TermInstVal, yyvsp[-1].StrVal);      InsertValue(yyvsp[0].TermInstVal);      yyvsp[-2].BasicBlockVal->getInstList().push_back(yyvsp[0].TermInstVal);      InsertValue(yyvsp[-2].BasicBlockVal);      yyval.BasicBlockVal = yyvsp[-2].BasicBlockVal; -  ; -    break;} -case 179: -#line 1904 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 180: +#line 1909 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyvsp[-1].BasicBlockVal->getInstList().push_back(yyvsp[0].InstVal);      yyval.BasicBlockVal = yyvsp[-1].BasicBlockVal; -  ; -    break;} -case 180: -#line 1908 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 181: +#line 1913 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.BasicBlockVal = CurBB = getBBVal(ValID::create((int)CurFun.NextBBNum++), true);      // Make sure to move the basic block to the correct location in the @@ -3355,11 +3941,12 @@ case 180:      Function::BasicBlockListType &BBL =         CurFun.CurrentFunction->getBasicBlockList();      BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal); -  ; -    break;} -case 181: -#line 1918 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 182: +#line 1923 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.BasicBlockVal = CurBB = getBBVal(ValID::create(yyvsp[0].StrVal), true);      // Make sure to move the basic block to the correct location in the @@ -3368,35 +3955,40 @@ case 181:      Function::BasicBlockListType &BBL =         CurFun.CurrentFunction->getBasicBlockList();      BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal); -  ; -    break;} -case 182: -#line 1929 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{              // Return with a result... +  ;} +    break; + +  case 183: +#line 1934 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {              // Return with a result...      yyval.TermInstVal = new ReturnInst(yyvsp[0].ValueVal); -  ; -    break;} -case 183: -#line 1932 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{                                       // Return with no result... +  ;} +    break; + +  case 184: +#line 1937 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                                       // Return with no result...      yyval.TermInstVal = new ReturnInst(); -  ; -    break;} -case 184: -#line 1935 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{                         // Unconditional Branch... +  ;} +    break; + +  case 185: +#line 1940 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {                         // Unconditional Branch...      yyval.TermInstVal = new BranchInst(getBBVal(yyvsp[0].ValIDVal)); -  ; -    break;} -case 185: -#line 1938 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{   +  ;} +    break; + +  case 186: +#line 1943 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {        yyval.TermInstVal = new BranchInst(getBBVal(yyvsp[-3].ValIDVal), getBBVal(yyvsp[0].ValIDVal), getVal(Type::BoolTy, yyvsp[-6].ValIDVal)); -  ; -    break;} -case 186: -#line 1941 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 187: +#line 1946 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      SwitchInst *S = new SwitchInst(getVal(yyvsp[-7].PrimType, yyvsp[-6].ValIDVal), getBBVal(yyvsp[-3].ValIDVal), yyvsp[-1].JumpTable->size());      yyval.TermInstVal = S; @@ -3409,18 +4001,20 @@ case 186:          ThrowException("Switch case is constant, but not a simple integer!");      }      delete yyvsp[-1].JumpTable; -  ; -    break;} -case 187: -#line 1955 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 188: +#line 1960 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      SwitchInst *S = new SwitchInst(getVal(yyvsp[-6].PrimType, yyvsp[-5].ValIDVal), getBBVal(yyvsp[-2].ValIDVal), 0);      yyval.TermInstVal = S; -  ; -    break;} -case 188: -#line 1960 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 189: +#line 1965 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      const PointerType *PFTy;      const FunctionType *Ty; @@ -3471,34 +4065,38 @@ case 188:      delete yyvsp[-10].TypeVal;      delete yyvsp[-7].ValueList; -  ; -    break;} -case 189: -#line 2012 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 190: +#line 2017 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.TermInstVal = new UnwindInst(); -  ; -    break;} -case 190: -#line 2015 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 191: +#line 2020 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.TermInstVal = new UnreachableInst(); -  ; -    break;} -case 191: -#line 2021 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 192: +#line 2026 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.JumpTable = yyvsp[-5].JumpTable;      Constant *V = cast<Constant>(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));      if (V == 0)        ThrowException("May only switch on a constant pool value!");      yyval.JumpTable->push_back(std::make_pair(V, getBBVal(yyvsp[0].ValIDVal))); -  ; -    break;} -case 192: -#line 2029 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 193: +#line 2034 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.JumpTable = new std::vector<std::pair<Constant*, BasicBlock*> >();      Constant *V = cast<Constant>(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal)); @@ -3506,66 +4104,75 @@ case 192:        ThrowException("May only switch on a constant pool value!");      yyval.JumpTable->push_back(std::make_pair(V, getBBVal(yyvsp[0].ValIDVal))); -  ; -    break;} -case 193: -#line 2039 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 194: +#line 2044 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    // Is this definition named?? if so, assign the name...    setValueName(yyvsp[0].InstVal, yyvsp[-1].StrVal);    InsertValue(yyvsp[0].InstVal);    yyval.InstVal = yyvsp[0].InstVal; -; -    break;} -case 194: -#line 2046 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{    // Used for PHI nodes +;} +    break; + +  case 195: +#line 2051 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    // Used for PHI nodes      yyval.PHIList = new std::list<std::pair<Value*, BasicBlock*> >();      yyval.PHIList->push_back(std::make_pair(getVal(*yyvsp[-5].TypeVal, yyvsp[-3].ValIDVal), getBBVal(yyvsp[-1].ValIDVal)));      delete yyvsp[-5].TypeVal; -  ; -    break;} -case 195: -#line 2051 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 196: +#line 2056 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.PHIList = yyvsp[-6].PHIList;      yyvsp[-6].PHIList->push_back(std::make_pair(getVal(yyvsp[-6].PHIList->front().first->getType(), yyvsp[-3].ValIDVal),                                   getBBVal(yyvsp[-1].ValIDVal))); -  ; -    break;} -case 196: -#line 2058 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{    // Used for call statements, and memory insts... +  ;} +    break; + +  case 197: +#line 2063 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {    // Used for call statements, and memory insts...      yyval.ValueList = new std::vector<Value*>();      yyval.ValueList->push_back(yyvsp[0].ValueVal); -  ; -    break;} -case 197: -#line 2062 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 198: +#line 2067 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.ValueList = yyvsp[-2].ValueList;      yyvsp[-2].ValueList->push_back(yyvsp[0].ValueVal); -  ; -    break;} -case 199: -#line 2068 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ValueList = 0; ; -    break;} -case 200: -#line 2070 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 200: +#line 2073 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    { yyval.ValueList = 0; ;} +    break; + +  case 201: +#line 2075 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.BoolVal = true; -  ; -    break;} -case 201: -#line 2073 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 202: +#line 2078 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.BoolVal = false; -  ; -    break;} -case 202: -#line 2079 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 203: +#line 2084 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (!(*yyvsp[-3].TypeVal)->isInteger() && !(*yyvsp[-3].TypeVal)->isFloatingPoint() &&           !isa<PackedType>((*yyvsp[-3].TypeVal).get()))        ThrowException( @@ -3576,11 +4183,12 @@ case 202:      if (yyval.InstVal == 0)        ThrowException("binary operator returned null!");      delete yyvsp[-3].TypeVal; -  ; -    break;} -case 203: -#line 2091 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 204: +#line 2096 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (!(*yyvsp[-3].TypeVal)->isIntegral()) {        if (!isa<PackedType>(yyvsp[-3].TypeVal->get()) ||            !cast<PackedType>(yyvsp[-3].TypeVal->get())->getElementType()->isIntegral()) @@ -3590,11 +4198,12 @@ case 203:      if (yyval.InstVal == 0)        ThrowException("binary operator returned null!");      delete yyvsp[-3].TypeVal; -  ; -    break;} -case 204: -#line 2102 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 205: +#line 2107 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if(isa<PackedType>((*yyvsp[-3].TypeVal).get())) {        ThrowException(          "PackedTypes currently not supported in setcc instructions!"); @@ -3603,11 +4212,12 @@ case 204:      if (yyval.InstVal == 0)        ThrowException("binary operator returned null!");      delete yyvsp[-3].TypeVal; -  ; -    break;} -case 205: -#line 2112 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 206: +#line 2117 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      std::cerr << "WARNING: Use of eliminated 'not' instruction:"                << " Replacing with 'xor'.\n"; @@ -3618,49 +4228,54 @@ case 205:      yyval.InstVal = BinaryOperator::create(Instruction::Xor, yyvsp[0].ValueVal, Ones);      if (yyval.InstVal == 0)        ThrowException("Could not create a xor instruction!"); -  ; -    break;} -case 206: -#line 2124 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 207: +#line 2129 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (yyvsp[0].ValueVal->getType() != Type::UByteTy)        ThrowException("Shift amount must be ubyte!");      if (!yyvsp[-2].ValueVal->getType()->isInteger())        ThrowException("Shift constant expression requires integer operand!");      yyval.InstVal = new ShiftInst(yyvsp[-3].OtherOpVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal); -  ; -    break;} -case 207: -#line 2131 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 208: +#line 2136 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (!yyvsp[0].TypeVal->get()->isFirstClassType())        ThrowException("cast instruction to a non-primitive type: '" +                       yyvsp[0].TypeVal->get()->getDescription() + "'!");      yyval.InstVal = new CastInst(yyvsp[-2].ValueVal, *yyvsp[0].TypeVal);      delete yyvsp[0].TypeVal; -  ; -    break;} -case 208: -#line 2138 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 209: +#line 2143 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (yyvsp[-4].ValueVal->getType() != Type::BoolTy)        ThrowException("select condition must be boolean!");      if (yyvsp[-2].ValueVal->getType() != yyvsp[0].ValueVal->getType())        ThrowException("select value types should match!");      yyval.InstVal = new SelectInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal); -  ; -    break;} -case 209: -#line 2145 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 210: +#line 2150 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      NewVarArgs = true;      yyval.InstVal = new VAArgInst(yyvsp[-2].ValueVal, *yyvsp[0].TypeVal);      delete yyvsp[0].TypeVal; -  ; -    break;} -case 210: -#line 2150 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 211: +#line 2155 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      ObsoleteVarArgs = true;      const Type* ArgTy = yyvsp[-2].ValueVal->getType();      Function* NF = CurModule.CurrentModule-> @@ -3678,11 +4293,12 @@ case 210:      CurBB->getInstList().push_back(new StoreInst(bar, foo));      yyval.InstVal = new VAArgInst(foo, *yyvsp[0].TypeVal);      delete yyvsp[0].TypeVal; -  ; -    break;} -case 211: -#line 2169 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 212: +#line 2174 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      ObsoleteVarArgs = true;      const Type* ArgTy = yyvsp[-2].ValueVal->getType();      Function* NF = CurModule.CurrentModule-> @@ -3703,22 +4319,24 @@ case 211:      CurBB->getInstList().push_back(tmp);      yyval.InstVal = new LoadInst(foo);      delete yyvsp[0].TypeVal; -  ; -    break;} -case 212: -#line 2191 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 213: +#line 2196 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (!isa<PackedType>(yyvsp[-2].ValueVal->getType()))        ThrowException("First operand of extractelement must be a "                       "packed type val!");      if (yyvsp[0].ValueVal->getType() != Type::UIntTy)        ThrowException("Second operand of extractelement must be a uint!");      yyval.InstVal = new ExtractElementInst(yyvsp[-2].ValueVal, yyvsp[0].ValueVal); -  ; -    break;} -case 213: -#line 2199 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 214: +#line 2204 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      const Type *Ty = yyvsp[0].PHIList->front().first->getType();      if (!Ty->isFirstClassType())        ThrowException("PHI node operands must be of first class type!"); @@ -3731,11 +4349,12 @@ case 213:        yyvsp[0].PHIList->pop_front();      }      delete yyvsp[0].PHIList;  // Free the list... -  ; -    break;} -case 214: -#line 2213 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 215: +#line 2218 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      const PointerType *PFTy;      const FunctionType *Ty; @@ -3791,78 +4410,89 @@ case 214:      cast<CallInst>(yyval.InstVal)->setCallingConv(yyvsp[-5].UIntVal);      delete yyvsp[-4].TypeVal;      delete yyvsp[-1].ValueList; -  ; -    break;} -case 215: -#line 2270 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 216: +#line 2275 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.InstVal = yyvsp[0].InstVal; -  ; -    break;} -case 216: -#line 2276 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{  +  ;} +    break; + +  case 217: +#line 2281 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {       yyval.ValueList = yyvsp[0].ValueList;  -  ; -    break;} -case 217: -#line 2278 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{  +  ;} +    break; + +  case 218: +#line 2283 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {       yyval.ValueList = new std::vector<Value*>();  -  ; -    break;} -case 218: -#line 2282 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 219: +#line 2287 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.BoolVal = true; -  ; -    break;} -case 219: -#line 2285 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 220: +#line 2290 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.BoolVal = false; -  ; -    break;} -case 220: -#line 2291 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 221: +#line 2296 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.InstVal = new MallocInst(*yyvsp[-1].TypeVal, 0, yyvsp[0].UIntVal);      delete yyvsp[-1].TypeVal; -  ; -    break;} -case 221: -#line 2295 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 222: +#line 2300 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.InstVal = new MallocInst(*yyvsp[-4].TypeVal, getVal(yyvsp[-2].PrimType, yyvsp[-1].ValIDVal), yyvsp[0].UIntVal);      delete yyvsp[-4].TypeVal; -  ; -    break;} -case 222: -#line 2299 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 223: +#line 2304 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.InstVal = new AllocaInst(*yyvsp[-1].TypeVal, 0, yyvsp[0].UIntVal);      delete yyvsp[-1].TypeVal; -  ; -    break;} -case 223: -#line 2303 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 224: +#line 2308 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      yyval.InstVal = new AllocaInst(*yyvsp[-4].TypeVal, getVal(yyvsp[-2].PrimType, yyvsp[-1].ValIDVal), yyvsp[0].UIntVal);      delete yyvsp[-4].TypeVal; -  ; -    break;} -case 224: -#line 2307 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 225: +#line 2312 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (!isa<PointerType>(yyvsp[0].ValueVal->getType()))        ThrowException("Trying to free nonpointer type " +                        yyvsp[0].ValueVal->getType()->getDescription() + "!");      yyval.InstVal = new FreeInst(yyvsp[0].ValueVal); -  ; -    break;} -case 225: -#line 2314 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 226: +#line 2319 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (!isa<PointerType>(yyvsp[-1].TypeVal->get()))        ThrowException("Can't load from nonpointer type: " +                       (*yyvsp[-1].TypeVal)->getDescription()); @@ -3871,11 +4501,12 @@ case 225:                       (*yyvsp[-1].TypeVal)->getDescription());      yyval.InstVal = new LoadInst(getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal), "", yyvsp[-3].BoolVal);      delete yyvsp[-1].TypeVal; -  ; -    break;} -case 226: -#line 2324 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 227: +#line 2329 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      const PointerType *PT = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());      if (!PT)        ThrowException("Can't store to a nonpointer type: " + @@ -3887,11 +4518,12 @@ case 226:      yyval.InstVal = new StoreInst(yyvsp[-3].ValueVal, getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal), yyvsp[-5].BoolVal);      delete yyvsp[-1].TypeVal; -  ; -    break;} -case 227: -#line 2337 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" -{ +  ;} +    break; + +  case 228: +#line 2342 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +    {      if (!isa<PointerType>(yyvsp[-2].TypeVal->get()))        ThrowException("getelementptr insn requires pointer operand!"); @@ -3911,231 +4543,239 @@ case 227:                       (*yyvsp[-2].TypeVal)->getDescription()+ "'!");      yyval.InstVal = new GetElementPtrInst(getVal(*yyvsp[-2].TypeVal, yyvsp[-1].ValIDVal), *yyvsp[0].ValueList);      delete yyvsp[-2].TypeVal; delete yyvsp[0].ValueList; -  ; -    break;} -} -   /* the action file gets copied in in place of this dollarsign */ -#line 543 "/usr/share/bison.simple" +  ;} +    break; + + +    } + +/* Line 1000 of yacc.c.  */ +#line 4554 "llvmAsmParser.tab.c"    yyvsp -= yylen;    yyssp -= yylen; -#ifdef YYLSP_NEEDED -  yylsp -= yylen; -#endif -#if YYDEBUG != 0 -  if (yydebug) -    { -      short *ssp1 = yyss - 1; -      fprintf (stderr, "state stack now"); -      while (ssp1 != yyssp) -	fprintf (stderr, " %d", *++ssp1); -      fprintf (stderr, "\n"); -    } -#endif + +  YY_STACK_PRINT (yyss, yyssp);    *++yyvsp = yyval; -#ifdef YYLSP_NEEDED -  yylsp++; -  if (yylen == 0) -    { -      yylsp->first_line = yylloc.first_line; -      yylsp->first_column = yylloc.first_column; -      yylsp->last_line = (yylsp-1)->last_line; -      yylsp->last_column = (yylsp-1)->last_column; -      yylsp->text = 0; -    } -  else -    { -      yylsp->last_line = (yylsp+yylen-1)->last_line; -      yylsp->last_column = (yylsp+yylen-1)->last_column; -    } -#endif -  /* 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.  */ +  /* 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 - YYNTBASE] + *yyssp; -  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) +  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; +  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)      yystate = yytable[yystate];    else -    yystate = yydefgoto[yyn - YYNTBASE]; +    yystate = yydefgoto[yyn - YYNTOKENS];    goto yynewstate; -yyerrlab:   /* here on detecting error */ -  if (! yyerrstatus) -    /* If not already recovering from an error, report this error.  */ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: +  /* If not already recovering from an error, report this error.  */ +  if (!yyerrstatus)      {        ++yynerrs; - -#ifdef YYERROR_VERBOSE +#if YYERROR_VERBOSE        yyn = yypact[yystate]; -      if (yyn > YYFLAG && yyn < YYLAST) +      if (YYPACT_NINF < yyn && yyn < YYLAST)  	{ -	  int size = 0; -	  char *msg; -	  int x, count; - -	  count = 0; -	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */ -	  for (x = (yyn < 0 ? -yyn : 0); -	       x < (sizeof(yytname) / sizeof(char *)); x++) -	    if (yycheck[x + yyn] == x) -	      size += strlen(yytname[x]) + 15, count++; -	  msg = (char *) malloc(size + 15); -	  if (msg != 0) +	  YYSIZE_T yysize = 0; +	  int yytype = YYTRANSLATE (yychar); +	  const char* yyprefix; +	  char *yymsg; +	  int yyx; + +	  /* 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; +	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; +	  int yycount = 0; + +	  yyprefix = ", expecting "; +	  for (yyx = yyxbegin; yyx < yyxend; ++yyx) +	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) +	      { +		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]); +		yycount += 1; +		if (yycount == 5) +		  { +		    yysize = 0; +		    break; +		  } +	      } +	  yysize += (sizeof ("syntax error, unexpected ") +		     + yystrlen (yytname[yytype])); +	  yymsg = (char *) YYSTACK_ALLOC (yysize); +	  if (yymsg != 0)  	    { -	      strcpy(msg, "parse error"); +	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected "); +	      yyp = yystpcpy (yyp, yytname[yytype]); -	      if (count < 5) +	      if (yycount < 5)  		{ -		  count = 0; -		  for (x = (yyn < 0 ? -yyn : 0); -		       x < (sizeof(yytname) / sizeof(char *)); x++) -		    if (yycheck[x + yyn] == x) +		  yyprefix = ", expecting "; +		  for (yyx = yyxbegin; yyx < yyxend; ++yyx) +		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)  		      { -			strcat(msg, count == 0 ? ", expecting `" : " or `"); -			strcat(msg, yytname[x]); -			strcat(msg, "'"); -			count++; +			yyp = yystpcpy (yyp, yyprefix); +			yyp = yystpcpy (yyp, yytname[yyx]); +			yyprefix = " or ";  		      }  		} -	      yyerror(msg); -	      free(msg); +	      yyerror (yymsg); +	      YYSTACK_FREE (yymsg);  	    }  	  else -	    yyerror ("parse error; also virtual memory exceeded"); +	    yyerror ("syntax error; also virtual memory exhausted");  	}        else  #endif /* YYERROR_VERBOSE */ -	yyerror("parse error"); +	yyerror ("syntax error");      } -  goto yyerrlab1; -yyerrlab1:   /* here on error raised explicitly by an action */ +    if (yyerrstatus == 3)      { -      /* if just tried and failed to reuse lookahead token after an error, discard it.  */ - -      /* return failure if at end of input */ -      if (yychar == YYEOF) -	YYABORT; - -#if YYDEBUG != 0 -      if (yydebug) -	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif +      /* If just tried and failed to reuse lookahead token after an +	 error, discard it.  */ + +      if (yychar <= YYEOF) +        { +          /* If at end of input, pop the error token, +	     then the rest of the stack, then return failure.  */ +	  if (yychar == YYEOF) +	     for (;;) +	       { +		 YYPOPSTACK; +		 if (yyssp == yyss) +		   YYABORT; +		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); +		 yydestruct (yystos[*yyssp], yyvsp); +	       } +        } +      else +	{ +	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc); +	  yydestruct (yytoken, &yylval); +	  yychar = YYEMPTY; -      yychar = YYEMPTY; +	}      } -  /* Else will try to reuse lookahead token -     after shifting the error token.  */ - -  yyerrstatus = 3;		/* Each real token shifted decrements this */ +  /* Else will try to reuse lookahead token after shifting the error +     token.  */ +  goto yyerrlab1; -  goto yyerrhandle; -yyerrdefault:  /* current state does not do anything special for the error token. */ +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR.  | +`---------------------------------------------------*/ +yyerrorlab: -#if 0 -  /* This is wrong; only states that explicitly want error tokens -     should shift them.  */ -  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/ -  if (yyn) goto yydefault; +#ifdef __GNUC__ +  /* Pacify GCC when the user code never invokes YYERROR and the label +     yyerrorlab therefore never appears in user code.  */ +  if (0) +     goto yyerrorlab;  #endif -yyerrpop:   /* pop the current state because it cannot handle the error token */ - -  if (yyssp == yyss) YYABORT; -  yyvsp--; -  yystate = *--yyssp; -#ifdef YYLSP_NEEDED -  yylsp--; -#endif +  yyvsp -= yylen; +  yyssp -= yylen; +  yystate = *yyssp; +  goto yyerrlab1; -#if YYDEBUG != 0 -  if (yydebug) -    { -      short *ssp1 = yyss - 1; -      fprintf (stderr, "Error: state stack now"); -      while (ssp1 != yyssp) -	fprintf (stderr, " %d", *++ssp1); -      fprintf (stderr, "\n"); -    } -#endif -yyerrhandle: +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR.  | +`-------------------------------------------------------------*/ +yyerrlab1: +  yyerrstatus = 3;	/* Each real token shifted decrements this.  */ -  yyn = yypact[yystate]; -  if (yyn == YYFLAG) -    goto yyerrdefault; +  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; +	    } +	} -  yyn += YYTERROR; -  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) -    goto yyerrdefault; +      /* Pop the current state because it cannot handle the error token.  */ +      if (yyssp == yyss) +	YYABORT; -  yyn = yytable[yyn]; -  if (yyn < 0) -    { -      if (yyn == YYFLAG) -	goto yyerrpop; -      yyn = -yyn; -      goto yyreduce; +      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); +      yydestruct (yystos[yystate], yyvsp); +      YYPOPSTACK; +      yystate = *yyssp; +      YY_STACK_PRINT (yyss, yyssp);      } -  else if (yyn == 0) -    goto yyerrpop;    if (yyn == YYFINAL)      YYACCEPT; -#if YYDEBUG != 0 -  if (yydebug) -    fprintf(stderr, "Shifting error token, "); -#endif +  YYDPRINTF ((stderr, "Shifting error token, "));    *++yyvsp = yylval; -#ifdef YYLSP_NEEDED -  *++yylsp = yylloc; -#endif +    yystate = yyn;    goto yynewstate; - yyacceptlab: -  /* YYACCEPT comes here.  */ -  if (yyfree_stacks) -    { -      free (yyss); -      free (yyvs); -#ifdef YYLSP_NEEDED -      free (yyls); + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here.  | +`-------------------------------------*/ +yyacceptlab: +  yyresult = 0; +  goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here.  | +`-----------------------------------*/ +yyabortlab: +  yyresult = 1; +  goto yyreturn; + +#ifndef yyoverflow +/*----------------------------------------------. +| yyoverflowlab -- parser overflow comes here.  | +`----------------------------------------------*/ +yyoverflowlab: +  yyerror ("parser stack overflow"); +  yyresult = 2; +  /* Fall through.  */  #endif -    } -  return 0; - yyabortlab: -  /* YYABORT comes here.  */ -  if (yyfree_stacks) -    { -      free (yyss); -      free (yyvs); -#ifdef YYLSP_NEEDED -      free (yyls); +yyreturn: +#ifndef yyoverflow +  if (yyss != yyssa) +    YYSTACK_FREE (yyss);  #endif -    } -  return 1; +  return yyresult;  } -#line 2360 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + + +#line 2365 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"  int yyerror(const char *ErrorMsg) {    std::string where  @@ -4149,3 +4789,4 @@ int yyerror(const char *ErrorMsg) {    ThrowException(errMsg);    return 0;  } + diff --git a/llvm/lib/AsmParser/llvmAsmParser.h b/llvm/lib/AsmParser/llvmAsmParser.h index 2c279b69e86..ae779921df1 100644 --- a/llvm/lib/AsmParser/llvmAsmParser.h +++ b/llvm/lib/AsmParser/llvmAsmParser.h @@ -1,4 +1,231 @@ -typedef union { +/* A Bison parser, made by GNU Bison 1.875c.  */ + +/* Skeleton parser for Yacc-like parsing with Bison, +   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 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., 59 Temple Place - Suite 330, +   Boston, MA 02111-1307, USA.  */ + +/* As a special exception, when this file is copied by Bison into a +   Bison output file, you may use that output file without restriction. +   This special exception was added by the Free Software Foundation +   in version 1.24 of Bison.  */ + +/* 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, +     SINTVAL = 260, +     UINTVAL = 261, +     FPVAL = 262, +     VOID = 263, +     BOOL = 264, +     SBYTE = 265, +     UBYTE = 266, +     SHORT = 267, +     USHORT = 268, +     INT = 269, +     UINT = 270, +     LONG = 271, +     ULONG = 272, +     FLOAT = 273, +     DOUBLE = 274, +     TYPE = 275, +     LABEL = 276, +     VAR_ID = 277, +     LABELSTR = 278, +     STRINGCONSTANT = 279, +     IMPLEMENTATION = 280, +     ZEROINITIALIZER = 281, +     TRUETOK = 282, +     FALSETOK = 283, +     BEGINTOK = 284, +     ENDTOK = 285, +     DECLARE = 286, +     GLOBAL = 287, +     CONSTANT = 288, +     SECTION = 289, +     VOLATILE = 290, +     TO = 291, +     DOTDOTDOT = 292, +     NULL_TOK = 293, +     UNDEF = 294, +     CONST = 295, +     INTERNAL = 296, +     LINKONCE = 297, +     WEAK = 298, +     APPENDING = 299, +     OPAQUE = 300, +     NOT = 301, +     EXTERNAL = 302, +     TARGET = 303, +     TRIPLE = 304, +     ENDIAN = 305, +     POINTERSIZE = 306, +     LITTLE = 307, +     BIG = 308, +     ALIGN = 309, +     DEPLIBS = 310, +     CALL = 311, +     TAIL = 312, +     CC_TOK = 313, +     CCC_TOK = 314, +     FASTCC_TOK = 315, +     COLDCC_TOK = 316, +     RET = 317, +     BR = 318, +     SWITCH = 319, +     INVOKE = 320, +     UNWIND = 321, +     UNREACHABLE = 322, +     ADD = 323, +     SUB = 324, +     MUL = 325, +     DIV = 326, +     REM = 327, +     AND = 328, +     OR = 329, +     XOR = 330, +     SETLE = 331, +     SETGE = 332, +     SETLT = 333, +     SETGT = 334, +     SETEQ = 335, +     SETNE = 336, +     MALLOC = 337, +     ALLOCA = 338, +     FREE = 339, +     LOAD = 340, +     STORE = 341, +     GETELEMENTPTR = 342, +     PHI_TOK = 343, +     CAST = 344, +     SELECT = 345, +     SHL = 346, +     SHR = 347, +     VAARG = 348, +     EXTRACTELEMENT = 349, +     VAARG_old = 350, +     VANEXT_old = 351 +   }; +#endif +#define ESINT64VAL 258 +#define EUINT64VAL 259 +#define SINTVAL 260 +#define UINTVAL 261 +#define FPVAL 262 +#define VOID 263 +#define BOOL 264 +#define SBYTE 265 +#define UBYTE 266 +#define SHORT 267 +#define USHORT 268 +#define INT 269 +#define UINT 270 +#define LONG 271 +#define ULONG 272 +#define FLOAT 273 +#define DOUBLE 274 +#define TYPE 275 +#define LABEL 276 +#define VAR_ID 277 +#define LABELSTR 278 +#define STRINGCONSTANT 279 +#define IMPLEMENTATION 280 +#define ZEROINITIALIZER 281 +#define TRUETOK 282 +#define FALSETOK 283 +#define BEGINTOK 284 +#define ENDTOK 285 +#define DECLARE 286 +#define GLOBAL 287 +#define CONSTANT 288 +#define SECTION 289 +#define VOLATILE 290 +#define TO 291 +#define DOTDOTDOT 292 +#define NULL_TOK 293 +#define UNDEF 294 +#define CONST 295 +#define INTERNAL 296 +#define LINKONCE 297 +#define WEAK 298 +#define APPENDING 299 +#define OPAQUE 300 +#define NOT 301 +#define EXTERNAL 302 +#define TARGET 303 +#define TRIPLE 304 +#define ENDIAN 305 +#define POINTERSIZE 306 +#define LITTLE 307 +#define BIG 308 +#define ALIGN 309 +#define DEPLIBS 310 +#define CALL 311 +#define TAIL 312 +#define CC_TOK 313 +#define CCC_TOK 314 +#define FASTCC_TOK 315 +#define COLDCC_TOK 316 +#define RET 317 +#define BR 318 +#define SWITCH 319 +#define INVOKE 320 +#define UNWIND 321 +#define UNREACHABLE 322 +#define ADD 323 +#define SUB 324 +#define MUL 325 +#define DIV 326 +#define REM 327 +#define AND 328 +#define OR 329 +#define XOR 330 +#define SETLE 331 +#define SETGE 332 +#define SETLT 333 +#define SETGT 334 +#define SETEQ 335 +#define SETNE 336 +#define MALLOC 337 +#define ALLOCA 338 +#define FREE 339 +#define LOAD 340 +#define STORE 341 +#define GETELEMENTPTR 342 +#define PHI_TOK 343 +#define CAST 344 +#define SELECT 345 +#define SHL 346 +#define SHR 347 +#define VAARG 348 +#define EXTRACTELEMENT 349 +#define VAARG_old 350 +#define VANEXT_old 351 + + + + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +#line 878 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y" +typedef union YYSTYPE {    llvm::Module                           *ModuleVal;    llvm::Function                         *FunctionVal;    std::pair<llvm::PATypeHolder*, char*>  *ArgVal; @@ -37,100 +264,14 @@ typedef union {    llvm::Instruction::OtherOps             OtherOpVal;    llvm::Module::Endianness                Endianness;  } YYSTYPE; -#define	ESINT64VAL	257 -#define	EUINT64VAL	258 -#define	SINTVAL	259 -#define	UINTVAL	260 -#define	FPVAL	261 -#define	VOID	262 -#define	BOOL	263 -#define	SBYTE	264 -#define	UBYTE	265 -#define	SHORT	266 -#define	USHORT	267 -#define	INT	268 -#define	UINT	269 -#define	LONG	270 -#define	ULONG	271 -#define	FLOAT	272 -#define	DOUBLE	273 -#define	TYPE	274 -#define	LABEL	275 -#define	VAR_ID	276 -#define	LABELSTR	277 -#define	STRINGCONSTANT	278 -#define	IMPLEMENTATION	279 -#define	ZEROINITIALIZER	280 -#define	TRUETOK	281 -#define	FALSETOK	282 -#define	BEGINTOK	283 -#define	ENDTOK	284 -#define	DECLARE	285 -#define	GLOBAL	286 -#define	CONSTANT	287 -#define	SECTION	288 -#define	VOLATILE	289 -#define	TO	290 -#define	DOTDOTDOT	291 -#define	NULL_TOK	292 -#define	UNDEF	293 -#define	CONST	294 -#define	INTERNAL	295 -#define	LINKONCE	296 -#define	WEAK	297 -#define	APPENDING	298 -#define	OPAQUE	299 -#define	NOT	300 -#define	EXTERNAL	301 -#define	TARGET	302 -#define	TRIPLE	303 -#define	ENDIAN	304 -#define	POINTERSIZE	305 -#define	LITTLE	306 -#define	BIG	307 -#define	ALIGN	308 -#define	DEPLIBS	309 -#define	CALL	310 -#define	TAIL	311 -#define	CC_TOK	312 -#define	CCC_TOK	313 -#define	FASTCC_TOK	314 -#define	COLDCC_TOK	315 -#define	RET	316 -#define	BR	317 -#define	SWITCH	318 -#define	INVOKE	319 -#define	UNWIND	320 -#define	UNREACHABLE	321 -#define	ADD	322 -#define	SUB	323 -#define	MUL	324 -#define	DIV	325 -#define	REM	326 -#define	AND	327 -#define	OR	328 -#define	XOR	329 -#define	SETLE	330 -#define	SETGE	331 -#define	SETLT	332 -#define	SETGT	333 -#define	SETEQ	334 -#define	SETNE	335 -#define	MALLOC	336 -#define	ALLOCA	337 -#define	FREE	338 -#define	LOAD	339 -#define	STORE	340 -#define	GETELEMENTPTR	341 -#define	PHI_TOK	342 -#define	CAST	343 -#define	SELECT	344 -#define	SHL	345 -#define	SHR	346 -#define	VAARG	347 -#define	EXTRACTELEMENT	348 -#define	VAARG_old	349 -#define	VANEXT_old	350 - +/* Line 1275 of yacc.c.  */ +#line 269 "llvmAsmParser.tab.h" +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif  extern YYSTYPE llvmAsmlval; + + + diff --git a/llvm/lib/AsmParser/llvmAsmParser.y b/llvm/lib/AsmParser/llvmAsmParser.y index 2b04412bd5f..67d20fed804 100644 --- a/llvm/lib/AsmParser/llvmAsmParser.y +++ b/llvm/lib/AsmParser/llvmAsmParser.y @@ -17,6 +17,7 @@  #include "llvm/Instructions.h"  #include "llvm/Module.h"  #include "llvm/SymbolTable.h" +#include "llvm/Assembly/AutoUpgrade.h"  #include "llvm/Support/GetElementPtrTypeIterator.h"  #include "llvm/ADT/STLExtras.h"  #include "llvm/Support/MathExtras.h" @@ -104,12 +105,16 @@ static struct PerModuleInfo {        ThrowException(UndefinedReferences);      } +    // Rename any overloaded intrinsic functions. +    for (Module::iterator FI = CurrentModule->begin(), FE = +         CurrentModule->end(); FI != FE; ++FI) +      UpgradeIntrinsicFunction(&(*FI)); +      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. diff --git a/llvm/lib/Bytecode/Reader/Reader.cpp b/llvm/lib/Bytecode/Reader/Reader.cpp index 5e6550215bf..8abf68c32ca 100644 --- a/llvm/lib/Bytecode/Reader/Reader.cpp +++ b/llvm/lib/Bytecode/Reader/Reader.cpp @@ -17,6 +17,7 @@  //===----------------------------------------------------------------------===//  #include "Reader.h" +#include "llvm/Assembly/AutoUpgrade.h"  #include "llvm/Bytecode/BytecodeHandler.h"  #include "llvm/BasicBlock.h"  #include "llvm/CallingConv.h" @@ -2002,6 +2003,7 @@ void BytecodeReader::ParseModuleGlobalInfo() {      // Insert the place holder.      Function *Func = new Function(FTy, GlobalValue::ExternalLinkage,                                    "", TheModule); +    UpgradeIntrinsicFunction(Func);      insertValue(Func, (FnSignature & (~0U >> 1)) >> 5, ModuleValues);      // Flags are not used yet. diff --git a/llvm/lib/CodeGen/IntrinsicLowering.cpp b/llvm/lib/CodeGen/IntrinsicLowering.cpp index 7c2008233ca..c47a107cc33 100644 --- a/llvm/lib/CodeGen/IntrinsicLowering.cpp +++ b/llvm/lib/CodeGen/IntrinsicLowering.cpp @@ -113,11 +113,13 @@ void DefaultIntrinsicLowering::AddPrototypes(Module &M) {                                Type::IntTy, (--(--I->arg_end()))->getType(),                                (Type *)0);          break; -      case Intrinsic::isunordered: +      case Intrinsic::isunordered_f32: +      case Intrinsic::isunordered_f64:          EnsureFunctionExists(M, "isunordered", I->arg_begin(), I->arg_end(),                               Type::BoolTy);          break; -      case Intrinsic::sqrt: +      case Intrinsic::sqrt_f32: +      case Intrinsic::sqrt_f64:          if(I->arg_begin()->getType() == Type::FloatTy)            EnsureFunctionExists(M, "sqrtf", I->arg_begin(), I->arg_end(),                                 Type::FloatTy); @@ -326,22 +328,30 @@ void DefaultIntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {                      AbortFCache);      break;    } -   +  case Intrinsic::ctpop_i8: +  case Intrinsic::ctpop_i16: +  case Intrinsic::ctpop_i32: +  case Intrinsic::ctpop_i64: +    CI->replaceAllUsesWith(LowerCTPOP(CI->getOperand(1), CI)); +    break; +    case Intrinsic::bswap_i16:    case Intrinsic::bswap_i32:    case Intrinsic::bswap_i64:      CI->replaceAllUsesWith(LowerBSWAP(CI->getOperand(1), CI));      break; -  case Intrinsic::ctpop: -    CI->replaceAllUsesWith(LowerCTPOP(CI->getOperand(1), CI)); -    break; - -  case Intrinsic::ctlz: +  case Intrinsic::ctlz_i8: +  case Intrinsic::ctlz_i16: +  case Intrinsic::ctlz_i32: +  case Intrinsic::ctlz_i64:      CI->replaceAllUsesWith(LowerCTLZ(CI->getOperand(1), CI));      break; -  case Intrinsic::cttz: { +  case Intrinsic::cttz_i8: +  case Intrinsic::cttz_i16: +  case Intrinsic::cttz_i32: +  case Intrinsic::cttz_i64: {      // cttz(x) -> ctpop(~X & (X-1))      Value *Src = CI->getOperand(1);      Value *NotSrc = BinaryOperator::createNot(Src, Src->getName()+".not", CI); @@ -419,7 +429,8 @@ void DefaultIntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {                      (*(CI->op_begin()+1))->getType(), MemsetFCache);      break;    } -  case Intrinsic::isunordered: { +  case Intrinsic::isunordered_f32: +  case Intrinsic::isunordered_f64: {      Value *L = CI->getOperand(1);      Value *R = CI->getOperand(2); @@ -430,7 +441,8 @@ void DefaultIntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {                               "isunordered", CI));      break;    } -  case Intrinsic::sqrt: { +  case Intrinsic::sqrt_f32: +  case Intrinsic::sqrt_f64: {      static Function *sqrtFCache = 0;      static Function *sqrtfFCache = 0;      if(CI->getType() == Type::FloatTy) diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 31b7fc7b6ef..cd4250b48b3 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -963,12 +963,14 @@ SelectionDAGLowering::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) {        setValue(&I, DAG.getNode(ISD::UNDEF, TLI.getValueType(I.getType())));      return 0; -  case Intrinsic::isunordered: +  case Intrinsic::isunordered_f32: +  case Intrinsic::isunordered_f64:      setValue(&I, DAG.getSetCC(MVT::i1,getValue(I.getOperand(1)),                                getValue(I.getOperand(2)), ISD::SETUO));      return 0; -  case Intrinsic::sqrt: +  case Intrinsic::sqrt_f32: +  case Intrinsic::sqrt_f64:      setValue(&I, DAG.getNode(ISD::FSQRT,                               getValue(I.getOperand(1)).getValueType(),                               getValue(I.getOperand(1)))); @@ -996,17 +998,26 @@ SelectionDAGLowering::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) {                               getValue(I.getOperand(1)).getValueType(),                               getValue(I.getOperand(1))));      return 0; -  case Intrinsic::cttz: +  case Intrinsic::cttz_i8: +  case Intrinsic::cttz_i16: +  case Intrinsic::cttz_i32: +  case Intrinsic::cttz_i64:      setValue(&I, DAG.getNode(ISD::CTTZ,                               getValue(I.getOperand(1)).getValueType(),                               getValue(I.getOperand(1))));      return 0; -  case Intrinsic::ctlz: +  case Intrinsic::ctlz_i8: +  case Intrinsic::ctlz_i16: +  case Intrinsic::ctlz_i32: +  case Intrinsic::ctlz_i64:      setValue(&I, DAG.getNode(ISD::CTLZ,                               getValue(I.getOperand(1)).getValueType(),                               getValue(I.getOperand(1))));      return 0; -  case Intrinsic::ctpop: +  case Intrinsic::ctpop_i8: +  case Intrinsic::ctpop_i16: +  case Intrinsic::ctpop_i32: +  case Intrinsic::ctpop_i64:      setValue(&I, DAG.getNode(ISD::CTPOP,                               getValue(I.getOperand(1)).getValueType(),                               getValue(I.getOperand(1)))); diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp index c4b69a40d4c..cfd67f2d831 100644 --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -297,14 +297,25 @@ bool llvm::isInstructionTriviallyDead(Instruction *I) {        case Intrinsic::returnaddress:        case Intrinsic::frameaddress:        case Intrinsic::stacksave: -      case Intrinsic::isunordered: +      case Intrinsic::isunordered_f32: +      case Intrinsic::isunordered_f64:        case Intrinsic::bswap_i16:        case Intrinsic::bswap_i32:        case Intrinsic::bswap_i64: -      case Intrinsic::ctpop: -      case Intrinsic::ctlz: -      case Intrinsic::cttz: -      case Intrinsic::sqrt: +      case Intrinsic::ctpop_i8: +      case Intrinsic::ctpop_i16: +      case Intrinsic::ctpop_i32: +      case Intrinsic::ctpop_i64: +      case Intrinsic::ctlz_i8: +      case Intrinsic::ctlz_i16: +      case Intrinsic::ctlz_i32: +      case Intrinsic::ctlz_i64: +      case Intrinsic::cttz_i8: +      case Intrinsic::cttz_i16: +      case Intrinsic::cttz_i32: +      case Intrinsic::cttz_i64: +      case Intrinsic::sqrt_f32: +      case Intrinsic::sqrt_f64:          return true;             // These intrinsics have no side effects.        }    return false; diff --git a/llvm/lib/VMCore/Function.cpp b/llvm/lib/VMCore/Function.cpp index 2f254f9182f..cb53b37db13 100644 --- a/llvm/lib/VMCore/Function.cpp +++ b/llvm/lib/VMCore/Function.cpp @@ -200,79 +200,93 @@ void Function::dropAllReferences() {  /// llvm/Intrinsics.h.  ///  unsigned Function::getIntrinsicID() const { -  if (getName().size() < 5 || getName()[4] != '.' || getName()[0] != 'l' || -      getName()[1] != 'l' || getName()[2] != 'v' || getName()[3] != 'm') +  const std::string& Name = this->getName(); +  if (Name.size() < 5 || Name[4] != '.' || Name[0] != 'l' || Name[1] != 'l' +      || Name[2] != 'v' || Name[3] != 'm')      return 0;  // All intrinsics start with 'llvm.' -  assert(getName().size() != 5 && "'llvm.' is an invalid intrinsic name!"); +  assert(Name.size() != 5 && "'llvm.' is an invalid intrinsic name!"); -  switch (getName()[5]) { +  switch (Name[5]) {    case 'b': -    if (getName() == "llvm.bswap.i16") return Intrinsic::bswap_i16; -    if (getName() == "llvm.bswap.i32") return Intrinsic::bswap_i32; -    if (getName() == "llvm.bswap.i64") return Intrinsic::bswap_i64; +    if (Name == "llvm.bswap.i16") return Intrinsic::bswap_i16; +    if (Name == "llvm.bswap.i32") return Intrinsic::bswap_i32; +    if (Name == "llvm.bswap.i64") return Intrinsic::bswap_i64;      break;    case 'c': -    if (getName() == "llvm.ctpop") return Intrinsic::ctpop; -    if (getName() == "llvm.cttz") return Intrinsic::cttz; -    if (getName() == "llvm.ctlz") return Intrinsic::ctlz; +    if (Name == "llvm.ctpop.i8") return Intrinsic::ctpop_i8; +    if (Name == "llvm.ctpop.i16") return Intrinsic::ctpop_i16; +    if (Name == "llvm.ctpop.i32") return Intrinsic::ctpop_i32; +    if (Name == "llvm.ctpop.i64") return Intrinsic::ctpop_i64; +    if (Name == "llvm.cttz.i8") return Intrinsic::cttz_i8; +    if (Name == "llvm.cttz.i16") return Intrinsic::cttz_i16; +    if (Name == "llvm.cttz.i32") return Intrinsic::cttz_i32; +    if (Name == "llvm.cttz.i64") return Intrinsic::cttz_i64; +    if (Name == "llvm.ctlz.i8") return Intrinsic::ctlz_i8; +    if (Name == "llvm.ctlz.i16") return Intrinsic::ctlz_i16; +    if (Name == "llvm.ctlz.i32") return Intrinsic::ctlz_i32; +    if (Name == "llvm.ctlz.i64") return Intrinsic::ctlz_i64;      break;    case 'd': -    if (getName() == "llvm.dbg.stoppoint")   return Intrinsic::dbg_stoppoint; -    if (getName() == "llvm.dbg.region.start")return Intrinsic::dbg_region_start; -    if (getName() == "llvm.dbg.region.end")  return Intrinsic::dbg_region_end; -    if (getName() == "llvm.dbg.func.start")  return Intrinsic::dbg_func_start; -    if (getName() == "llvm.dbg.declare")     return Intrinsic::dbg_declare; +    if (Name == "llvm.dbg.stoppoint")   return Intrinsic::dbg_stoppoint; +    if (Name == "llvm.dbg.region.start")return Intrinsic::dbg_region_start; +    if (Name == "llvm.dbg.region.end")  return Intrinsic::dbg_region_end; +    if (Name == "llvm.dbg.func.start")  return Intrinsic::dbg_func_start; +    if (Name == "llvm.dbg.declare")     return Intrinsic::dbg_declare;      break;    case 'f': -    if (getName() == "llvm.frameaddress")  return Intrinsic::frameaddress; +    if (Name == "llvm.frameaddress")  return Intrinsic::frameaddress;      break;    case 'g': -    if (getName() == "llvm.gcwrite") return Intrinsic::gcwrite; -    if (getName() == "llvm.gcread")  return Intrinsic::gcread; -    if (getName() == "llvm.gcroot")  return Intrinsic::gcroot; +    if (Name == "llvm.gcwrite") return Intrinsic::gcwrite; +    if (Name == "llvm.gcread")  return Intrinsic::gcread; +    if (Name == "llvm.gcroot")  return Intrinsic::gcroot;      break;    case 'i': -    if (getName() == "llvm.isunordered") return Intrinsic::isunordered; +    if (Name == "llvm.isunordered.f32")  +      return Intrinsic::isunordered_f32; +    if (Name == "llvm.isunordered.f64")  +      return Intrinsic::isunordered_f64;      break;    case 'l': -    if (getName() == "llvm.longjmp")  return Intrinsic::longjmp; +    if (Name == "llvm.longjmp")  return Intrinsic::longjmp;      break;    case 'm': -    if (getName() == "llvm.memcpy")  return Intrinsic::memcpy; -    if (getName() == "llvm.memmove")  return Intrinsic::memmove; -    if (getName() == "llvm.memset")  return Intrinsic::memset; +    if (Name == "llvm.memcpy")  return Intrinsic::memcpy; +    if (Name == "llvm.memmove")  return Intrinsic::memmove; +    if (Name == "llvm.memset")  return Intrinsic::memset;      break;    case 'p': -    if (getName() == "llvm.prefetch")  return Intrinsic::prefetch; -    if (getName() == "llvm.pcmarker")  return Intrinsic::pcmarker; +    if (Name == "llvm.prefetch")  return Intrinsic::prefetch; +    if (Name == "llvm.pcmarker")  return Intrinsic::pcmarker;      break;    case 'r': -    if (getName() == "llvm.returnaddress")    return Intrinsic::returnaddress; -    if (getName() == "llvm.readport")         return Intrinsic::readport; -    if (getName() == "llvm.readio")           return Intrinsic::readio; -    if (getName() == "llvm.readcyclecounter") return Intrinsic::readcyclecounter; +    if (Name == "llvm.returnaddress")    return Intrinsic::returnaddress; +    if (Name == "llvm.readport")         return Intrinsic::readport; +    if (Name == "llvm.readio")           return Intrinsic::readio; +    if (Name == "llvm.readcyclecounter") return Intrinsic::readcyclecounter;      break;    case 's': -    if (getName() == "llvm.setjmp")       return Intrinsic::setjmp; -    if (getName() == "llvm.sigsetjmp")    return Intrinsic::sigsetjmp; -    if (getName() == "llvm.siglongjmp")   return Intrinsic::siglongjmp; -    if (getName() == "llvm.stackrestore") return Intrinsic::stackrestore; -    if (getName() == "llvm.stacksave")    return Intrinsic::stacksave; -    if (getName() == "llvm.sqrt")         return Intrinsic::sqrt; +    if (Name == "llvm.setjmp")       return Intrinsic::setjmp; +    if (Name == "llvm.sigsetjmp")    return Intrinsic::sigsetjmp; +    if (Name == "llvm.siglongjmp")   return Intrinsic::siglongjmp; +    if (Name == "llvm.stackrestore") return Intrinsic::stackrestore; +    if (Name == "llvm.stacksave")    return Intrinsic::stacksave; +    if (Name == "llvm.sqrt.f32")     return Intrinsic::sqrt_f32; +    if (Name == "llvm.sqrt.f64")     return Intrinsic::sqrt_f64;      break;    case 'v': -    if (getName() == "llvm.va_copy")  return Intrinsic::vacopy; -    if (getName() == "llvm.va_end")   return Intrinsic::vaend; -    if (getName() == "llvm.va_start") return Intrinsic::vastart; +    if (Name == "llvm.va_copy")  return Intrinsic::vacopy; +    if (Name == "llvm.va_end")   return Intrinsic::vaend; +    if (Name == "llvm.va_start") return Intrinsic::vastart;      break;    case 'w': -    if (getName() == "llvm.writeport") return Intrinsic::writeport; -    if (getName() == "llvm.writeio")   return Intrinsic::writeio; +    if (Name == "llvm.writeport") return Intrinsic::writeport; +    if (Name == "llvm.writeio")   return Intrinsic::writeio;      break;    }    // The "llvm." namespace is reserved! -  assert(0 && "Unknown LLVM intrinsic function!"); +  assert(!"Unknown LLVM intrinsic function!");    return 0;  } diff --git a/llvm/lib/VMCore/Verifier.cpp b/llvm/lib/VMCore/Verifier.cpp index f67a49702c0..ed73341e25e 100644 --- a/llvm/lib/VMCore/Verifier.cpp +++ b/llvm/lib/VMCore/Verifier.cpp @@ -128,7 +128,8 @@ namespace {  // Anonymous namespace for class          if (I->isExternal()) visitFunction(*I);        } -      for (Module::global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I) +      for (Module::global_iterator I = M.global_begin(), E = M.global_end();  +           I != E; ++I)          visitGlobalVariable(*I);        // If the module is broken, abort at this time. @@ -729,15 +730,27 @@ void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI) {      break;    } -  case Intrinsic::isunordered: +  case Intrinsic::isunordered_f32:      Assert1(FT->getNumParams() == 2,              "Illegal # arguments for intrinsic function!", IF);      Assert1(FT->getReturnType() == Type::BoolTy,              "Return type is not bool!", IF);      Assert1(FT->getParamType(0) == FT->getParamType(1),              "Arguments must be of the same type!", IF); -    Assert1(FT->getParamType(0)->isFloatingPoint(), -            "Argument is not a floating point type!", IF); +    Assert1(FT->getParamType(0) == Type::FloatTy, +            "Arguments must be a 32-bit floating point type!", IF); +    NumArgs = 2; +    break; + +  case Intrinsic::isunordered_f64: +    Assert1(FT->getNumParams() == 2, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == Type::BoolTy, +            "Return type is not bool!", IF); +    Assert1(FT->getParamType(0) == FT->getParamType(1), +            "Arguments must be of the same type!", IF); +    Assert1(FT->getParamType(0) == Type::DoubleTy, +            "Argument is not a 64-bit floating point type!", IF);      NumArgs = 2;      break; @@ -779,23 +792,147 @@ void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI) {      NumArgs = 1;      break;     -  case Intrinsic::ctpop: -  case Intrinsic::ctlz: -  case Intrinsic::cttz: +  case Intrinsic::ctpop_i8:      Assert1(FT->getNumParams() == 1,              "Illegal # arguments for intrinsic function!", IF);      Assert1(FT->getReturnType() == FT->getParamType(0),              "Return type does not match source type", IF); -    Assert1(FT->getParamType(0)->isIntegral(), -            "Argument must be of an int type!", IF); +    Assert1(FT->getParamType(0) == Type::UByteTy  +            || FT->getParamType(0) == Type::SByteTy, +            "Argument must be a byte type!", IF); +    NumArgs = 1; +    break; + +  case Intrinsic::ctpop_i16: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type does not match source type", IF); +    Assert1(FT->getParamType(0) == Type::UShortTy  +            || FT->getParamType(0) == Type::ShortTy, +            "Argument must be a short type!", IF); +    NumArgs = 1; +    break; + +  case Intrinsic::ctpop_i32: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type does not match source type", IF); +    Assert1(FT->getParamType(0) == Type::UIntTy  +            || FT->getParamType(0) == Type::IntTy, +            "Argument must be an int type!", IF); +    NumArgs = 1; +    break; + +  case Intrinsic::ctpop_i64: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type does not match source type", IF); +    Assert1(FT->getParamType(0) == Type::ULongTy  +            || FT->getParamType(0) == Type::LongTy, +            "Argument must be a long type!", IF); +    NumArgs = 1; +    break; + +  case Intrinsic::ctlz_i8: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type does not match source type", IF); +    Assert1(FT->getParamType(0) == Type::UByteTy  +            || FT->getParamType(0) == Type::SByteTy, +            "Argument must be a byte type!", IF); +    NumArgs = 1; +    break; + +  case Intrinsic::ctlz_i16: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type does not match source type", IF); +    Assert1(FT->getParamType(0) == Type::UShortTy  +            || FT->getParamType(0) == Type::ShortTy, +            "Argument must be a short type!", IF); +    NumArgs = 1; +    break; +  case Intrinsic::ctlz_i32: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type does not match source type", IF); +    Assert1(FT->getParamType(0) == Type::UIntTy  +            || FT->getParamType(0) == Type::IntTy, +            "Argument must be an int type!", IF); +    NumArgs = 1; +    break; +  case Intrinsic::ctlz_i64: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type does not match source type", IF); +    Assert1(FT->getParamType(0) == Type::ULongTy  +            || FT->getParamType(0) == Type::LongTy, +            "Argument must be a long type!", IF); +    NumArgs = 1; +    break; +  case Intrinsic::cttz_i8: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type does not match source type", IF); +    Assert1(FT->getParamType(0) == Type::UByteTy  +            || FT->getParamType(0) == Type::SByteTy, +            "Argument must be a byte type!", IF); +    NumArgs = 1; +    break; +  case Intrinsic::cttz_i16: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type does not match source type", IF); +    Assert1(FT->getParamType(0) == Type::UShortTy  +            || FT->getParamType(0) == Type::ShortTy, +            "Argument must be a short type!", IF); +    NumArgs = 1; +    break; +  case Intrinsic::cttz_i32: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type does not match source type", IF); +    Assert1(FT->getParamType(0) == Type::UIntTy  +            || FT->getParamType(0) == Type::IntTy, +            "Argument must be an int type!", IF); +    NumArgs = 1; +    break; +  case Intrinsic::cttz_i64: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type does not match source type", IF); +    Assert1(FT->getParamType(0) == Type::ULongTy  +            || FT->getParamType(0) == Type::LongTy, +            "Argument must be a long type!", IF); +    NumArgs = 1; +    break; + +  case Intrinsic::sqrt_f32: +    Assert1(FT->getNumParams() == 1, +            "Illegal # arguments for intrinsic function!", IF); +    Assert1(FT->getParamType(0) == Type::FloatTy, +            "Argument is not a 32-bit floating point type!", IF); +    Assert1(FT->getReturnType() == FT->getParamType(0), +            "Return type is not the same as argument type!", IF);      NumArgs = 1;      break; -  case Intrinsic::sqrt: +  case Intrinsic::sqrt_f64:      Assert1(FT->getNumParams() == 1,              "Illegal # arguments for intrinsic function!", IF); -    Assert1(FT->getParamType(0)->isFloatingPoint(), -            "Argument is not a floating point type!", IF); +    Assert1(FT->getParamType(0) == Type::DoubleTy, +            "Argument is not a 64-bit floating point type!", IF);      Assert1(FT->getReturnType() == FT->getParamType(0),              "Return type is not the same as argument type!", IF);      NumArgs = 1;  | 

