blob: 96cae3b3e6084938b40ed827b45aa4fb36098027 [file] [log] [blame]
Reid Spencere7c3c602006-11-30 06:36:44 +00001/* A Bison parser, made by GNU Bison 2.1. */
2
3/* Skeleton parser for Yacc-like parsing with Bison,
4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA. */
20
21/* As a special exception, when this file is copied by Bison into a
22 Bison output file, you may use that output file without restriction.
23 This special exception was added by the Free Software Foundation
24 in version 1.24 of Bison. */
25
26/* Written by Richard Stallman by simplifying the original so called
27 ``semantic'' parser. */
28
29/* All symbols defined below should begin with yy or YY, to avoid
30 infringing on user name space. This should be done even for local
31 variables, as they might otherwise be expanded by user macros.
32 There are some unavoidable exceptions within include files to
33 define necessary library symbols; they are noted "INFRINGES ON
34 USER NAME SPACE" below. */
35
36/* Identify Bison output. */
37#define YYBISON 1
38
39/* Bison version. */
40#define YYBISON_VERSION "2.1"
41
42/* Skeleton name. */
43#define YYSKELETON_NAME "yacc.c"
44
45/* Pure parsers. */
46#define YYPURE 0
47
48/* Using locations. */
49#define YYLSP_NEEDED 0
50
51/* Substitute the variable and function names. */
52#define yyparse Upgradeparse
53#define yylex Upgradelex
54#define yyerror Upgradeerror
55#define yylval Upgradelval
56#define yychar Upgradechar
57#define yydebug Upgradedebug
58#define yynerrs Upgradenerrs
59
60
61/* Tokens. */
62#ifndef YYTOKENTYPE
63# define YYTOKENTYPE
64 /* Put the tokens into the symbol table, so that GDB and other debuggers
65 know about them. */
66 enum yytokentype {
Reid Spencerf2d55322006-12-01 21:52:30 +000067 VOID = 258,
68 BOOL = 259,
69 SBYTE = 260,
70 UBYTE = 261,
71 SHORT = 262,
72 USHORT = 263,
73 INT = 264,
74 UINT = 265,
75 LONG = 266,
76 ULONG = 267,
77 FLOAT = 268,
78 DOUBLE = 269,
79 LABEL = 270,
80 OPAQUE = 271,
81 ESINT64VAL = 272,
82 EUINT64VAL = 273,
83 SINTVAL = 274,
84 UINTVAL = 275,
85 FPVAL = 276,
86 NULL_TOK = 277,
87 UNDEF = 278,
88 ZEROINITIALIZER = 279,
89 TRUETOK = 280,
90 FALSETOK = 281,
Reid Spencere77e35e2006-12-01 20:26:20 +000091 TYPE = 282,
92 VAR_ID = 283,
93 LABELSTR = 284,
94 STRINGCONSTANT = 285,
95 IMPLEMENTATION = 286,
96 BEGINTOK = 287,
97 ENDTOK = 288,
98 DECLARE = 289,
99 GLOBAL = 290,
100 CONSTANT = 291,
101 SECTION = 292,
102 VOLATILE = 293,
103 TO = 294,
104 DOTDOTDOT = 295,
105 CONST = 296,
106 INTERNAL = 297,
107 LINKONCE = 298,
108 WEAK = 299,
Reid Spencere7c3c602006-11-30 06:36:44 +0000109 DLLIMPORT = 300,
110 DLLEXPORT = 301,
111 EXTERN_WEAK = 302,
Reid Spencere77e35e2006-12-01 20:26:20 +0000112 APPENDING = 303,
Reid Spencere7c3c602006-11-30 06:36:44 +0000113 NOT = 304,
114 EXTERNAL = 305,
115 TARGET = 306,
116 TRIPLE = 307,
117 ENDIAN = 308,
118 POINTERSIZE = 309,
119 LITTLE = 310,
120 BIG = 311,
121 ALIGN = 312,
Reid Spencer78720742006-12-02 20:21:22 +0000122 UNINITIALIZED = 313,
123 DEPLIBS = 314,
124 CALL = 315,
125 TAIL = 316,
126 ASM_TOK = 317,
127 MODULE = 318,
128 SIDEEFFECT = 319,
129 CC_TOK = 320,
130 CCC_TOK = 321,
131 CSRETCC_TOK = 322,
132 FASTCC_TOK = 323,
133 COLDCC_TOK = 324,
134 X86_STDCALLCC_TOK = 325,
135 X86_FASTCALLCC_TOK = 326,
136 DATALAYOUT = 327,
137 RET = 328,
138 BR = 329,
139 SWITCH = 330,
140 INVOKE = 331,
141 EXCEPT = 332,
142 UNWIND = 333,
143 UNREACHABLE = 334,
144 ADD = 335,
145 SUB = 336,
146 MUL = 337,
147 DIV = 338,
148 UDIV = 339,
149 SDIV = 340,
150 FDIV = 341,
151 REM = 342,
152 UREM = 343,
153 SREM = 344,
154 FREM = 345,
155 AND = 346,
156 OR = 347,
157 XOR = 348,
158 SETLE = 349,
159 SETGE = 350,
160 SETLT = 351,
161 SETGT = 352,
162 SETEQ = 353,
163 SETNE = 354,
Reid Spencer229e9362006-12-02 22:14:11 +0000164 ICMP = 355,
165 FCMP = 356,
166 EQ = 357,
167 NE = 358,
168 SLT = 359,
169 SGT = 360,
170 SLE = 361,
171 SGE = 362,
172 OEQ = 363,
173 ONE = 364,
174 OLT = 365,
175 OGT = 366,
176 OLE = 367,
177 OGE = 368,
178 ORD = 369,
179 UNO = 370,
180 UEQ = 371,
181 UNE = 372,
182 ULT = 373,
183 UGT = 374,
184 ULE = 375,
185 UGE = 376,
186 MALLOC = 377,
187 ALLOCA = 378,
188 FREE = 379,
189 LOAD = 380,
190 STORE = 381,
191 GETELEMENTPTR = 382,
192 PHI_TOK = 383,
193 SELECT = 384,
194 SHL = 385,
195 SHR = 386,
196 ASHR = 387,
197 LSHR = 388,
198 VAARG = 389,
199 EXTRACTELEMENT = 390,
200 INSERTELEMENT = 391,
201 SHUFFLEVECTOR = 392,
202 CAST = 393,
203 TRUNC = 394,
204 ZEXT = 395,
205 SEXT = 396,
206 FPTRUNC = 397,
207 FPEXT = 398,
208 FPTOUI = 399,
209 FPTOSI = 400,
210 UITOFP = 401,
211 SITOFP = 402,
212 PTRTOINT = 403,
213 INTTOPTR = 404,
214 BITCAST = 405
Reid Spencere7c3c602006-11-30 06:36:44 +0000215 };
216#endif
217/* Tokens. */
Reid Spencerf2d55322006-12-01 21:52:30 +0000218#define VOID 258
219#define BOOL 259
220#define SBYTE 260
221#define UBYTE 261
222#define SHORT 262
223#define USHORT 263
224#define INT 264
225#define UINT 265
226#define LONG 266
227#define ULONG 267
228#define FLOAT 268
229#define DOUBLE 269
230#define LABEL 270
231#define OPAQUE 271
232#define ESINT64VAL 272
233#define EUINT64VAL 273
234#define SINTVAL 274
235#define UINTVAL 275
236#define FPVAL 276
237#define NULL_TOK 277
238#define UNDEF 278
239#define ZEROINITIALIZER 279
240#define TRUETOK 280
241#define FALSETOK 281
Reid Spencere77e35e2006-12-01 20:26:20 +0000242#define TYPE 282
243#define VAR_ID 283
244#define LABELSTR 284
245#define STRINGCONSTANT 285
246#define IMPLEMENTATION 286
247#define BEGINTOK 287
248#define ENDTOK 288
249#define DECLARE 289
250#define GLOBAL 290
251#define CONSTANT 291
252#define SECTION 292
253#define VOLATILE 293
254#define TO 294
255#define DOTDOTDOT 295
256#define CONST 296
257#define INTERNAL 297
258#define LINKONCE 298
259#define WEAK 299
Reid Spencere7c3c602006-11-30 06:36:44 +0000260#define DLLIMPORT 300
261#define DLLEXPORT 301
262#define EXTERN_WEAK 302
Reid Spencere77e35e2006-12-01 20:26:20 +0000263#define APPENDING 303
Reid Spencere7c3c602006-11-30 06:36:44 +0000264#define NOT 304
265#define EXTERNAL 305
266#define TARGET 306
267#define TRIPLE 307
268#define ENDIAN 308
269#define POINTERSIZE 309
270#define LITTLE 310
271#define BIG 311
272#define ALIGN 312
Reid Spencer78720742006-12-02 20:21:22 +0000273#define UNINITIALIZED 313
274#define DEPLIBS 314
275#define CALL 315
276#define TAIL 316
277#define ASM_TOK 317
278#define MODULE 318
279#define SIDEEFFECT 319
280#define CC_TOK 320
281#define CCC_TOK 321
282#define CSRETCC_TOK 322
283#define FASTCC_TOK 323
284#define COLDCC_TOK 324
285#define X86_STDCALLCC_TOK 325
286#define X86_FASTCALLCC_TOK 326
287#define DATALAYOUT 327
288#define RET 328
289#define BR 329
290#define SWITCH 330
291#define INVOKE 331
292#define EXCEPT 332
293#define UNWIND 333
294#define UNREACHABLE 334
295#define ADD 335
296#define SUB 336
297#define MUL 337
298#define DIV 338
299#define UDIV 339
300#define SDIV 340
301#define FDIV 341
302#define REM 342
303#define UREM 343
304#define SREM 344
305#define FREM 345
306#define AND 346
307#define OR 347
308#define XOR 348
309#define SETLE 349
310#define SETGE 350
311#define SETLT 351
312#define SETGT 352
313#define SETEQ 353
314#define SETNE 354
Reid Spencer229e9362006-12-02 22:14:11 +0000315#define ICMP 355
316#define FCMP 356
317#define EQ 357
318#define NE 358
319#define SLT 359
320#define SGT 360
321#define SLE 361
322#define SGE 362
323#define OEQ 363
324#define ONE 364
325#define OLT 365
326#define OGT 366
327#define OLE 367
328#define OGE 368
329#define ORD 369
330#define UNO 370
331#define UEQ 371
332#define UNE 372
333#define ULT 373
334#define UGT 374
335#define ULE 375
336#define UGE 376
337#define MALLOC 377
338#define ALLOCA 378
339#define FREE 379
340#define LOAD 380
341#define STORE 381
342#define GETELEMENTPTR 382
343#define PHI_TOK 383
344#define SELECT 384
345#define SHL 385
346#define SHR 386
347#define ASHR 387
348#define LSHR 388
349#define VAARG 389
350#define EXTRACTELEMENT 390
351#define INSERTELEMENT 391
352#define SHUFFLEVECTOR 392
353#define CAST 393
354#define TRUNC 394
355#define ZEXT 395
356#define SEXT 396
357#define FPTRUNC 397
358#define FPEXT 398
359#define FPTOUI 399
360#define FPTOSI 400
361#define UITOFP 401
362#define SITOFP 402
363#define PTRTOINT 403
364#define INTTOPTR 404
365#define BITCAST 405
Reid Spencere7c3c602006-11-30 06:36:44 +0000366
367
368
369
370/* Copy the first part of user declarations. */
Reid Spencerf0cf1322006-12-07 04:23:03 +0000371#line 14 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +0000372
Reid Spencere7c3c602006-11-30 06:36:44 +0000373#include "ParserInternals.h"
374#include <llvm/ADT/StringExtras.h>
Reid Spencere7c3c602006-11-30 06:36:44 +0000375#include <algorithm>
Reid Spencera50d5962006-12-02 04:11:07 +0000376#include <map>
Reid Spencere7c3c602006-11-30 06:36:44 +0000377#include <utility>
378#include <iostream>
Reid Spencerbec0b592006-12-03 03:16:48 +0000379#include <cassert>
Reid Spencere7c3c602006-11-30 06:36:44 +0000380
Reid Spencere77e35e2006-12-01 20:26:20 +0000381#define YYERROR_VERBOSE 1
Reid Spencer96839be2006-11-30 16:50:26 +0000382#define YYINCLUDED_STDLIB_H
Reid Spencere77e35e2006-12-01 20:26:20 +0000383#define YYDEBUG 1
Reid Spencer996fb282006-12-06 06:30:15 +0000384#define UPGRADE_SETCOND_OPS 0
Reid Spencerf0cf1322006-12-07 04:23:03 +0000385#define GENERATE_FCMP_INSTS 0
Reid Spencere7c3c602006-11-30 06:36:44 +0000386
387int yylex(); // declaration" of xxx warnings.
388int yyparse();
Reid Spencere77e35e2006-12-01 20:26:20 +0000389extern int yydebug;
Reid Spencere7c3c602006-11-30 06:36:44 +0000390
391static std::string CurFilename;
Reid Spencere7c3c602006-11-30 06:36:44 +0000392static std::ostream *O = 0;
Reid Spencer96839be2006-11-30 16:50:26 +0000393std::istream* LexInput = 0;
Reid Spencere77e35e2006-12-01 20:26:20 +0000394unsigned SizeOfPointer = 32;
Reid Spencerf459d392006-12-02 16:19:52 +0000395static uint64_t unique = 1;
Reid Spencer96839be2006-11-30 16:50:26 +0000396
Reid Spencera50d5962006-12-02 04:11:07 +0000397typedef std::vector<TypeInfo> TypeVector;
398static TypeVector EnumeratedTypes;
399typedef std::map<std::string,TypeInfo> TypeMap;
400static TypeMap NamedTypes;
Reid Spencerf12ee422006-12-05 19:21:25 +0000401static TypeMap Globals;
Reid Spencera50d5962006-12-02 04:11:07 +0000402
Reid Spencerf8483652006-12-02 15:16:01 +0000403void destroy(ValueList* VL) {
404 while (!VL->empty()) {
405 ValueInfo& VI = VL->back();
406 VI.destroy();
407 VL->pop_back();
408 }
409 delete VL;
410}
411
Reid Spencer96839be2006-11-30 16:50:26 +0000412void UpgradeAssembly(const std::string &infile, std::istream& in,
Reid Spencere77e35e2006-12-01 20:26:20 +0000413 std::ostream &out, bool debug)
Reid Spencere7c3c602006-11-30 06:36:44 +0000414{
415 Upgradelineno = 1;
416 CurFilename = infile;
Reid Spencer96839be2006-11-30 16:50:26 +0000417 LexInput = &in;
Reid Spencere77e35e2006-12-01 20:26:20 +0000418 yydebug = debug;
Reid Spencere7c3c602006-11-30 06:36:44 +0000419 O = &out;
420
421 if (yyparse()) {
422 std::cerr << "Parse failed.\n";
423 exit(1);
424 }
425}
426
Reid Spencera50d5962006-12-02 04:11:07 +0000427static void ResolveType(TypeInfo& Ty) {
428 if (Ty.oldTy == UnresolvedTy) {
429 TypeMap::iterator I = NamedTypes.find(*Ty.newTy);
Reid Spencer78720742006-12-02 20:21:22 +0000430 if (I != NamedTypes.end()) {
Reid Spencera50d5962006-12-02 04:11:07 +0000431 Ty.oldTy = I->second.oldTy;
Reid Spencer78720742006-12-02 20:21:22 +0000432 Ty.elemTy = I->second.elemTy;
433 } else {
Reid Spencera50d5962006-12-02 04:11:07 +0000434 std::string msg("Can't resolve type: ");
435 msg += *Ty.newTy;
436 yyerror(msg.c_str());
Reid Spencer280d8012006-12-01 23:40:53 +0000437 }
Reid Spencera50d5962006-12-02 04:11:07 +0000438 } else if (Ty.oldTy == NumericTy) {
439 unsigned ref = atoi(&((Ty.newTy->c_str())[1])); // Skip the '\\'
440 if (ref < EnumeratedTypes.size()) {
441 Ty.oldTy = EnumeratedTypes[ref].oldTy;
Reid Spencer78720742006-12-02 20:21:22 +0000442 Ty.elemTy = EnumeratedTypes[ref].elemTy;
Reid Spencera50d5962006-12-02 04:11:07 +0000443 } else {
444 std::string msg("Can't resolve type: ");
445 msg += *Ty.newTy;
446 yyerror(msg.c_str());
447 }
Reid Spencer280d8012006-12-01 23:40:53 +0000448 }
Reid Spencera50d5962006-12-02 04:11:07 +0000449 // otherwise its already resolved.
Reid Spencer280d8012006-12-01 23:40:53 +0000450}
451
Reid Spencera50d5962006-12-02 04:11:07 +0000452static const char* getCastOpcode(
453 std::string& Source, const TypeInfo& SrcTy, const TypeInfo& DstTy)
454{
Reid Spencere77e35e2006-12-01 20:26:20 +0000455 unsigned SrcBits = SrcTy.getBitWidth();
456 unsigned DstBits = DstTy.getBitWidth();
457 const char* opcode = "bitcast";
458 // Run through the possibilities ...
459 if (DstTy.isIntegral()) { // Casting to integral
460 if (SrcTy.isIntegral()) { // Casting from integral
461 if (DstBits < SrcBits)
462 opcode = "trunc";
463 else if (DstBits > SrcBits) { // its an extension
464 if (SrcTy.isSigned())
465 opcode ="sext"; // signed -> SEXT
466 else
467 opcode = "zext"; // unsigned -> ZEXT
468 } else {
469 opcode = "bitcast"; // Same size, No-op cast
470 }
471 } else if (SrcTy.isFloatingPoint()) { // Casting from floating pt
472 if (DstTy.isSigned())
473 opcode = "fptosi"; // FP -> sint
474 else
475 opcode = "fptoui"; // FP -> uint
476 } else if (SrcTy.isPacked()) {
477 assert(DstBits == SrcTy.getBitWidth() &&
478 "Casting packed to integer of different width");
479 opcode = "bitcast"; // same size, no-op cast
480 } else {
481 assert(SrcTy.isPointer() &&
482 "Casting from a value that is not first-class type");
483 opcode = "ptrtoint"; // ptr -> int
484 }
485 } else if (DstTy.isFloatingPoint()) { // Casting to floating pt
486 if (SrcTy.isIntegral()) { // Casting from integral
487 if (SrcTy.isSigned())
488 opcode = "sitofp"; // sint -> FP
489 else
490 opcode = "uitofp"; // uint -> FP
491 } else if (SrcTy.isFloatingPoint()) { // Casting from floating pt
492 if (DstBits < SrcBits) {
493 opcode = "fptrunc"; // FP -> smaller FP
494 } else if (DstBits > SrcBits) {
495 opcode = "fpext"; // FP -> larger FP
496 } else {
497 opcode ="bitcast"; // same size, no-op cast
498 }
499 } else if (SrcTy.isPacked()) {
500 assert(DstBits == SrcTy.getBitWidth() &&
501 "Casting packed to floating point of different width");
502 opcode = "bitcast"; // same size, no-op cast
503 } else {
504 assert(0 && "Casting pointer or non-first class to float");
505 }
506 } else if (DstTy.isPacked()) {
507 if (SrcTy.isPacked()) {
508 assert(DstTy.getBitWidth() == SrcTy.getBitWidth() &&
509 "Casting packed to packed of different widths");
510 opcode = "bitcast"; // packed -> packed
511 } else if (DstTy.getBitWidth() == SrcBits) {
512 opcode = "bitcast"; // float/int -> packed
513 } else {
514 assert(!"Illegal cast to packed (wrong type or size)");
515 }
516 } else if (DstTy.isPointer()) {
517 if (SrcTy.isPointer()) {
518 opcode = "bitcast"; // ptr -> ptr
519 } else if (SrcTy.isIntegral()) {
520 opcode = "inttoptr"; // int -> ptr
521 } else {
Reid Spencera50d5962006-12-02 04:11:07 +0000522 assert(!"Casting invalid type to pointer");
Reid Spencere77e35e2006-12-01 20:26:20 +0000523 }
524 } else {
525 assert(!"Casting to type that is not first-class");
526 }
527 return opcode;
528}
529
Reid Spencera50d5962006-12-02 04:11:07 +0000530static std::string getCastUpgrade(
531 const std::string& Src, TypeInfo& SrcTy, TypeInfo& DstTy, bool isConst)
532{
533 std::string Result;
534 std::string Source = Src;
535 if (SrcTy.isFloatingPoint() && DstTy.isPointer()) {
536 // fp -> ptr cast is no longer supported but we must upgrade this
537 // by doing a double cast: fp -> int -> ptr
538 if (isConst)
539 Source = "ulong fptoui(" + Source + " to ulong)";
540 else {
Reid Spencerf459d392006-12-02 16:19:52 +0000541 *O << " %cast_upgrade" << unique << " = fptoui " << Source
542 << " to ulong\n";
543 Source = "ulong %cast_upgrade" + llvm::utostr(unique);
Reid Spencera50d5962006-12-02 04:11:07 +0000544 }
545 // Update the SrcTy for the getCastOpcode call below
546 SrcTy.destroy();
547 SrcTy.newTy = new std::string("ulong");
548 SrcTy.oldTy = ULongTy;
Reid Spencer5fe27e72006-12-09 19:41:25 +0000549 } else if (DstTy.oldTy == BoolTy && SrcTy.oldTy != BoolTy) {
Reid Spencera50d5962006-12-02 04:11:07 +0000550 // cast ptr %x to bool was previously defined as setne ptr %x, null
551 // The ptrtoint semantic is to truncate, not compare so we must retain
552 // the original intent by replace the cast with a setne
553 const char* comparator = SrcTy.isPointer() ? ", null" :
554 (SrcTy.isFloatingPoint() ? ", 0.0" : ", 0");
Reid Spencer187ccf82006-12-09 16:57:22 +0000555#if UPGRADE_SETCOND_OPS
556 const char* compareOp = SrcTy.isFloatingPoint() ? "setne " : "icmp ne ";
557#else
558 const char* compareOp = "setne";
559#endif
560 if (isConst) {
561 Result = "(" + Source + comparator + ")";
562 Result = compareOp + Result;
563 } else
564 Result = compareOp + Source + comparator;
Reid Spencera50d5962006-12-02 04:11:07 +0000565 return Result; // skip cast processing below
566 }
567 ResolveType(SrcTy);
568 ResolveType(DstTy);
569 std::string Opcode(getCastOpcode(Source, SrcTy, DstTy));
570 if (isConst)
571 Result += Opcode + "( " + Source + " to " + *DstTy.newTy + ")";
572 else
573 Result += Opcode + " " + Source + " to " + *DstTy.newTy;
574 return Result;
575}
576
Reid Spencer78720742006-12-02 20:21:22 +0000577const char* getDivRemOpcode(const std::string& opcode, const TypeInfo& TI) {
578 const char* op = opcode.c_str();
579 TypeInfo Ty = TI;
580 ResolveType(Ty);
581 if (Ty.isPacked())
582 Ty.oldTy = Ty.getElementType();
583 if (opcode == "div")
584 if (Ty.isFloatingPoint())
585 op = "fdiv";
586 else if (Ty.isUnsigned())
587 op = "udiv";
588 else if (Ty.isSigned())
589 op = "sdiv";
590 else
591 yyerror("Invalid type for div instruction");
592 else if (opcode == "rem")
593 if (Ty.isFloatingPoint())
594 op = "frem";
595 else if (Ty.isUnsigned())
596 op = "urem";
597 else if (Ty.isSigned())
598 op = "srem";
599 else
600 yyerror("Invalid type for rem instruction");
601 return op;
602}
Reid Spencere7c3c602006-11-30 06:36:44 +0000603
Reid Spencer229e9362006-12-02 22:14:11 +0000604std::string
605getCompareOp(const std::string& setcc, const TypeInfo& TI) {
606 assert(setcc.length() == 5);
607 char cc1 = setcc[3];
608 char cc2 = setcc[4];
609 assert(cc1 == 'e' || cc1 == 'n' || cc1 == 'l' || cc1 == 'g');
610 assert(cc2 == 'q' || cc2 == 'e' || cc2 == 'e' || cc2 == 't');
611 std::string result("xcmp xxx");
612 result[6] = cc1;
613 result[7] = cc2;
614 if (TI.isFloatingPoint()) {
Reid Spencerf0cf1322006-12-07 04:23:03 +0000615#if GENERATE_FCMP_INSTS
Reid Spencer229e9362006-12-02 22:14:11 +0000616 result[0] = 'f';
617 result[5] = 'o'; // FIXME: Always map to ordered comparison ?
Reid Spencerf0cf1322006-12-07 04:23:03 +0000618 if (cc1 == 'n')
619 result[5] = 'u'; // NE maps to unordered
620 else
621 result[5] = 'o'; // everything else maps to ordered
622#else
623 result = setcc;
624#endif
Reid Spencer229e9362006-12-02 22:14:11 +0000625 } else if (TI.isIntegral() || TI.isPointer()) {
626 result[0] = 'i';
627 if ((cc1 == 'e' && cc2 == 'q') || (cc1 == 'n' && cc2 == 'e'))
628 result.erase(5,1);
629 else if (TI.isSigned())
630 result[5] = 's';
Reid Spencer3e5ab8c2006-12-06 06:25:46 +0000631 else if (TI.isUnsigned() || TI.isPointer() || TI.isBool())
Reid Spencer229e9362006-12-02 22:14:11 +0000632 result[5] = 'u';
633 else
634 yyerror("Invalid integral type for setcc");
635 }
636 return result;
637}
638
639
Reid Spencere7c3c602006-11-30 06:36:44 +0000640
641/* Enabling traces. */
642#ifndef YYDEBUG
643# define YYDEBUG 0
644#endif
645
646/* Enabling verbose error messages. */
647#ifdef YYERROR_VERBOSE
648# undef YYERROR_VERBOSE
649# define YYERROR_VERBOSE 1
650#else
651# define YYERROR_VERBOSE 0
652#endif
653
654/* Enabling the token table. */
655#ifndef YYTOKEN_TABLE
656# define YYTOKEN_TABLE 0
657#endif
658
659#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
Reid Spencer187ccf82006-12-09 16:57:22 +0000660#line 285 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +0000661typedef union YYSTYPE {
662 std::string* String;
663 TypeInfo Type;
664 ValueInfo Value;
665 ConstInfo Const;
Reid Spencerf8483652006-12-02 15:16:01 +0000666 ValueList* ValList;
Reid Spencere77e35e2006-12-01 20:26:20 +0000667} YYSTYPE;
668/* Line 196 of yacc.c. */
Reid Spencer187ccf82006-12-09 16:57:22 +0000669#line 670 "UpgradeParser.tab.c"
Reid Spencere7c3c602006-11-30 06:36:44 +0000670# define yystype YYSTYPE /* obsolescent; will be withdrawn */
671# define YYSTYPE_IS_DECLARED 1
672# define YYSTYPE_IS_TRIVIAL 1
673#endif
674
675
676
677/* Copy the second part of user declarations. */
678
679
680/* Line 219 of yacc.c. */
Reid Spencer187ccf82006-12-09 16:57:22 +0000681#line 682 "UpgradeParser.tab.c"
Reid Spencere7c3c602006-11-30 06:36:44 +0000682
683#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
684# define YYSIZE_T __SIZE_TYPE__
685#endif
686#if ! defined (YYSIZE_T) && defined (size_t)
687# define YYSIZE_T size_t
688#endif
689#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
690# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
691# define YYSIZE_T size_t
692#endif
693#if ! defined (YYSIZE_T)
694# define YYSIZE_T unsigned int
695#endif
696
697#ifndef YY_
698# if YYENABLE_NLS
699# if ENABLE_NLS
700# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
701# define YY_(msgid) dgettext ("bison-runtime", msgid)
702# endif
703# endif
704# ifndef YY_
705# define YY_(msgid) msgid
706# endif
707#endif
708
709#if ! defined (yyoverflow) || YYERROR_VERBOSE
710
711/* The parser invokes alloca or malloc; define the necessary symbols. */
712
713# ifdef YYSTACK_USE_ALLOCA
714# if YYSTACK_USE_ALLOCA
715# ifdef __GNUC__
716# define YYSTACK_ALLOC __builtin_alloca
717# else
718# define YYSTACK_ALLOC alloca
719# if defined (__STDC__) || defined (__cplusplus)
720# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
721# define YYINCLUDED_STDLIB_H
722# endif
723# endif
724# endif
725# endif
726
727# ifdef YYSTACK_ALLOC
728 /* Pacify GCC's `empty if-body' warning. */
729# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
730# ifndef YYSTACK_ALLOC_MAXIMUM
731 /* The OS might guarantee only one guard page at the bottom of the stack,
732 and a page size can be as small as 4096 bytes. So we cannot safely
733 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
734 to allow for a few compiler-allocated temporary stack slots. */
735# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
736# endif
737# else
738# define YYSTACK_ALLOC YYMALLOC
739# define YYSTACK_FREE YYFREE
740# ifndef YYSTACK_ALLOC_MAXIMUM
741# define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
742# endif
743# ifdef __cplusplus
744extern "C" {
745# endif
746# ifndef YYMALLOC
747# define YYMALLOC malloc
748# if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
749 && (defined (__STDC__) || defined (__cplusplus)))
750void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
751# endif
752# endif
753# ifndef YYFREE
754# define YYFREE free
755# if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
756 && (defined (__STDC__) || defined (__cplusplus)))
757void free (void *); /* INFRINGES ON USER NAME SPACE */
758# endif
759# endif
760# ifdef __cplusplus
761}
762# endif
763# endif
764#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
765
766
767#if (! defined (yyoverflow) \
768 && (! defined (__cplusplus) \
769 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
770
771/* A type that is properly aligned for any stack member. */
772union yyalloc
773{
774 short int yyss;
775 YYSTYPE yyvs;
776 };
777
778/* The size of the maximum gap between one aligned stack and the next. */
779# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
780
781/* The size of an array large to enough to hold all stacks, each with
782 N elements. */
783# define YYSTACK_BYTES(N) \
784 ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
785 + YYSTACK_GAP_MAXIMUM)
786
787/* Copy COUNT objects from FROM to TO. The source and destination do
788 not overlap. */
789# ifndef YYCOPY
790# if defined (__GNUC__) && 1 < __GNUC__
791# define YYCOPY(To, From, Count) \
792 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
793# else
794# define YYCOPY(To, From, Count) \
795 do \
796 { \
797 YYSIZE_T yyi; \
798 for (yyi = 0; yyi < (Count); yyi++) \
799 (To)[yyi] = (From)[yyi]; \
800 } \
801 while (0)
802# endif
803# endif
804
805/* Relocate STACK from its old location to the new one. The
806 local variables YYSIZE and YYSTACKSIZE give the old and new number of
807 elements in the stack, and YYPTR gives the new location of the
808 stack. Advance YYPTR to a properly aligned location for the next
809 stack. */
810# define YYSTACK_RELOCATE(Stack) \
811 do \
812 { \
813 YYSIZE_T yynewbytes; \
814 YYCOPY (&yyptr->Stack, Stack, yysize); \
815 Stack = &yyptr->Stack; \
816 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
817 yyptr += yynewbytes / sizeof (*yyptr); \
818 } \
819 while (0)
820
821#endif
822
823#if defined (__STDC__) || defined (__cplusplus)
824 typedef signed char yysigned_char;
825#else
826 typedef short int yysigned_char;
827#endif
828
829/* YYFINAL -- State number of the termination state. */
830#define YYFINAL 4
831/* YYLAST -- Last index in YYTABLE. */
Reid Spencer57f28f92006-12-03 07:10:26 +0000832#define YYLAST 1483
Reid Spencere7c3c602006-11-30 06:36:44 +0000833
834/* YYNTOKENS -- Number of terminals. */
Reid Spencer229e9362006-12-02 22:14:11 +0000835#define YYNTOKENS 165
Reid Spencere7c3c602006-11-30 06:36:44 +0000836/* YYNNTS -- Number of nonterminals. */
Reid Spencer229e9362006-12-02 22:14:11 +0000837#define YYNNTS 75
Reid Spencere7c3c602006-11-30 06:36:44 +0000838/* YYNRULES -- Number of rules. */
Reid Spencer57f28f92006-12-03 07:10:26 +0000839#define YYNRULES 299
Reid Spencere7c3c602006-11-30 06:36:44 +0000840/* YYNRULES -- Number of states. */
Reid Spencer57f28f92006-12-03 07:10:26 +0000841#define YYNSTATES 582
Reid Spencere7c3c602006-11-30 06:36:44 +0000842
843/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
844#define YYUNDEFTOK 2
Reid Spencer229e9362006-12-02 22:14:11 +0000845#define YYMAXUTOK 405
Reid Spencere7c3c602006-11-30 06:36:44 +0000846
847#define YYTRANSLATE(YYX) \
848 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
849
850/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
851static const unsigned char yytranslate[] =
852{
853 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
854 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
855 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
856 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
Reid Spencer229e9362006-12-02 22:14:11 +0000857 154, 155, 163, 2, 152, 2, 2, 2, 2, 2,
Reid Spencere7c3c602006-11-30 06:36:44 +0000858 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
Reid Spencer229e9362006-12-02 22:14:11 +0000859 159, 151, 160, 2, 2, 2, 2, 2, 2, 2,
Reid Spencere7c3c602006-11-30 06:36:44 +0000860 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
861 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
Reid Spencer229e9362006-12-02 22:14:11 +0000862 2, 156, 153, 158, 2, 2, 2, 2, 2, 164,
Reid Spencere7c3c602006-11-30 06:36:44 +0000863 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
864 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
Reid Spencer229e9362006-12-02 22:14:11 +0000865 157, 2, 2, 161, 2, 162, 2, 2, 2, 2,
Reid Spencere7c3c602006-11-30 06:36:44 +0000866 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
867 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
868 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
869 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
870 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
871 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
872 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
873 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
874 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
875 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
876 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
877 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
878 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
879 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
880 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
881 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
882 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
883 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
884 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
885 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
886 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
887 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
888 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
Reid Spencerfcb5df82006-12-01 22:34:43 +0000889 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
Reid Spencer78720742006-12-02 20:21:22 +0000890 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
Reid Spencer229e9362006-12-02 22:14:11 +0000891 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
892 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
893 145, 146, 147, 148, 149, 150
Reid Spencere7c3c602006-11-30 06:36:44 +0000894};
895
896#if YYDEBUG
897/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
898 YYRHS. */
899static const unsigned short int yyprhs[] =
900{
901 0, 0, 3, 5, 7, 9, 11, 13, 15, 17,
902 19, 21, 23, 25, 27, 29, 31, 33, 35, 37,
903 39, 41, 43, 45, 47, 49, 51, 53, 55, 57,
904 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
Reid Spencerfcb5df82006-12-01 22:34:43 +0000905 79, 81, 83, 85, 87, 89, 91, 93, 95, 97,
Reid Spencer229e9362006-12-02 22:14:11 +0000906 99, 101, 103, 105, 107, 109, 111, 113, 115, 117,
907 119, 121, 123, 125, 127, 129, 131, 133, 135, 137,
Reid Spencer57f28f92006-12-03 07:10:26 +0000908 139, 141, 143, 145, 147, 149, 151, 153, 155, 157,
909 159, 161, 164, 165, 167, 169, 171, 173, 175, 177,
910 179, 180, 182, 184, 186, 188, 190, 192, 195, 196,
911 197, 200, 201, 205, 208, 209, 211, 212, 216, 218,
Reid Spencer229e9362006-12-02 22:14:11 +0000912 221, 223, 225, 227, 229, 231, 233, 235, 237, 239,
Reid Spencer57f28f92006-12-03 07:10:26 +0000913 241, 243, 245, 247, 249, 251, 253, 255, 257, 259,
914 261, 264, 269, 275, 281, 285, 288, 291, 293, 297,
915 299, 303, 305, 306, 311, 315, 319, 324, 329, 333,
916 336, 339, 342, 345, 348, 351, 354, 357, 360, 363,
917 370, 376, 385, 392, 399, 406, 414, 422, 429, 436,
918 445, 454, 458, 460, 462, 464, 466, 469, 472, 477,
919 480, 482, 484, 486, 491, 494, 499, 506, 513, 520,
920 527, 531, 536, 537, 539, 541, 543, 547, 551, 555,
921 559, 563, 567, 569, 570, 572, 574, 576, 577, 580,
922 584, 586, 588, 592, 594, 595, 604, 606, 608, 612,
923 614, 616, 620, 621, 623, 625, 629, 630, 632, 634,
924 636, 638, 640, 642, 644, 646, 648, 652, 654, 660,
925 662, 664, 666, 668, 671, 674, 676, 679, 682, 683,
926 685, 687, 689, 692, 695, 699, 709, 719, 728, 743,
927 745, 747, 754, 760, 763, 770, 778, 780, 784, 786,
928 787, 790, 792, 798, 804, 810, 818, 826, 829, 834,
929 839, 846, 851, 856, 863, 870, 873, 881, 883, 886,
930 887, 889, 890, 894, 901, 905, 912, 915, 920, 927
Reid Spencere7c3c602006-11-30 06:36:44 +0000931};
932
933/* YYRHS -- A `-1'-separated list of the rules' RHS. */
934static const short int yyrhs[] =
935{
Reid Spencer229e9362006-12-02 22:14:11 +0000936 199, 0, -1, 19, -1, 20, -1, 17, -1, 18,
Reid Spencer78720742006-12-02 20:21:22 +0000937 -1, 80, -1, 81, -1, 82, -1, 83, -1, 84,
938 -1, 85, -1, 86, -1, 87, -1, 88, -1, 89,
939 -1, 90, -1, 91, -1, 92, -1, 93, -1, 94,
940 -1, 95, -1, 96, -1, 97, -1, 98, -1, 99,
Reid Spencer57f28f92006-12-03 07:10:26 +0000941 -1, 102, -1, 103, -1, 104, -1, 105, -1, 106,
942 -1, 107, -1, 118, -1, 119, -1, 120, -1, 121,
943 -1, 108, -1, 109, -1, 110, -1, 111, -1, 112,
944 -1, 113, -1, 114, -1, 115, -1, 116, -1, 117,
945 -1, 118, -1, 119, -1, 120, -1, 121, -1, 25,
946 -1, 26, -1, 130, -1, 131, -1, 132, -1, 133,
947 -1, 139, -1, 140, -1, 141, -1, 142, -1, 143,
948 -1, 144, -1, 145, -1, 146, -1, 147, -1, 148,
949 -1, 149, -1, 150, -1, 138, -1, 11, -1, 9,
950 -1, 7, -1, 5, -1, 12, -1, 10, -1, 8,
951 -1, 6, -1, 175, -1, 176, -1, 13, -1, 14,
952 -1, 208, 151, -1, -1, 42, -1, 43, -1, 44,
953 -1, 48, -1, 45, -1, 46, -1, 47, -1, -1,
954 66, -1, 67, -1, 68, -1, 69, -1, 70, -1,
955 71, -1, 65, 18, -1, -1, -1, 57, 18, -1,
956 -1, 152, 57, 18, -1, 37, 30, -1, -1, 184,
957 -1, -1, 152, 187, 186, -1, 184, -1, 57, 18,
958 -1, 190, -1, 3, -1, 192, -1, 3, -1, 192,
959 -1, 4, -1, 5, -1, 6, -1, 7, -1, 8,
960 -1, 9, -1, 10, -1, 11, -1, 12, -1, 13,
961 -1, 14, -1, 15, -1, 16, -1, 222, -1, 191,
962 -1, 153, 18, -1, 189, 154, 194, 155, -1, 156,
963 18, 157, 192, 158, -1, 159, 18, 157, 192, 160,
964 -1, 161, 193, 162, -1, 161, 162, -1, 192, 163,
965 -1, 192, -1, 193, 152, 192, -1, 193, -1, 193,
966 152, 40, -1, 40, -1, -1, 190, 156, 197, 158,
967 -1, 190, 156, 158, -1, 190, 164, 30, -1, 190,
968 159, 197, 160, -1, 190, 161, 197, 162, -1, 190,
969 161, 162, -1, 190, 22, -1, 190, 23, -1, 190,
970 222, -1, 190, 196, -1, 190, 24, -1, 175, 167,
971 -1, 176, 18, -1, 4, 25, -1, 4, 26, -1,
972 178, 21, -1, 174, 154, 195, 39, 190, 155, -1,
973 127, 154, 195, 237, 155, -1, 129, 154, 195, 152,
974 195, 152, 195, 155, -1, 168, 154, 195, 152, 195,
975 155, -1, 169, 154, 195, 152, 195, 155, -1, 170,
976 154, 195, 152, 195, 155, -1, 100, 171, 154, 195,
977 152, 195, 155, -1, 101, 172, 154, 195, 152, 195,
978 155, -1, 173, 154, 195, 152, 195, 155, -1, 135,
979 154, 195, 152, 195, 155, -1, 136, 154, 195, 152,
980 195, 152, 195, 155, -1, 137, 154, 195, 152, 195,
981 152, 195, 155, -1, 197, 152, 195, -1, 195, -1,
982 35, -1, 36, -1, 200, -1, 200, 217, -1, 200,
983 219, -1, 200, 63, 62, 203, -1, 200, 31, -1,
984 202, -1, 50, -1, 58, -1, 202, 179, 27, 188,
985 -1, 202, 219, -1, 202, 63, 62, 203, -1, 202,
986 179, 180, 198, 195, 186, -1, 202, 179, 201, 198,
987 190, 186, -1, 202, 179, 45, 198, 190, 186, -1,
988 202, 179, 47, 198, 190, 186, -1, 202, 51, 205,
989 -1, 202, 59, 151, 206, -1, -1, 30, -1, 56,
990 -1, 55, -1, 53, 151, 204, -1, 54, 151, 18,
991 -1, 52, 151, 30, -1, 72, 151, 30, -1, 156,
992 207, 158, -1, 207, 152, 30, -1, 30, -1, -1,
993 28, -1, 30, -1, 208, -1, -1, 190, 209, -1,
994 211, 152, 210, -1, 210, -1, 211, -1, 211, 152,
995 40, -1, 40, -1, -1, 181, 188, 208, 154, 212,
996 155, 185, 182, -1, 32, -1, 161, -1, 180, 213,
997 214, -1, 33, -1, 162, -1, 215, 225, 216, -1,
998 -1, 45, -1, 47, -1, 34, 218, 213, -1, -1,
999 64, -1, 17, -1, 18, -1, 21, -1, 25, -1,
1000 26, -1, 22, -1, 23, -1, 24, -1, 159, 197,
1001 160, -1, 196, -1, 62, 220, 30, 152, 30, -1,
1002 166, -1, 208, -1, 222, -1, 221, -1, 190, 223,
1003 -1, 225, 226, -1, 226, -1, 227, 229, -1, 227,
1004 231, -1, -1, 29, -1, 78, -1, 77, -1, 73,
1005 224, -1, 73, 3, -1, 74, 15, 223, -1, 74,
1006 4, 223, 152, 15, 223, 152, 15, 223, -1, 75,
1007 177, 223, 152, 15, 223, 156, 230, 158, -1, 75,
1008 177, 223, 152, 15, 223, 156, 158, -1, 179, 76,
1009 181, 188, 223, 154, 234, 155, 39, 15, 223, 228,
1010 15, 223, -1, 228, -1, 79, -1, 230, 177, 221,
1011 152, 15, 223, -1, 177, 221, 152, 15, 223, -1,
1012 179, 236, -1, 190, 156, 223, 152, 223, 158, -1,
1013 232, 152, 156, 223, 152, 223, 158, -1, 224, -1,
1014 233, 152, 224, -1, 233, -1, -1, 61, 60, -1,
1015 60, -1, 168, 190, 223, 152, 223, -1, 169, 190,
1016 223, 152, 223, -1, 170, 190, 223, 152, 223, -1,
1017 100, 171, 190, 223, 152, 223, 155, -1, 101, 172,
1018 190, 223, 152, 223, 155, -1, 49, 224, -1, 173,
1019 224, 152, 224, -1, 174, 224, 39, 190, -1, 129,
1020 224, 152, 224, 152, 224, -1, 134, 224, 152, 190,
1021 -1, 135, 224, 152, 224, -1, 136, 224, 152, 224,
1022 152, 224, -1, 137, 224, 152, 224, 152, 224, -1,
1023 128, 232, -1, 235, 181, 188, 223, 154, 234, 155,
1024 -1, 239, -1, 152, 233, -1, -1, 38, -1, -1,
1025 122, 190, 183, -1, 122, 190, 152, 10, 223, 183,
1026 -1, 123, 190, 183, -1, 123, 190, 152, 10, 223,
1027 183, -1, 124, 224, -1, 238, 125, 190, 223, -1,
1028 238, 126, 224, 152, 190, 223, -1, 127, 190, 223,
1029 237, -1
Reid Spencere7c3c602006-11-30 06:36:44 +00001030};
1031
1032/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
1033static const unsigned short int yyrline[] =
1034{
Reid Spencer187ccf82006-12-09 16:57:22 +00001035 0, 348, 348, 348, 349, 349, 353, 353, 353, 353,
1036 353, 353, 353, 354, 354, 354, 354, 355, 355, 355,
1037 356, 356, 356, 356, 356, 356, 357, 357, 357, 357,
1038 357, 357, 357, 357, 357, 357, 358, 358, 358, 358,
1039 358, 358, 358, 358, 358, 358, 359, 359, 359, 359,
1040 359, 359, 360, 360, 360, 360, 361, 361, 361, 361,
1041 361, 361, 361, 362, 362, 362, 362, 362, 362, 367,
1042 367, 367, 367, 368, 368, 368, 368, 369, 369, 370,
1043 370, 373, 376, 381, 381, 381, 381, 381, 381, 382,
1044 383, 386, 386, 386, 386, 386, 387, 388, 393, 398,
1045 399, 402, 403, 411, 417, 418, 421, 422, 431, 432,
1046 445, 445, 446, 446, 447, 451, 451, 451, 451, 451,
1047 451, 451, 452, 452, 452, 452, 452, 454, 458, 462,
1048 465, 470, 476, 484, 492, 498, 502, 513, 516, 524,
1049 525, 530, 533, 543, 549, 554, 560, 566, 572, 577,
1050 583, 589, 595, 601, 607, 613, 619, 625, 631, 639,
1051 653, 665, 670, 676, 681, 689, 694, 699, 707, 712,
1052 717, 727, 732, 737, 737, 747, 752, 755, 760, 764,
1053 768, 770, 770, 773, 785, 790, 795, 804, 813, 822,
1054 831, 836, 841, 846, 848, 848, 851, 856, 863, 868,
1055 875, 882, 887, 888, 896, 896, 897, 897, 899, 906,
1056 910, 914, 917, 922, 925, 927, 947, 948, 950, 959,
1057 960, 962, 970, 971, 972, 976, 989, 990, 993, 993,
1058 993, 993, 993, 993, 993, 994, 995, 1000, 1001, 1010,
1059 1010, 1014, 1020, 1031, 1037, 1040, 1048, 1052, 1057, 1060,
1060 1066, 1066, 1068, 1073, 1078, 1083, 1091, 1098, 1104, 1124,
1061 1129, 1135, 1140, 1148, 1157, 1164, 1172, 1176, 1183, 1184,
1062 1188, 1193, 1196, 1202, 1207, 1215, 1220, 1225, 1230, 1238,
1063 1252, 1257, 1262, 1267, 1272, 1277, 1282, 1299, 1304, 1305,
1064 1309, 1310, 1313, 1320, 1327, 1334, 1341, 1346, 1353, 1360
Reid Spencere7c3c602006-11-30 06:36:44 +00001065};
1066#endif
1067
1068#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1069/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1070 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1071static const char *const yytname[] =
1072{
Reid Spencerf2d55322006-12-01 21:52:30 +00001073 "$end", "error", "$undefined", "VOID", "BOOL", "SBYTE", "UBYTE",
1074 "SHORT", "USHORT", "INT", "UINT", "LONG", "ULONG", "FLOAT", "DOUBLE",
1075 "LABEL", "OPAQUE", "ESINT64VAL", "EUINT64VAL", "SINTVAL", "UINTVAL",
1076 "FPVAL", "NULL_TOK", "UNDEF", "ZEROINITIALIZER", "TRUETOK", "FALSETOK",
Reid Spencere77e35e2006-12-01 20:26:20 +00001077 "TYPE", "VAR_ID", "LABELSTR", "STRINGCONSTANT", "IMPLEMENTATION",
1078 "BEGINTOK", "ENDTOK", "DECLARE", "GLOBAL", "CONSTANT", "SECTION",
1079 "VOLATILE", "TO", "DOTDOTDOT", "CONST", "INTERNAL", "LINKONCE", "WEAK",
1080 "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "APPENDING", "NOT", "EXTERNAL",
1081 "TARGET", "TRIPLE", "ENDIAN", "POINTERSIZE", "LITTLE", "BIG", "ALIGN",
Reid Spencer78720742006-12-02 20:21:22 +00001082 "UNINITIALIZED", "DEPLIBS", "CALL", "TAIL", "ASM_TOK", "MODULE",
1083 "SIDEEFFECT", "CC_TOK", "CCC_TOK", "CSRETCC_TOK", "FASTCC_TOK",
1084 "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", "DATALAYOUT",
1085 "RET", "BR", "SWITCH", "INVOKE", "EXCEPT", "UNWIND", "UNREACHABLE",
1086 "ADD", "SUB", "MUL", "DIV", "UDIV", "SDIV", "FDIV", "REM", "UREM",
1087 "SREM", "FREM", "AND", "OR", "XOR", "SETLE", "SETGE", "SETLT", "SETGT",
Reid Spencer229e9362006-12-02 22:14:11 +00001088 "SETEQ", "SETNE", "ICMP", "FCMP", "EQ", "NE", "SLT", "SGT", "SLE", "SGE",
1089 "OEQ", "ONE", "OLT", "OGT", "OLE", "OGE", "ORD", "UNO", "UEQ", "UNE",
1090 "ULT", "UGT", "ULE", "UGE", "MALLOC", "ALLOCA", "FREE", "LOAD", "STORE",
Reid Spencer78720742006-12-02 20:21:22 +00001091 "GETELEMENTPTR", "PHI_TOK", "SELECT", "SHL", "SHR", "ASHR", "LSHR",
1092 "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR", "CAST",
1093 "TRUNC", "ZEXT", "SEXT", "FPTRUNC", "FPEXT", "FPTOUI", "FPTOSI",
1094 "UITOFP", "SITOFP", "PTRTOINT", "INTTOPTR", "BITCAST", "'='", "','",
1095 "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'",
1096 "'*'", "'c'", "$accept", "IntVal", "EInt64Val", "ArithmeticOps",
Reid Spencer57f28f92006-12-03 07:10:26 +00001097 "LogicalOps", "SetCondOps", "IPredicates", "FPredicates", "ShiftOps",
Reid Spencer229e9362006-12-02 22:14:11 +00001098 "CastOps", "SIntType", "UIntType", "IntType", "FPType", "OptAssign",
1099 "OptLinkage", "OptCallingConv", "OptAlign", "OptCAlign", "SectionString",
1100 "OptSection", "GlobalVarAttributes", "GlobalVarAttribute", "TypesV",
1101 "UpRTypesV", "Types", "PrimType", "UpRTypes", "TypeListI",
1102 "ArgTypeListI", "ConstVal", "ConstExpr", "ConstVector", "GlobalType",
1103 "Module", "DefinitionList", "External", "ConstPool", "AsmBlock",
1104 "BigOrLittle", "TargetDefinition", "LibrariesDefinition", "LibList",
1105 "Name", "OptName", "ArgVal", "ArgListH", "ArgList", "FunctionHeaderH",
1106 "BEGIN", "FunctionHeader", "END", "Function", "FnDeclareLinkage",
1107 "FunctionProto", "OptSideEffect", "ConstValueRef", "SymbolicValueRef",
1108 "ValueRef", "ResolvedVal", "BasicBlockList", "BasicBlock",
1109 "InstructionList", "Unwind", "BBTerminatorInst", "JumpTable", "Inst",
1110 "PHIList", "ValueRefList", "ValueRefListE", "OptTailCall", "InstVal",
1111 "IndexList", "OptVolatile", "MemoryInst", 0
Reid Spencere7c3c602006-11-30 06:36:44 +00001112};
1113#endif
1114
1115# ifdef YYPRINT
1116/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1117 token YYLEX-NUM. */
1118static const unsigned short int yytoknum[] =
1119{
1120 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1121 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1122 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1123 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1124 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1125 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1126 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1127 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1128 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1129 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1130 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
Reid Spencerfcb5df82006-12-01 22:34:43 +00001131 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
Reid Spencer229e9362006-12-02 22:14:11 +00001132 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1133 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1134 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1135 405, 61, 44, 92, 40, 41, 91, 120, 93, 60,
1136 62, 123, 125, 42, 99
Reid Spencere7c3c602006-11-30 06:36:44 +00001137};
1138# endif
1139
1140/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1141static const unsigned char yyr1[] =
1142{
Reid Spencer229e9362006-12-02 22:14:11 +00001143 0, 165, 166, 166, 167, 167, 168, 168, 168, 168,
1144 168, 168, 168, 168, 168, 168, 168, 169, 169, 169,
Reid Spencer57f28f92006-12-03 07:10:26 +00001145 170, 170, 170, 170, 170, 170, 171, 171, 171, 171,
1146 171, 171, 171, 171, 171, 171, 172, 172, 172, 172,
Reid Spencer229e9362006-12-02 22:14:11 +00001147 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
Reid Spencer57f28f92006-12-03 07:10:26 +00001148 172, 172, 173, 173, 173, 173, 174, 174, 174, 174,
1149 174, 174, 174, 174, 174, 174, 174, 174, 174, 175,
1150 175, 175, 175, 176, 176, 176, 176, 177, 177, 178,
1151 178, 179, 179, 180, 180, 180, 180, 180, 180, 180,
1152 180, 181, 181, 181, 181, 181, 181, 181, 181, 182,
1153 182, 183, 183, 184, 185, 185, 186, 186, 187, 187,
1154 188, 188, 189, 189, 190, 191, 191, 191, 191, 191,
1155 191, 191, 191, 191, 191, 191, 191, 192, 192, 192,
1156 192, 192, 192, 192, 192, 192, 192, 193, 193, 194,
1157 194, 194, 194, 195, 195, 195, 195, 195, 195, 195,
1158 195, 195, 195, 195, 195, 195, 195, 195, 195, 196,
1159 196, 196, 196, 196, 196, 196, 196, 196, 196, 196,
1160 196, 197, 197, 198, 198, 199, 200, 200, 200, 200,
1161 200, 201, 201, 202, 202, 202, 202, 202, 202, 202,
1162 202, 202, 202, 203, 204, 204, 205, 205, 205, 205,
1163 206, 207, 207, 207, 208, 208, 209, 209, 210, 211,
1164 211, 212, 212, 212, 212, 213, 214, 214, 215, 216,
1165 216, 217, 218, 218, 218, 219, 220, 220, 221, 221,
1166 221, 221, 221, 221, 221, 221, 221, 221, 221, 222,
1167 222, 223, 223, 224, 225, 225, 226, 227, 227, 227,
1168 228, 228, 229, 229, 229, 229, 229, 229, 229, 229,
1169 229, 230, 230, 231, 232, 232, 233, 233, 234, 234,
1170 235, 235, 236, 236, 236, 236, 236, 236, 236, 236,
1171 236, 236, 236, 236, 236, 236, 236, 236, 237, 237,
1172 238, 238, 239, 239, 239, 239, 239, 239, 239, 239
Reid Spencere7c3c602006-11-30 06:36:44 +00001173};
1174
1175/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
1176static const unsigned char yyr2[] =
1177{
1178 0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1179 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1180 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1181 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
Reid Spencerf7bde222006-12-01 22:26:37 +00001182 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
Reid Spencerfcb5df82006-12-01 22:34:43 +00001183 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
Reid Spencer229e9362006-12-02 22:14:11 +00001184 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
Reid Spencer229e9362006-12-02 22:14:11 +00001185 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
Reid Spencer57f28f92006-12-03 07:10:26 +00001186 1, 2, 0, 1, 1, 1, 1, 1, 1, 1,
1187 0, 1, 1, 1, 1, 1, 1, 2, 0, 0,
1188 2, 0, 3, 2, 0, 1, 0, 3, 1, 2,
1189 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1190 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1191 2, 4, 5, 5, 3, 2, 2, 1, 3, 1,
1192 3, 1, 0, 4, 3, 3, 4, 4, 3, 2,
1193 2, 2, 2, 2, 2, 2, 2, 2, 2, 6,
1194 5, 8, 6, 6, 6, 7, 7, 6, 6, 8,
1195 8, 3, 1, 1, 1, 1, 2, 2, 4, 2,
1196 1, 1, 1, 4, 2, 4, 6, 6, 6, 6,
1197 3, 4, 0, 1, 1, 1, 3, 3, 3, 3,
1198 3, 3, 1, 0, 1, 1, 1, 0, 2, 3,
1199 1, 1, 3, 1, 0, 8, 1, 1, 3, 1,
1200 1, 3, 0, 1, 1, 3, 0, 1, 1, 1,
1201 1, 1, 1, 1, 1, 1, 3, 1, 5, 1,
1202 1, 1, 1, 2, 2, 1, 2, 2, 0, 1,
1203 1, 1, 2, 2, 3, 9, 9, 8, 14, 1,
1204 1, 6, 5, 2, 6, 7, 1, 3, 1, 0,
1205 2, 1, 5, 5, 5, 7, 7, 2, 4, 4,
1206 6, 4, 4, 6, 6, 2, 7, 1, 2, 0,
1207 1, 0, 3, 6, 3, 6, 2, 4, 6, 4
Reid Spencere7c3c602006-11-30 06:36:44 +00001208};
1209
1210/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1211 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
1212 means the default is an error. */
Reid Spencerfcb5df82006-12-01 22:34:43 +00001213static const unsigned short int yydefact[] =
Reid Spencere7c3c602006-11-30 06:36:44 +00001214{
Reid Spencer57f28f92006-12-03 07:10:26 +00001215 192, 0, 90, 180, 1, 179, 222, 83, 84, 85,
1216 87, 88, 89, 86, 0, 98, 248, 176, 177, 204,
1217 205, 0, 0, 0, 90, 0, 184, 223, 224, 98,
1218 0, 0, 91, 92, 93, 94, 95, 96, 0, 0,
1219 249, 248, 245, 82, 0, 0, 0, 0, 190, 0,
1220 0, 0, 0, 0, 181, 182, 0, 0, 81, 225,
1221 193, 178, 97, 111, 115, 116, 117, 118, 119, 120,
1222 121, 122, 123, 124, 125, 126, 127, 2, 3, 0,
1223 0, 0, 0, 239, 0, 0, 110, 129, 114, 240,
1224 128, 216, 217, 218, 219, 220, 221, 244, 0, 0,
1225 0, 251, 250, 260, 291, 259, 246, 247, 0, 0,
1226 0, 0, 203, 191, 185, 183, 173, 174, 0, 0,
1227 0, 0, 130, 0, 0, 113, 135, 137, 0, 0,
1228 142, 136, 253, 0, 252, 0, 0, 72, 76, 71,
1229 75, 70, 74, 69, 73, 77, 78, 0, 290, 0,
1230 271, 0, 98, 6, 7, 8, 9, 10, 11, 12,
Reid Spencer78720742006-12-02 20:21:22 +00001231 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
Reid Spencer57f28f92006-12-03 07:10:26 +00001232 23, 24, 25, 0, 0, 0, 0, 0, 0, 0,
1233 0, 52, 53, 54, 55, 0, 0, 0, 0, 68,
1234 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
1235 66, 67, 0, 0, 0, 0, 0, 98, 263, 0,
1236 287, 198, 195, 194, 196, 197, 199, 202, 0, 106,
1237 106, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1238 124, 125, 0, 0, 0, 0, 106, 106, 0, 0,
1239 0, 134, 214, 141, 139, 0, 228, 229, 230, 233,
1240 234, 235, 231, 232, 226, 0, 0, 0, 0, 0,
1241 0, 0, 0, 0, 0, 0, 0, 0, 237, 242,
1242 241, 243, 0, 254, 0, 277, 270, 0, 26, 27,
1243 28, 29, 30, 31, 32, 33, 34, 35, 0, 50,
1244 51, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1245 45, 46, 47, 48, 49, 0, 101, 101, 296, 0,
1246 0, 285, 0, 0, 0, 0, 0, 0, 0, 0,
1247 0, 0, 0, 0, 0, 0, 200, 0, 188, 189,
1248 156, 157, 4, 5, 154, 155, 158, 149, 150, 153,
1249 0, 0, 0, 0, 152, 151, 186, 187, 112, 112,
1250 138, 213, 207, 210, 211, 0, 0, 131, 227, 0,
1251 0, 0, 0, 0, 0, 0, 0, 172, 0, 0,
Reid Spencer78720742006-12-02 20:21:22 +00001252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Reid Spencer57f28f92006-12-03 07:10:26 +00001253 292, 0, 294, 289, 0, 0, 0, 0, 0, 0,
1254 0, 0, 0, 0, 0, 0, 0, 0, 0, 201,
1255 0, 0, 108, 106, 144, 0, 0, 148, 0, 145,
1256 132, 133, 206, 208, 0, 104, 140, 0, 0, 0,
1257 289, 0, 0, 0, 0, 0, 236, 0, 0, 0,
Reid Spencer78720742006-12-02 20:21:22 +00001258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Reid Spencer57f28f92006-12-03 07:10:26 +00001259 0, 299, 0, 0, 0, 281, 282, 0, 0, 0,
1260 0, 0, 278, 279, 0, 297, 0, 103, 109, 107,
1261 143, 146, 147, 212, 209, 105, 99, 0, 0, 0,
1262 0, 0, 0, 0, 0, 171, 0, 0, 0, 0,
1263 0, 0, 0, 269, 0, 0, 101, 102, 101, 266,
1264 288, 0, 0, 0, 0, 0, 272, 273, 274, 269,
1265 0, 0, 215, 238, 0, 0, 160, 0, 0, 0,
1266 0, 0, 0, 0, 0, 0, 0, 0, 268, 0,
1267 0, 0, 0, 293, 295, 0, 0, 0, 280, 283,
1268 284, 0, 298, 100, 0, 0, 0, 168, 0, 0,
1269 162, 163, 164, 167, 159, 0, 257, 0, 0, 0,
1270 275, 276, 267, 264, 0, 286, 165, 166, 0, 0,
1271 0, 255, 0, 256, 0, 0, 265, 161, 169, 170,
1272 0, 0, 0, 0, 0, 0, 262, 0, 0, 261,
1273 0, 258
Reid Spencere7c3c602006-11-30 06:36:44 +00001274};
1275
1276/* YYDEFGOTO[NTERM-NUM]. */
1277static const short int yydefgoto[] =
1278{
Reid Spencer57f28f92006-12-03 07:10:26 +00001279 -1, 83, 334, 263, 264, 265, 288, 305, 266, 267,
1280 232, 233, 147, 234, 24, 15, 38, 502, 380, 402,
1281 466, 328, 403, 84, 85, 235, 87, 88, 128, 245,
1282 367, 268, 368, 118, 1, 2, 57, 3, 61, 214,
1283 48, 113, 218, 89, 413, 353, 354, 355, 39, 93,
1284 16, 96, 17, 29, 18, 359, 269, 90, 271, 489,
1285 41, 42, 43, 105, 106, 548, 107, 311, 518, 519,
1286 207, 208, 441, 209, 210
Reid Spencere7c3c602006-11-30 06:36:44 +00001287};
1288
1289/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1290 STATE-NUM. */
Reid Spencer57f28f92006-12-03 07:10:26 +00001291#define YYPACT_NINF -501
Reid Spencere7c3c602006-11-30 06:36:44 +00001292static const short int yypact[] =
1293{
Reid Spencer57f28f92006-12-03 07:10:26 +00001294 -501, 82, 9, 975, -501, -501, 72, -501, -501, -501,
1295 -501, -501, -501, -501, 29, 34, 94, -501, -501, -501,
1296 -501, -28, -42, 66, 127, 25, -501, -501, -501, 34,
1297 122, 199, -501, -501, -501, -501, -501, -501, 839, -17,
1298 -501, -19, -501, 47, 67, 68, 69, 75, -501, 71,
1299 122, 839, 11, 11, -501, -501, 11, 11, -501, -501,
1300 -501, -501, -501, 76, -501, -501, -501, -501, -501, -501,
1301 -501, -501, -501, -501, -501, -501, -501, -501, -501, 207,
1302 210, 211, 518, -501, 123, 77, -501, -501, -84, -501,
1303 -501, -501, -501, -501, -501, -501, -501, -501, 876, 8,
1304 253, -501, -501, -501, 1333, -501, -501, -501, 203, 80,
1305 217, 206, 208, -501, -501, -501, -501, -501, 922, 922,
1306 960, 922, -501, 83, 84, -501, -501, -84, -134, 88,
1307 604, -501, 76, 1131, -501, 1131, 1131, -501, -501, -501,
1308 -501, -501, -501, -501, -501, -501, -501, 1131, -501, 922,
1309 -501, 177, 34, -501, -501, -501, -501, -501, -501, -501,
1310 -501, -501, -501, -501, -501, -501, -501, -501, -501, -501,
1311 -501, -501, -501, 103, 81, 922, 922, 922, 922, 922,
1312 922, -501, -501, -501, -501, 922, 922, 922, 922, -501,
1313 -501, -501, -501, -501, -501, -501, -501, -501, -501, -501,
1314 -501, -501, 922, 922, 922, 922, 922, 34, -501, 20,
1315 -501, -501, -501, -501, -501, -501, -501, -501, -44, 91,
1316 91, 130, 143, 226, 145, 227, 161, 230, 163, 231,
1317 232, 233, 165, 234, 245, 1042, 91, 91, 922, 922,
1318 922, -501, 679, -501, 99, 113, -501, -501, -501, -501,
1319 -501, -501, -501, -501, 205, 103, 81, 119, 120, 125,
1320 128, 129, 960, 133, 134, 135, 139, 140, -501, -501,
1321 -501, -501, 124, -501, 149, -501, -501, 839, -501, -501,
1322 -501, -501, -501, -501, -501, -501, -501, -501, 922, -501,
1323 -501, -501, -501, -501, -501, -501, -501, -501, -501, -501,
1324 -501, -501, -501, -501, -501, 922, 150, 151, -501, 1131,
1325 136, 153, 154, 155, 156, 157, 158, 1131, 1131, 1131,
1326 159, 241, 839, 922, 922, 251, -501, -18, -501, -501,
1327 -501, -501, -501, -501, -501, -501, -501, -501, -501, -501,
1328 717, 960, 549, 265, -501, -501, -501, -501, -69, -50,
1329 -84, -501, 123, -501, 160, 142, 763, -501, -501, 283,
1330 164, 166, 960, 960, 960, 960, 960, -501, -110, 960,
1331 960, 960, 960, 960, 302, 304, 1131, 1131, 1131, 1,
1332 -501, 12, -501, 169, 1131, 167, 922, 922, 922, 922,
1333 922, 172, 173, 176, 922, 922, 1131, 1131, 178, -501,
1334 299, 314, -501, 91, -501, -40, -68, -501, -74, -501,
1335 -501, -501, -501, -501, 801, 301, -501, 184, 960, 960,
1336 169, 187, 188, 189, 190, 960, -501, 194, 195, 201,
1337 209, 316, 1131, 1131, 204, 212, 213, 1131, 341, 1131,
1338 922, -501, 214, 1131, 215, -501, -501, 216, 220, 1131,
1339 1131, 1131, -501, -501, 219, -501, 922, -501, -501, -501,
1340 -501, -501, -501, -501, -501, -501, 303, 332, 222, 228,
1341 229, 960, 960, 960, 960, -501, 960, 960, 960, 960,
1342 922, 238, 235, 922, 1131, 1131, 240, -501, 240, -501,
1343 243, 1131, 244, 922, 922, 922, -501, -501, -501, 922,
1344 1131, 345, -501, -501, 960, 960, -501, 246, 242, 247,
1345 248, 252, 254, 255, 256, 257, 354, 26, 243, 258,
1346 259, 260, 325, -501, -501, 922, 225, 1131, -501, -501,
1347 -501, 261, -501, -501, 262, 269, 960, -501, 960, 960,
1348 -501, -501, -501, -501, -501, 1131, -501, 1220, 56, 347,
1349 -501, -501, -501, -501, 250, -501, -501, -501, 270, 271,
1350 272, -501, 249, -501, 1220, 378, -501, -501, -501, -501,
1351 391, 276, 1131, 1131, 415, 138, -501, 1131, 416, -501,
1352 1131, -501
Reid Spencere7c3c602006-11-30 06:36:44 +00001353};
1354
1355/* YYPGOTO[NTERM-NUM]. */
1356static const short int yypgoto[] =
1357{
Reid Spencer57f28f92006-12-03 07:10:26 +00001358 -501, -501, -501, 328, 329, 330, 181, 185, 333, 336,
1359 -98, -97, -500, -501, 400, 420, -136, -501, -300, 31,
1360 -501, -216, -501, -45, -501, -38, -501, -81, 317, -501,
1361 126, 218, -208, 74, -501, -501, -501, -501, 398, -501,
1362 -501, -501, -501, 2, -501, 35, -501, -501, 423, -501,
1363 -501, -501, -501, -501, 451, -501, -471, -106, -62, -90,
1364 -501, 417, -501, -116, -501, -501, -501, -501, 22, -39,
1365 -501, -501, 43, -501, -501
Reid Spencere7c3c602006-11-30 06:36:44 +00001366};
1367
1368/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
1369 positive, shift that token. If negative, reduce the rule which
1370 number is the opposite. If zero, do what YYDEFACT says.
1371 If YYTABLE_NINF, syntax error. */
Reid Spencer57f28f92006-12-03 07:10:26 +00001372#define YYTABLE_NINF -176
Reid Spencere7c3c602006-11-30 06:36:44 +00001373static const short int yytable[] =
1374{
Reid Spencer57f28f92006-12-03 07:10:26 +00001375 86, 127, 145, 146, 329, 25, 115, 382, 134, -175,
1376 40, 437, 135, 86, 94, 91, 277, 547, 240, 400,
1377 346, 347, 439, 136, 44, 45, 46, 270, 241, 270,
1378 270, 137, 138, 139, 140, 141, 142, 143, 144, 401,
1379 5, 270, 425, 6, 47, 25, 116, 117, 564, 127,
1380 426, 7, 8, 9, 10, 11, 12, 13, 438, 275,
1381 133, 137, 138, 139, 140, 141, 142, 143, 144, 438,
1382 -112, 322, 14, 272, 273, 19, 562, 20, 425, 131,
1383 219, 220, 4, 237, 425, 274, 129, 308, 462, 410,
1384 312, 30, 461, 571, 131, 313, 314, 315, 316, 31,
1385 32, 33, 34, 35, 36, 37, 289, 290, 325, 49,
1386 411, 133, 425, 131, 326, 320, 321, 27, 460, 28,
1387 98, 99, 100, 40, 101, 102, 103, 119, 50, 345,
1388 120, 121, 405, 406, 408, 212, 213, 306, 307, 133,
1389 309, 310, 133, 95, 92, 323, 324, 133, 133, 133,
1390 133, 19, 60, 20, 51, 330, 331, 348, 349, 350,
1391 -72, -72, -71, -71, 317, 318, 319, 133, 133, 7,
1392 8, 9, 52, 11, 53, 13, 58, 54, -70, -70,
1393 -69, -69, 332, 333, 546, 55, 523, 459, 524, 291,
1394 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
1395 302, 303, 304, 270, 352, 278, 279, 280, 281, 282,
1396 283, 270, 270, 270, 563, 101, 102, 62, 108, 109,
1397 110, 284, 285, 286, 287, 122, 111, 112, 123, 124,
1398 -113, 130, 376, 211, 398, 215, 216, 276, 217, 86,
1399 238, 239, 242, 327, -76, -75, 236, 383, -74, -73,
1400 377, 356, 335, -79, -80, 391, 392, 393, 137, 138,
1401 139, 140, 141, 142, 143, 144, 336, 378, 357, 358,
1402 270, 270, 270, 362, 363, 350, 374, 396, 270, 364,
1403 395, 399, 365, 366, 86, 397, 133, 369, 370, 371,
1404 270, 270, 384, 372, 373, 409, 444, 415, 446, 447,
1405 448, 375, 379, 381, 452, 385, 386, 387, 388, 389,
1406 390, 394, 414, 417, 434, 435, 436, 432, 418, 433,
1407 419, 440, 442, 443, 449, 450, 270, 270, 451, 457,
1408 456, 270, 458, 270, 454, 455, 467, 270, 400, 471,
1409 472, 473, 474, 270, 270, 270, 476, 477, 133, 445,
1410 133, 133, 133, 478, 412, 480, 133, 453, 483, 487,
1411 501, 479, 503, 533, 484, 485, 491, 493, 494, 545,
1412 481, 482, 495, 499, 504, 486, 352, 488, 270, 270,
1413 505, 492, 438, 553, 506, 270, 565, 496, 497, 498,
1414 516, 517, 522, 572, 270, 525, 527, 537, 536, 538,
1415 539, 570, 133, 528, 529, 530, 573, 540, 566, 541,
1416 542, 543, 544, 549, 550, 551, 555, 556, 500, 145,
1417 146, 270, 520, 521, 557, 567, 568, 569, 574, 526,
1418 577, 580, 202, 203, 204, 552, 360, 205, 532, 270,
1419 206, 361, 515, 104, 56, 133, 465, 244, 114, 464,
1420 145, 146, 59, 344, 26, 133, 133, 133, 97, 578,
1421 531, 133, 490, 470, 0, 554, 270, 270, 0, 0,
1422 0, 270, 0, 0, 270, 0, 0, 0, 0, 0,
1423 0, 0, 0, 561, 0, 0, 0, 133, 420, 421,
1424 422, 423, 424, 0, 0, 427, 428, 429, 430, 431,
1425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1426 575, 576, 0, 0, 0, 579, 0, 0, 581, 0,
1427 0, 125, 64, 65, 66, 67, 68, 69, 70, 71,
1428 72, 73, 74, 75, 76, 0, 0, 77, 78, 0,
1429 0, 0, 0, 0, 468, 469, 19, 0, 20, 0,
1430 0, 475, 125, 221, 222, 223, 224, 225, 226, 227,
1431 228, 229, 230, 231, 75, 76, 0, 0, 77, 78,
Reid Spencer229e9362006-12-02 22:14:11 +00001432 0, 0, 0, 0, 0, 0, 0, 19, 0, 20,
Reid Spencer57f28f92006-12-03 07:10:26 +00001433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1434 0, 0, 0, 0, 0, 0, 0, 507, 508, 509,
1435 510, 0, 511, 512, 513, 514, 0, 125, 64, 65,
Reid Spencer229e9362006-12-02 22:14:11 +00001436 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
1437 76, 0, 0, 77, 78, 0, 0, 0, 0, 0,
Reid Spencer57f28f92006-12-03 07:10:26 +00001438 534, 535, 19, 0, 20, 0, 0, 0, 0, 0,
1439 0, 0, 0, 0, 243, 0, 0, 0, 0, 0,
Reid Spencer78720742006-12-02 20:21:22 +00001440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Reid Spencer57f28f92006-12-03 07:10:26 +00001441 0, 0, 558, 0, 559, 560, 0, 0, 0, 0,
1442 0, 79, 0, 0, 80, 0, 0, 81, 0, 82,
1443 126, 0, 125, 64, 65, 66, 67, 68, 69, 70,
1444 71, 72, 73, 74, 75, 76, 0, 0, 77, 78,
1445 0, 0, 79, 0, 0, 80, 0, 19, 81, 20,
1446 82, 407, 0, 0, 0, 0, 0, 0, 0, 351,
1447 125, 221, 222, 223, 224, 225, 226, 227, 228, 229,
1448 230, 231, 75, 76, 0, 0, 77, 78, 0, 0,
1449 0, 0, 0, 0, 0, 19, 0, 20, 0, 0,
Reid Spencer229e9362006-12-02 22:14:11 +00001450 0, 0, 0, 0, 0, 0, 0, 79, 0, 0,
1451 80, 0, 0, 81, 0, 82, 125, 64, 65, 66,
Reid Spencer78720742006-12-02 20:21:22 +00001452 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1453 0, 0, 77, 78, 0, 0, 0, 0, 0, 0,
1454 0, 19, 0, 20, 0, 0, 0, 0, 0, 0,
Reid Spencer57f28f92006-12-03 07:10:26 +00001455 0, 0, 0, 416, 125, 64, 65, 66, 67, 68,
1456 69, 70, 71, 72, 73, 74, 75, 76, 0, 0,
1457 77, 78, 0, 0, 0, 0, 0, 0, 0, 19,
1458 0, 20, 79, 0, 0, 80, 0, 0, 81, 0,
1459 82, 463, 63, 64, 65, 66, 67, 68, 69, 70,
1460 71, 72, 73, 74, 75, 76, 0, 0, 77, 78,
1461 0, 0, 0, 0, 0, 0, 0, 19, 0, 20,
1462 79, 0, 0, 80, 0, 404, 81, 0, 82, 132,
1463 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
1464 74, 75, 76, 0, 0, 77, 78, 0, 0, 0,
1465 0, 0, 0, 0, 19, 0, 20, 0, 0, 0,
Reid Spencer229e9362006-12-02 22:14:11 +00001466 0, 0, 0, 0, 0, 0, 79, 0, 0, 80,
1467 0, 0, 81, 0, 82, 125, 64, 65, 66, 67,
1468 68, 69, 70, 71, 72, 73, 74, 75, 76, 0,
1469 0, 77, 78, 0, 0, 0, 0, 0, 0, 0,
Reid Spencer57f28f92006-12-03 07:10:26 +00001470 19, 0, 20, 0, 79, 0, 0, 80, 0, 0,
1471 81, 0, 82, 125, 221, 222, 223, 224, 225, 226,
1472 227, 228, 229, 230, 231, 75, 76, 0, 0, 77,
1473 78, 0, 0, 0, 0, 0, 0, 0, 19, 0,
1474 20, 0, 79, 0, 0, 80, 0, 0, 81, 0,
1475 82, 0, -82, 19, 0, 20, 0, 0, 0, 6,
1476 -82, -82, 0, 0, 0, 0, 0, -82, -82, -82,
1477 -82, -82, -82, -82, 0, -82, 21, 0, 0, 79,
1478 0, 0, 80, -82, 22, 81, 0, 82, 23, 0,
1479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1481 0, 77, 78, 0, 337, 338, 339, 0, 0, 0,
Reid Spencer229e9362006-12-02 22:14:11 +00001482 19, 0, 20, 0, 0, 79, 0, 0, 80, 0,
Reid Spencer57f28f92006-12-03 07:10:26 +00001483 0, 81, 0, 82, 0, 0, 0, 0, 0, 0,
Reid Spencerf2d55322006-12-01 21:52:30 +00001484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Reid Spencer229e9362006-12-02 22:14:11 +00001485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Reid Spencer57f28f92006-12-03 07:10:26 +00001486 0, 0, 0, 79, 0, 0, 80, 0, 0, 81,
1487 0, 82, 153, 154, 155, 156, 157, 158, 159, 160,
Reid Spencer78720742006-12-02 20:21:22 +00001488 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
Reid Spencer57f28f92006-12-03 07:10:26 +00001489 171, 172, 255, 256, 0, 0, 0, 0, 246, 247,
1490 77, 78, 248, 249, 250, 251, 252, 253, 0, 19,
1491 0, 20, 0, 0, 0, 0, 0, 0, 0, 257,
1492 0, 258, 181, 182, 183, 184, 0, 259, 260, 261,
Reid Spencer78720742006-12-02 20:21:22 +00001493 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
Reid Spencer57f28f92006-12-03 07:10:26 +00001494 199, 200, 201, 254, 0, 0, 0, 0, 340, 0,
1495 0, 341, 0, 342, 0, 0, 343, 0, 0, 0,
Reid Spencer229e9362006-12-02 22:14:11 +00001496 0, 153, 154, 155, 156, 157, 158, 159, 160, 161,
1497 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
Reid Spencer57f28f92006-12-03 07:10:26 +00001498 172, 255, 256, 0, 0, 0, 0, 246, 247, 0,
1499 0, 248, 249, 250, 251, 252, 253, 0, 0, 0,
1500 0, 0, 0, 0, 0, 0, 0, 0, 257, 0,
1501 258, 181, 182, 183, 184, 0, 259, 260, 261, 189,
Reid Spencer229e9362006-12-02 22:14:11 +00001502 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
Reid Spencer57f28f92006-12-03 07:10:26 +00001503 200, 201, 254, 0, 0, 0, 0, 0, 0, 0,
1504 262, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1505 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
1506 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
1507 255, 256, 0, 0, 0, 0, 0, 0, 0, 0,
Reid Spencerfcb5df82006-12-01 22:34:43 +00001508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Reid Spencer57f28f92006-12-03 07:10:26 +00001509 0, 0, 0, 0, 0, 0, 0, 257, 0, 258,
1510 181, 182, 183, 184, 0, 259, 260, 261, 189, 190,
1511 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
1512 201, 148, 0, 0, 0, 0, 0, 0, 0, 262,
1513 0, 0, 149, 0, 0, 0, 0, 0, 0, 0,
1514 0, 0, 0, 150, 151, 0, 0, 0, 0, 0,
1515 0, 0, 0, 0, 0, 0, 0, 0, 0, 152,
1516 0, 0, 0, 153, 154, 155, 156, 157, 158, 159,
1517 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
1518 170, 171, 172, 173, 174, 0, 0, 0, 0, 0,
Reid Spencerfcb5df82006-12-01 22:34:43 +00001519 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Reid Spencer57f28f92006-12-03 07:10:26 +00001520 0, 0, 0, 0, 0, 175, 176, 177, 0, 0,
1521 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
1522 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
1523 198, 199, 200, 201
Reid Spencere7c3c602006-11-30 06:36:44 +00001524};
1525
1526static const short int yycheck[] =
1527{
Reid Spencer57f28f92006-12-03 07:10:26 +00001528 38, 82, 100, 100, 220, 3, 51, 307, 98, 0,
1529 29, 10, 4, 51, 33, 32, 152, 517, 152, 37,
1530 236, 237, 10, 15, 52, 53, 54, 133, 162, 135,
1531 136, 5, 6, 7, 8, 9, 10, 11, 12, 57,
1532 31, 147, 152, 34, 72, 43, 35, 36, 548, 130,
1533 160, 42, 43, 44, 45, 46, 47, 48, 57, 149,
1534 98, 5, 6, 7, 8, 9, 10, 11, 12, 57,
1535 154, 207, 63, 135, 136, 28, 547, 30, 152, 163,
1536 118, 119, 0, 121, 152, 147, 84, 177, 162, 158,
1537 180, 62, 160, 564, 163, 185, 186, 187, 188, 65,
1538 66, 67, 68, 69, 70, 71, 25, 26, 152, 151,
1539 160, 149, 152, 163, 158, 205, 206, 45, 158, 47,
1540 73, 74, 75, 29, 77, 78, 79, 53, 62, 235,
1541 56, 57, 340, 341, 342, 55, 56, 175, 176, 177,
1542 178, 179, 180, 162, 161, 125, 126, 185, 186, 187,
1543 188, 28, 30, 30, 27, 25, 26, 238, 239, 240,
1544 17, 18, 17, 18, 202, 203, 204, 205, 206, 42,
1545 43, 44, 45, 46, 47, 48, 151, 50, 17, 18,
1546 17, 18, 17, 18, 158, 58, 486, 403, 488, 108,
1547 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
1548 119, 120, 121, 309, 242, 102, 103, 104, 105, 106,
1549 107, 317, 318, 319, 158, 77, 78, 18, 151, 151,
1550 151, 118, 119, 120, 121, 18, 151, 156, 18, 18,
1551 154, 154, 277, 30, 324, 18, 30, 60, 30, 277,
1552 157, 157, 154, 152, 18, 18, 120, 309, 18, 18,
1553 288, 152, 18, 21, 21, 317, 318, 319, 5, 6,
1554 7, 8, 9, 10, 11, 12, 21, 305, 155, 64,
1555 376, 377, 378, 154, 154, 356, 152, 322, 384, 154,
1556 39, 30, 154, 154, 322, 323, 324, 154, 154, 154,
1557 396, 397, 156, 154, 154, 30, 386, 155, 388, 389,
1558 390, 152, 152, 152, 394, 152, 152, 152, 152, 152,
1559 152, 152, 152, 30, 376, 377, 378, 15, 154, 15,
1560 154, 152, 384, 156, 152, 152, 432, 433, 152, 30,
1561 152, 437, 18, 439, 396, 397, 152, 443, 37, 152,
1562 152, 152, 152, 449, 450, 451, 152, 152, 386, 387,
1563 388, 389, 390, 152, 352, 39, 394, 395, 154, 18,
1564 57, 152, 30, 18, 152, 152, 152, 152, 152, 15,
1565 432, 433, 152, 154, 152, 437, 414, 439, 484, 485,
1566 152, 443, 57, 158, 155, 491, 39, 449, 450, 451,
1567 152, 156, 152, 15, 500, 152, 152, 155, 152, 152,
1568 152, 152, 440, 493, 494, 495, 15, 155, 158, 155,
1569 155, 155, 155, 155, 155, 155, 155, 155, 456, 517,
1570 517, 527, 484, 485, 155, 155, 155, 155, 152, 491,
1571 15, 15, 104, 104, 104, 525, 255, 104, 500, 545,
1572 104, 256, 480, 43, 24, 483, 415, 130, 50, 414,
1573 548, 548, 29, 235, 3, 493, 494, 495, 41, 575,
1574 499, 499, 440, 420, -1, 527, 572, 573, -1, -1,
1575 -1, 577, -1, -1, 580, -1, -1, -1, -1, -1,
1576 -1, -1, -1, 545, -1, -1, -1, 525, 362, 363,
1577 364, 365, 366, -1, -1, 369, 370, 371, 372, 373,
1578 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1579 572, 573, -1, -1, -1, 577, -1, -1, 580, -1,
1580 -1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1581 12, 13, 14, 15, 16, -1, -1, 19, 20, -1,
1582 -1, -1, -1, -1, 418, 419, 28, -1, 30, -1,
1583 -1, 425, 3, 4, 5, 6, 7, 8, 9, 10,
Reid Spencer229e9362006-12-02 22:14:11 +00001584 11, 12, 13, 14, 15, 16, -1, -1, 19, 20,
1585 -1, -1, -1, -1, -1, -1, -1, 28, -1, 30,
Reid Spencer57f28f92006-12-03 07:10:26 +00001586 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1587 -1, -1, -1, -1, -1, -1, -1, 471, 472, 473,
1588 474, -1, 476, 477, 478, 479, -1, 3, 4, 5,
Reid Spencer229e9362006-12-02 22:14:11 +00001589 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1590 16, -1, -1, 19, 20, -1, -1, -1, -1, -1,
Reid Spencer57f28f92006-12-03 07:10:26 +00001591 504, 505, 28, -1, 30, -1, -1, -1, -1, -1,
1592 -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
Reid Spencer78720742006-12-02 20:21:22 +00001593 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
Reid Spencer57f28f92006-12-03 07:10:26 +00001594 -1, -1, 536, -1, 538, 539, -1, -1, -1, -1,
1595 -1, 153, -1, -1, 156, -1, -1, 159, -1, 161,
1596 162, -1, 3, 4, 5, 6, 7, 8, 9, 10,
1597 11, 12, 13, 14, 15, 16, -1, -1, 19, 20,
1598 -1, -1, 153, -1, -1, 156, -1, 28, 159, 30,
1599 161, 162, -1, -1, -1, -1, -1, -1, -1, 40,
1600 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
1601 13, 14, 15, 16, -1, -1, 19, 20, -1, -1,
1602 -1, -1, -1, -1, -1, 28, -1, 30, -1, -1,
Reid Spencer229e9362006-12-02 22:14:11 +00001603 -1, -1, -1, -1, -1, -1, -1, 153, -1, -1,
1604 156, -1, -1, 159, -1, 161, 3, 4, 5, 6,
Reid Spencer78720742006-12-02 20:21:22 +00001605 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1606 -1, -1, 19, 20, -1, -1, -1, -1, -1, -1,
1607 -1, 28, -1, 30, -1, -1, -1, -1, -1, -1,
Reid Spencer57f28f92006-12-03 07:10:26 +00001608 -1, -1, -1, 40, 3, 4, 5, 6, 7, 8,
1609 9, 10, 11, 12, 13, 14, 15, 16, -1, -1,
1610 19, 20, -1, -1, -1, -1, -1, -1, -1, 28,
1611 -1, 30, 153, -1, -1, 156, -1, -1, 159, -1,
1612 161, 40, 3, 4, 5, 6, 7, 8, 9, 10,
1613 11, 12, 13, 14, 15, 16, -1, -1, 19, 20,
1614 -1, -1, -1, -1, -1, -1, -1, 28, -1, 30,
1615 153, -1, -1, 156, -1, 158, 159, -1, 161, 3,
1616 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
1617 14, 15, 16, -1, -1, 19, 20, -1, -1, -1,
1618 -1, -1, -1, -1, 28, -1, 30, -1, -1, -1,
Reid Spencer229e9362006-12-02 22:14:11 +00001619 -1, -1, -1, -1, -1, -1, 153, -1, -1, 156,
1620 -1, -1, 159, -1, 161, 3, 4, 5, 6, 7,
1621 8, 9, 10, 11, 12, 13, 14, 15, 16, -1,
1622 -1, 19, 20, -1, -1, -1, -1, -1, -1, -1,
Reid Spencer57f28f92006-12-03 07:10:26 +00001623 28, -1, 30, -1, 153, -1, -1, 156, -1, -1,
1624 159, -1, 161, 3, 4, 5, 6, 7, 8, 9,
1625 10, 11, 12, 13, 14, 15, 16, -1, -1, 19,
1626 20, -1, -1, -1, -1, -1, -1, -1, 28, -1,
1627 30, -1, 153, -1, -1, 156, -1, -1, 159, -1,
1628 161, -1, 27, 28, -1, 30, -1, -1, -1, 34,
1629 35, 36, -1, -1, -1, -1, -1, 42, 43, 44,
1630 45, 46, 47, 48, -1, 50, 51, -1, -1, 153,
1631 -1, -1, 156, 58, 59, 159, -1, 161, 63, -1,
1632 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1633 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1634 -1, 19, 20, -1, 22, 23, 24, -1, -1, -1,
Reid Spencer229e9362006-12-02 22:14:11 +00001635 28, -1, 30, -1, -1, 153, -1, -1, 156, -1,
Reid Spencer57f28f92006-12-03 07:10:26 +00001636 -1, 159, -1, 161, -1, -1, -1, -1, -1, -1,
Reid Spencerf2d55322006-12-01 21:52:30 +00001637 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
Reid Spencer229e9362006-12-02 22:14:11 +00001638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
Reid Spencer57f28f92006-12-03 07:10:26 +00001639 -1, -1, -1, 153, -1, -1, 156, -1, -1, 159,
1640 -1, 161, 80, 81, 82, 83, 84, 85, 86, 87,
Reid Spencer78720742006-12-02 20:21:22 +00001641 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
Reid Spencer229e9362006-12-02 22:14:11 +00001642 98, 99, 100, 101, -1, -1, -1, -1, 17, 18,
Reid Spencer57f28f92006-12-03 07:10:26 +00001643 19, 20, 21, 22, 23, 24, 25, 26, -1, 28,
1644 -1, 30, -1, -1, -1, -1, -1, -1, -1, 127,
Reid Spencer229e9362006-12-02 22:14:11 +00001645 -1, 129, 130, 131, 132, 133, -1, 135, 136, 137,
1646 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
Reid Spencer57f28f92006-12-03 07:10:26 +00001647 148, 149, 150, 62, -1, -1, -1, -1, 156, -1,
1648 -1, 159, -1, 161, -1, -1, 164, -1, -1, -1,
Reid Spencer229e9362006-12-02 22:14:11 +00001649 -1, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1650 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
Reid Spencer57f28f92006-12-03 07:10:26 +00001651 99, 100, 101, -1, -1, -1, -1, 17, 18, -1,
1652 -1, 21, 22, 23, 24, 25, 26, -1, -1, -1,
Reid Spencer229e9362006-12-02 22:14:11 +00001653 -1, -1, -1, -1, -1, -1, -1, -1, 127, -1,
1654 129, 130, 131, 132, 133, -1, 135, 136, 137, 138,
1655 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
Reid Spencer57f28f92006-12-03 07:10:26 +00001656 149, 150, 62, -1, -1, -1, -1, -1, -1, -1,
1657 159, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1658 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1659 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1660 100, 101, -1, -1, -1, -1, -1, -1, -1, -1,
Reid Spencerfcb5df82006-12-01 22:34:43 +00001661 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
Reid Spencer57f28f92006-12-03 07:10:26 +00001662 -1, -1, -1, -1, -1, -1, -1, 127, -1, 129,
1663 130, 131, 132, 133, -1, 135, 136, 137, 138, 139,
1664 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
1665 150, 38, -1, -1, -1, -1, -1, -1, -1, 159,
1666 -1, -1, 49, -1, -1, -1, -1, -1, -1, -1,
1667 -1, -1, -1, 60, 61, -1, -1, -1, -1, -1,
1668 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
1669 -1, -1, -1, 80, 81, 82, 83, 84, 85, 86,
1670 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
1671 97, 98, 99, 100, 101, -1, -1, -1, -1, -1,
Reid Spencerfcb5df82006-12-01 22:34:43 +00001672 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
Reid Spencer57f28f92006-12-03 07:10:26 +00001673 -1, -1, -1, -1, -1, 122, 123, 124, -1, -1,
1674 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
1675 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
1676 147, 148, 149, 150
Reid Spencere7c3c602006-11-30 06:36:44 +00001677};
1678
1679/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1680 symbol of state STATE-NUM. */
1681static const unsigned char yystos[] =
1682{
Reid Spencer229e9362006-12-02 22:14:11 +00001683 0, 199, 200, 202, 0, 31, 34, 42, 43, 44,
1684 45, 46, 47, 48, 63, 180, 215, 217, 219, 28,
1685 30, 51, 59, 63, 179, 208, 219, 45, 47, 218,
1686 62, 65, 66, 67, 68, 69, 70, 71, 181, 213,
1687 29, 225, 226, 227, 52, 53, 54, 72, 205, 151,
1688 62, 27, 45, 47, 50, 58, 180, 201, 151, 213,
1689 30, 203, 18, 3, 4, 5, 6, 7, 8, 9,
1690 10, 11, 12, 13, 14, 15, 16, 19, 20, 153,
1691 156, 159, 161, 166, 188, 189, 190, 191, 192, 208,
1692 222, 32, 161, 214, 33, 162, 216, 226, 73, 74,
1693 75, 77, 78, 79, 179, 228, 229, 231, 151, 151,
1694 151, 151, 156, 206, 203, 188, 35, 36, 198, 198,
1695 198, 198, 18, 18, 18, 3, 162, 192, 193, 208,
1696 154, 163, 3, 190, 224, 4, 15, 5, 6, 7,
1697 8, 9, 10, 11, 12, 175, 176, 177, 38, 49,
Reid Spencer78720742006-12-02 20:21:22 +00001698 60, 61, 76, 80, 81, 82, 83, 84, 85, 86,
1699 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
Reid Spencer229e9362006-12-02 22:14:11 +00001700 97, 98, 99, 100, 101, 122, 123, 124, 127, 128,
1701 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
1702 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
Reid Spencer57f28f92006-12-03 07:10:26 +00001703 149, 150, 168, 169, 170, 173, 174, 235, 236, 238,
1704 239, 30, 55, 56, 204, 18, 30, 30, 207, 190,
1705 190, 4, 5, 6, 7, 8, 9, 10, 11, 12,
1706 13, 14, 175, 176, 178, 190, 195, 190, 157, 157,
1707 152, 162, 154, 40, 193, 194, 17, 18, 21, 22,
1708 23, 24, 25, 26, 62, 100, 101, 127, 129, 135,
1709 136, 137, 159, 168, 169, 170, 173, 174, 196, 221,
1710 222, 223, 223, 223, 223, 224, 60, 181, 102, 103,
1711 104, 105, 106, 107, 118, 119, 120, 121, 171, 25,
1712 26, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1713 117, 118, 119, 120, 121, 172, 190, 190, 224, 190,
1714 190, 232, 224, 224, 224, 224, 224, 190, 190, 190,
1715 224, 224, 181, 125, 126, 152, 158, 152, 186, 186,
1716 25, 26, 17, 18, 167, 18, 21, 22, 23, 24,
1717 156, 159, 161, 164, 196, 222, 186, 186, 192, 192,
1718 192, 40, 190, 210, 211, 212, 152, 155, 64, 220,
1719 171, 172, 154, 154, 154, 154, 154, 195, 197, 154,
1720 154, 154, 154, 154, 152, 152, 188, 190, 190, 152,
Reid Spencer229e9362006-12-02 22:14:11 +00001721 183, 152, 183, 223, 156, 152, 152, 152, 152, 152,
Reid Spencer57f28f92006-12-03 07:10:26 +00001722 152, 223, 223, 223, 152, 39, 188, 190, 224, 30,
1723 37, 57, 184, 187, 158, 197, 197, 162, 197, 30,
1724 158, 160, 208, 209, 152, 155, 40, 30, 154, 154,
1725 195, 195, 195, 195, 195, 152, 160, 195, 195, 195,
1726 195, 195, 15, 15, 223, 223, 223, 10, 57, 10,
1727 152, 237, 223, 156, 224, 190, 224, 224, 224, 152,
1728 152, 152, 224, 190, 223, 223, 152, 30, 18, 186,
1729 158, 160, 162, 40, 210, 184, 185, 152, 195, 195,
1730 237, 152, 152, 152, 152, 195, 152, 152, 152, 152,
1731 39, 223, 223, 154, 152, 152, 223, 18, 223, 224,
1732 233, 152, 223, 152, 152, 152, 223, 223, 223, 154,
1733 190, 57, 182, 30, 152, 152, 155, 195, 195, 195,
1734 195, 195, 195, 195, 195, 190, 152, 156, 233, 234,
1735 223, 223, 152, 183, 183, 152, 223, 152, 224, 224,
1736 224, 234, 223, 18, 195, 195, 152, 155, 152, 152,
1737 155, 155, 155, 155, 155, 15, 158, 177, 230, 155,
1738 155, 155, 224, 158, 223, 155, 155, 155, 195, 195,
1739 195, 223, 221, 158, 177, 39, 158, 155, 155, 155,
1740 152, 221, 15, 15, 152, 223, 223, 15, 228, 223,
1741 15, 223
Reid Spencere7c3c602006-11-30 06:36:44 +00001742};
1743
1744#define yyerrok (yyerrstatus = 0)
1745#define yyclearin (yychar = YYEMPTY)
1746#define YYEMPTY (-2)
1747#define YYEOF 0
1748
1749#define YYACCEPT goto yyacceptlab
1750#define YYABORT goto yyabortlab
1751#define YYERROR goto yyerrorlab
1752
1753
1754/* Like YYERROR except do call yyerror. This remains here temporarily
1755 to ease the transition to the new meaning of YYERROR, for GCC.
1756 Once GCC version 2 has supplanted version 1, this can go. */
1757
1758#define YYFAIL goto yyerrlab
1759
1760#define YYRECOVERING() (!!yyerrstatus)
1761
1762#define YYBACKUP(Token, Value) \
1763do \
1764 if (yychar == YYEMPTY && yylen == 1) \
1765 { \
1766 yychar = (Token); \
1767 yylval = (Value); \
1768 yytoken = YYTRANSLATE (yychar); \
1769 YYPOPSTACK; \
1770 goto yybackup; \
1771 } \
1772 else \
1773 { \
1774 yyerror (YY_("syntax error: cannot back up")); \
1775 YYERROR; \
1776 } \
1777while (0)
1778
1779
1780#define YYTERROR 1
1781#define YYERRCODE 256
1782
1783
1784/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1785 If N is 0, then set CURRENT to the empty location which ends
1786 the previous symbol: RHS[0] (always defined). */
1787
1788#define YYRHSLOC(Rhs, K) ((Rhs)[K])
1789#ifndef YYLLOC_DEFAULT
1790# define YYLLOC_DEFAULT(Current, Rhs, N) \
1791 do \
1792 if (N) \
1793 { \
1794 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
1795 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
1796 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
1797 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
1798 } \
1799 else \
1800 { \
1801 (Current).first_line = (Current).last_line = \
1802 YYRHSLOC (Rhs, 0).last_line; \
1803 (Current).first_column = (Current).last_column = \
1804 YYRHSLOC (Rhs, 0).last_column; \
1805 } \
1806 while (0)
1807#endif
1808
1809
1810/* YY_LOCATION_PRINT -- Print the location on the stream.
1811 This macro was not mandated originally: define only if we know
1812 we won't break user code: when these are the locations we know. */
1813
1814#ifndef YY_LOCATION_PRINT
1815# if YYLTYPE_IS_TRIVIAL
1816# define YY_LOCATION_PRINT(File, Loc) \
1817 fprintf (File, "%d.%d-%d.%d", \
1818 (Loc).first_line, (Loc).first_column, \
1819 (Loc).last_line, (Loc).last_column)
1820# else
1821# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1822# endif
1823#endif
1824
1825
1826/* YYLEX -- calling `yylex' with the right arguments. */
1827
1828#ifdef YYLEX_PARAM
1829# define YYLEX yylex (YYLEX_PARAM)
1830#else
1831# define YYLEX yylex ()
1832#endif
1833
1834/* Enable debugging if requested. */
1835#if YYDEBUG
1836
1837# ifndef YYFPRINTF
1838# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1839# define YYFPRINTF fprintf
1840# endif
1841
1842# define YYDPRINTF(Args) \
1843do { \
1844 if (yydebug) \
1845 YYFPRINTF Args; \
1846} while (0)
1847
1848# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1849do { \
1850 if (yydebug) \
1851 { \
1852 YYFPRINTF (stderr, "%s ", Title); \
1853 yysymprint (stderr, \
1854 Type, Value); \
1855 YYFPRINTF (stderr, "\n"); \
1856 } \
1857} while (0)
1858
1859/*------------------------------------------------------------------.
1860| yy_stack_print -- Print the state stack from its BOTTOM up to its |
1861| TOP (included). |
1862`------------------------------------------------------------------*/
1863
1864#if defined (__STDC__) || defined (__cplusplus)
1865static void
1866yy_stack_print (short int *bottom, short int *top)
1867#else
1868static void
1869yy_stack_print (bottom, top)
1870 short int *bottom;
1871 short int *top;
1872#endif
1873{
1874 YYFPRINTF (stderr, "Stack now");
1875 for (/* Nothing. */; bottom <= top; ++bottom)
1876 YYFPRINTF (stderr, " %d", *bottom);
1877 YYFPRINTF (stderr, "\n");
1878}
1879
1880# define YY_STACK_PRINT(Bottom, Top) \
1881do { \
1882 if (yydebug) \
1883 yy_stack_print ((Bottom), (Top)); \
1884} while (0)
1885
1886
1887/*------------------------------------------------.
1888| Report that the YYRULE is going to be reduced. |
1889`------------------------------------------------*/
1890
1891#if defined (__STDC__) || defined (__cplusplus)
1892static void
1893yy_reduce_print (int yyrule)
1894#else
1895static void
1896yy_reduce_print (yyrule)
1897 int yyrule;
1898#endif
1899{
1900 int yyi;
1901 unsigned long int yylno = yyrline[yyrule];
1902 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
1903 yyrule - 1, yylno);
1904 /* Print the symbols being reduced, and their result. */
1905 for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
1906 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
1907 YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
1908}
1909
1910# define YY_REDUCE_PRINT(Rule) \
1911do { \
1912 if (yydebug) \
1913 yy_reduce_print (Rule); \
1914} while (0)
1915
1916/* Nonzero means print parse trace. It is left uninitialized so that
1917 multiple parsers can coexist. */
1918int yydebug;
1919#else /* !YYDEBUG */
1920# define YYDPRINTF(Args)
1921# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1922# define YY_STACK_PRINT(Bottom, Top)
1923# define YY_REDUCE_PRINT(Rule)
1924#endif /* !YYDEBUG */
1925
1926
1927/* YYINITDEPTH -- initial size of the parser's stacks. */
1928#ifndef YYINITDEPTH
1929# define YYINITDEPTH 200
1930#endif
1931
1932/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1933 if the built-in stack extension method is used).
1934
1935 Do not make this value too large; the results are undefined if
1936 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1937 evaluated with infinite-precision integer arithmetic. */
1938
1939#ifndef YYMAXDEPTH
1940# define YYMAXDEPTH 10000
1941#endif
1942
1943
1944
1945#if YYERROR_VERBOSE
1946
1947# ifndef yystrlen
1948# if defined (__GLIBC__) && defined (_STRING_H)
1949# define yystrlen strlen
1950# else
1951/* Return the length of YYSTR. */
1952static YYSIZE_T
1953# if defined (__STDC__) || defined (__cplusplus)
1954yystrlen (const char *yystr)
1955# else
1956yystrlen (yystr)
1957 const char *yystr;
1958# endif
1959{
1960 const char *yys = yystr;
1961
1962 while (*yys++ != '\0')
1963 continue;
1964
1965 return yys - yystr - 1;
1966}
1967# endif
1968# endif
1969
1970# ifndef yystpcpy
1971# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1972# define yystpcpy stpcpy
1973# else
1974/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1975 YYDEST. */
1976static char *
1977# if defined (__STDC__) || defined (__cplusplus)
1978yystpcpy (char *yydest, const char *yysrc)
1979# else
1980yystpcpy (yydest, yysrc)
1981 char *yydest;
1982 const char *yysrc;
1983# endif
1984{
1985 char *yyd = yydest;
1986 const char *yys = yysrc;
1987
1988 while ((*yyd++ = *yys++) != '\0')
1989 continue;
1990
1991 return yyd - 1;
1992}
1993# endif
1994# endif
1995
1996# ifndef yytnamerr
1997/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1998 quotes and backslashes, so that it's suitable for yyerror. The
1999 heuristic is that double-quoting is unnecessary unless the string
2000 contains an apostrophe, a comma, or backslash (other than
2001 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2002 null, do not copy; instead, return the length of what the result
2003 would have been. */
2004static YYSIZE_T
2005yytnamerr (char *yyres, const char *yystr)
2006{
2007 if (*yystr == '"')
2008 {
2009 size_t yyn = 0;
2010 char const *yyp = yystr;
2011
2012 for (;;)
2013 switch (*++yyp)
2014 {
2015 case '\'':
2016 case ',':
2017 goto do_not_strip_quotes;
2018
2019 case '\\':
2020 if (*++yyp != '\\')
2021 goto do_not_strip_quotes;
2022 /* Fall through. */
2023 default:
2024 if (yyres)
2025 yyres[yyn] = *yyp;
2026 yyn++;
2027 break;
2028
2029 case '"':
2030 if (yyres)
2031 yyres[yyn] = '\0';
2032 return yyn;
2033 }
2034 do_not_strip_quotes: ;
2035 }
2036
2037 if (! yyres)
2038 return yystrlen (yystr);
2039
2040 return yystpcpy (yyres, yystr) - yyres;
2041}
2042# endif
2043
2044#endif /* YYERROR_VERBOSE */
2045
2046
2047
2048#if YYDEBUG
2049/*--------------------------------.
2050| Print this symbol on YYOUTPUT. |
2051`--------------------------------*/
2052
2053#if defined (__STDC__) || defined (__cplusplus)
2054static void
2055yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
2056#else
2057static void
2058yysymprint (yyoutput, yytype, yyvaluep)
2059 FILE *yyoutput;
2060 int yytype;
2061 YYSTYPE *yyvaluep;
2062#endif
2063{
2064 /* Pacify ``unused variable'' warnings. */
2065 (void) yyvaluep;
2066
2067 if (yytype < YYNTOKENS)
2068 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2069 else
2070 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2071
2072
2073# ifdef YYPRINT
2074 if (yytype < YYNTOKENS)
2075 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2076# endif
2077 switch (yytype)
2078 {
2079 default:
2080 break;
2081 }
2082 YYFPRINTF (yyoutput, ")");
2083}
2084
2085#endif /* ! YYDEBUG */
2086/*-----------------------------------------------.
2087| Release the memory associated to this symbol. |
2088`-----------------------------------------------*/
2089
2090#if defined (__STDC__) || defined (__cplusplus)
2091static void
2092yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2093#else
2094static void
2095yydestruct (yymsg, yytype, yyvaluep)
2096 const char *yymsg;
2097 int yytype;
2098 YYSTYPE *yyvaluep;
2099#endif
2100{
2101 /* Pacify ``unused variable'' warnings. */
2102 (void) yyvaluep;
2103
2104 if (!yymsg)
2105 yymsg = "Deleting";
2106 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2107
2108 switch (yytype)
2109 {
2110
2111 default:
2112 break;
2113 }
2114}
2115
2116
2117/* Prevent warnings from -Wmissing-prototypes. */
2118
2119#ifdef YYPARSE_PARAM
2120# if defined (__STDC__) || defined (__cplusplus)
2121int yyparse (void *YYPARSE_PARAM);
2122# else
2123int yyparse ();
2124# endif
2125#else /* ! YYPARSE_PARAM */
2126#if defined (__STDC__) || defined (__cplusplus)
2127int yyparse (void);
2128#else
2129int yyparse ();
2130#endif
2131#endif /* ! YYPARSE_PARAM */
2132
2133
2134
2135/* The look-ahead symbol. */
2136int yychar;
2137
2138/* The semantic value of the look-ahead symbol. */
2139YYSTYPE yylval;
2140
2141/* Number of syntax errors so far. */
2142int yynerrs;
2143
2144
2145
2146/*----------.
2147| yyparse. |
2148`----------*/
2149
2150#ifdef YYPARSE_PARAM
2151# if defined (__STDC__) || defined (__cplusplus)
2152int yyparse (void *YYPARSE_PARAM)
2153# else
2154int yyparse (YYPARSE_PARAM)
2155 void *YYPARSE_PARAM;
2156# endif
2157#else /* ! YYPARSE_PARAM */
2158#if defined (__STDC__) || defined (__cplusplus)
2159int
2160yyparse (void)
2161#else
2162int
2163yyparse ()
2164
2165#endif
2166#endif
2167{
2168
2169 int yystate;
2170 int yyn;
2171 int yyresult;
2172 /* Number of tokens to shift before error messages enabled. */
2173 int yyerrstatus;
2174 /* Look-ahead token as an internal (translated) token number. */
2175 int yytoken = 0;
2176
2177 /* Three stacks and their tools:
2178 `yyss': related to states,
2179 `yyvs': related to semantic values,
2180 `yyls': related to locations.
2181
2182 Refer to the stacks thru separate pointers, to allow yyoverflow
2183 to reallocate them elsewhere. */
2184
2185 /* The state stack. */
2186 short int yyssa[YYINITDEPTH];
2187 short int *yyss = yyssa;
2188 short int *yyssp;
2189
2190 /* The semantic value stack. */
2191 YYSTYPE yyvsa[YYINITDEPTH];
2192 YYSTYPE *yyvs = yyvsa;
2193 YYSTYPE *yyvsp;
2194
2195
2196
2197#define YYPOPSTACK (yyvsp--, yyssp--)
2198
2199 YYSIZE_T yystacksize = YYINITDEPTH;
2200
2201 /* The variables used to return semantic value and location from the
2202 action routines. */
2203 YYSTYPE yyval;
2204
2205
2206 /* When reducing, the number of symbols on the RHS of the reduced
2207 rule. */
2208 int yylen;
2209
2210 YYDPRINTF ((stderr, "Starting parse\n"));
2211
2212 yystate = 0;
2213 yyerrstatus = 0;
2214 yynerrs = 0;
2215 yychar = YYEMPTY; /* Cause a token to be read. */
2216
2217 /* Initialize stack pointers.
2218 Waste one element of value and location stack
2219 so that they stay on the same level as the state stack.
2220 The wasted elements are never initialized. */
2221
2222 yyssp = yyss;
2223 yyvsp = yyvs;
2224
2225 goto yysetstate;
2226
2227/*------------------------------------------------------------.
2228| yynewstate -- Push a new state, which is found in yystate. |
2229`------------------------------------------------------------*/
2230 yynewstate:
2231 /* In all cases, when you get here, the value and location stacks
2232 have just been pushed. so pushing a state here evens the stacks.
2233 */
2234 yyssp++;
2235
2236 yysetstate:
2237 *yyssp = yystate;
2238
2239 if (yyss + yystacksize - 1 <= yyssp)
2240 {
2241 /* Get the current used size of the three stacks, in elements. */
2242 YYSIZE_T yysize = yyssp - yyss + 1;
2243
2244#ifdef yyoverflow
2245 {
2246 /* Give user a chance to reallocate the stack. Use copies of
2247 these so that the &'s don't force the real ones into
2248 memory. */
2249 YYSTYPE *yyvs1 = yyvs;
2250 short int *yyss1 = yyss;
2251
2252
2253 /* Each stack pointer address is followed by the size of the
2254 data in use in that stack, in bytes. This used to be a
2255 conditional around just the two extra args, but that might
2256 be undefined if yyoverflow is a macro. */
2257 yyoverflow (YY_("memory exhausted"),
2258 &yyss1, yysize * sizeof (*yyssp),
2259 &yyvs1, yysize * sizeof (*yyvsp),
2260
2261 &yystacksize);
2262
2263 yyss = yyss1;
2264 yyvs = yyvs1;
2265 }
2266#else /* no yyoverflow */
2267# ifndef YYSTACK_RELOCATE
2268 goto yyexhaustedlab;
2269# else
2270 /* Extend the stack our own way. */
2271 if (YYMAXDEPTH <= yystacksize)
2272 goto yyexhaustedlab;
2273 yystacksize *= 2;
2274 if (YYMAXDEPTH < yystacksize)
2275 yystacksize = YYMAXDEPTH;
2276
2277 {
2278 short int *yyss1 = yyss;
2279 union yyalloc *yyptr =
2280 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2281 if (! yyptr)
2282 goto yyexhaustedlab;
2283 YYSTACK_RELOCATE (yyss);
2284 YYSTACK_RELOCATE (yyvs);
2285
2286# undef YYSTACK_RELOCATE
2287 if (yyss1 != yyssa)
2288 YYSTACK_FREE (yyss1);
2289 }
2290# endif
2291#endif /* no yyoverflow */
2292
2293 yyssp = yyss + yysize - 1;
2294 yyvsp = yyvs + yysize - 1;
2295
2296
2297 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2298 (unsigned long int) yystacksize));
2299
2300 if (yyss + yystacksize - 1 <= yyssp)
2301 YYABORT;
2302 }
2303
2304 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2305
2306 goto yybackup;
2307
2308/*-----------.
2309| yybackup. |
2310`-----------*/
2311yybackup:
2312
2313/* Do appropriate processing given the current state. */
2314/* Read a look-ahead token if we need one and don't already have one. */
2315/* yyresume: */
2316
2317 /* First try to decide what to do without reference to look-ahead token. */
2318
2319 yyn = yypact[yystate];
2320 if (yyn == YYPACT_NINF)
2321 goto yydefault;
2322
2323 /* Not known => get a look-ahead token if don't already have one. */
2324
2325 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
2326 if (yychar == YYEMPTY)
2327 {
2328 YYDPRINTF ((stderr, "Reading a token: "));
2329 yychar = YYLEX;
2330 }
2331
2332 if (yychar <= YYEOF)
2333 {
2334 yychar = yytoken = YYEOF;
2335 YYDPRINTF ((stderr, "Now at end of input.\n"));
2336 }
2337 else
2338 {
2339 yytoken = YYTRANSLATE (yychar);
2340 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2341 }
2342
2343 /* If the proper action on seeing token YYTOKEN is to reduce or to
2344 detect an error, take that action. */
2345 yyn += yytoken;
2346 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2347 goto yydefault;
2348 yyn = yytable[yyn];
2349 if (yyn <= 0)
2350 {
2351 if (yyn == 0 || yyn == YYTABLE_NINF)
2352 goto yyerrlab;
2353 yyn = -yyn;
2354 goto yyreduce;
2355 }
2356
2357 if (yyn == YYFINAL)
2358 YYACCEPT;
2359
2360 /* Shift the look-ahead token. */
2361 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2362
2363 /* Discard the token being shifted unless it is eof. */
2364 if (yychar != YYEOF)
2365 yychar = YYEMPTY;
2366
2367 *++yyvsp = yylval;
2368
2369
2370 /* Count tokens shifted since error; after three, turn off error
2371 status. */
2372 if (yyerrstatus)
2373 yyerrstatus--;
2374
2375 yystate = yyn;
2376 goto yynewstate;
2377
2378
2379/*-----------------------------------------------------------.
2380| yydefault -- do the default action for the current state. |
2381`-----------------------------------------------------------*/
2382yydefault:
2383 yyn = yydefact[yystate];
2384 if (yyn == 0)
2385 goto yyerrlab;
2386 goto yyreduce;
2387
2388
2389/*-----------------------------.
2390| yyreduce -- Do a reduction. |
2391`-----------------------------*/
2392yyreduce:
2393 /* yyn is the number of a rule to reduce with. */
2394 yylen = yyr2[yyn];
2395
2396 /* If YYLEN is nonzero, implement the default value of the action:
2397 `$$ = $1'.
2398
2399 Otherwise, the following line sets YYVAL to garbage.
2400 This behavior is undocumented and Bison
2401 users should not rely upon it. Assigning to YYVAL
2402 unconditionally makes the parser a bit smaller, and it avoids a
2403 GCC warning that YYVAL may be used uninitialized. */
2404 yyval = yyvsp[1-yylen];
2405
2406
2407 YY_REDUCE_PRINT (yyn);
2408 switch (yyn)
2409 {
Reid Spencer57f28f92006-12-03 07:10:26 +00002410 case 81:
Reid Spencer187ccf82006-12-09 16:57:22 +00002411#line 373 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002412 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002413 (yyval.String) = (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002414 ;}
2415 break;
2416
Reid Spencer57f28f92006-12-03 07:10:26 +00002417 case 82:
Reid Spencer187ccf82006-12-09 16:57:22 +00002418#line 376 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002419 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002420 (yyval.String) = new std::string("");
Reid Spencere7c3c602006-11-30 06:36:44 +00002421 ;}
2422 break;
2423
Reid Spencer57f28f92006-12-03 07:10:26 +00002424 case 90:
Reid Spencer187ccf82006-12-09 16:57:22 +00002425#line 383 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002426 { (yyval.String) = new std::string(""); ;}
2427 break;
2428
Reid Spencer57f28f92006-12-03 07:10:26 +00002429 case 97:
Reid Spencer187ccf82006-12-09 16:57:22 +00002430#line 388 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer16244f42006-12-01 21:10:07 +00002431 {
Reid Spencerf2d55322006-12-01 21:52:30 +00002432 *(yyvsp[-1].String) += *(yyvsp[0].String);
2433 delete (yyvsp[0].String);
Reid Spencer16244f42006-12-01 21:10:07 +00002434 (yyval.String) = (yyvsp[-1].String);
2435 ;}
2436 break;
2437
Reid Spencer57f28f92006-12-03 07:10:26 +00002438 case 98:
Reid Spencer187ccf82006-12-09 16:57:22 +00002439#line 393 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002440 { (yyval.String) = new std::string(""); ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00002441 break;
2442
Reid Spencer57f28f92006-12-03 07:10:26 +00002443 case 99:
Reid Spencer187ccf82006-12-09 16:57:22 +00002444#line 398 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerfcb5df82006-12-01 22:34:43 +00002445 { (yyval.String) = new std::string(); ;}
2446 break;
2447
Reid Spencer57f28f92006-12-03 07:10:26 +00002448 case 100:
Reid Spencer187ccf82006-12-09 16:57:22 +00002449#line 399 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002450 { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;}
2451 break;
2452
Reid Spencer57f28f92006-12-03 07:10:26 +00002453 case 101:
Reid Spencer187ccf82006-12-09 16:57:22 +00002454#line 402 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002455 { (yyval.String) = new std::string(); ;}
2456 break;
2457
Reid Spencer57f28f92006-12-03 07:10:26 +00002458 case 102:
Reid Spencer187ccf82006-12-09 16:57:22 +00002459#line 403 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002460 {
2461 (yyvsp[-1].String)->insert(0, ", ");
Reid Spencerf2d55322006-12-01 21:52:30 +00002462 *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
2463 delete (yyvsp[0].String);
Reid Spencere77e35e2006-12-01 20:26:20 +00002464 (yyval.String) = (yyvsp[-1].String);
2465 ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00002466 break;
2467
Reid Spencer57f28f92006-12-03 07:10:26 +00002468 case 103:
Reid Spencer187ccf82006-12-09 16:57:22 +00002469#line 411 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002470 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002471 *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
2472 delete (yyvsp[0].String);
2473 (yyval.String) = (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002474 ;}
2475 break;
2476
Reid Spencer57f28f92006-12-03 07:10:26 +00002477 case 104:
Reid Spencer187ccf82006-12-09 16:57:22 +00002478#line 417 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerfcb5df82006-12-01 22:34:43 +00002479 { (yyval.String) = new std::string(); ;}
2480 break;
2481
Reid Spencer57f28f92006-12-03 07:10:26 +00002482 case 106:
Reid Spencer187ccf82006-12-09 16:57:22 +00002483#line 421 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002484 { (yyval.String) = new std::string(); ;}
2485 break;
2486
Reid Spencer57f28f92006-12-03 07:10:26 +00002487 case 107:
Reid Spencer187ccf82006-12-09 16:57:22 +00002488#line 422 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002489 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002490 (yyvsp[-1].String)->insert(0, ", ");
2491 if (!(yyvsp[0].String)->empty())
2492 *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
2493 delete (yyvsp[0].String);
2494 (yyval.String) = (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002495 ;}
2496 break;
2497
Reid Spencer57f28f92006-12-03 07:10:26 +00002498 case 109:
Reid Spencer187ccf82006-12-09 16:57:22 +00002499#line 432 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002500 {
Reid Spencerf2d55322006-12-01 21:52:30 +00002501 *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
2502 delete (yyvsp[0].String);
Reid Spencere77e35e2006-12-01 20:26:20 +00002503 (yyval.String) = (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002504 ;}
2505 break;
2506
Reid Spencer57f28f92006-12-03 07:10:26 +00002507 case 127:
Reid Spencer187ccf82006-12-09 16:57:22 +00002508#line 454 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002509 {
Reid Spencera50d5962006-12-02 04:11:07 +00002510 (yyval.Type).newTy = (yyvsp[0].String);
2511 (yyval.Type).oldTy = OpaqueTy;
2512 ;}
2513 break;
2514
Reid Spencer57f28f92006-12-03 07:10:26 +00002515 case 128:
Reid Spencer187ccf82006-12-09 16:57:22 +00002516#line 458 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencera50d5962006-12-02 04:11:07 +00002517 {
2518 (yyval.Type).newTy = (yyvsp[0].String);
2519 (yyval.Type).oldTy = UnresolvedTy;
2520 ;}
Reid Spencere77e35e2006-12-01 20:26:20 +00002521 break;
2522
Reid Spencer57f28f92006-12-03 07:10:26 +00002523 case 129:
Reid Spencer187ccf82006-12-09 16:57:22 +00002524#line 462 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002525 {
2526 (yyval.Type) = (yyvsp[0].Type);
2527 ;}
2528 break;
2529
Reid Spencer57f28f92006-12-03 07:10:26 +00002530 case 130:
Reid Spencer187ccf82006-12-09 16:57:22 +00002531#line 465 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002532 { // Type UpReference
Reid Spencerf2d55322006-12-01 21:52:30 +00002533 (yyvsp[0].String)->insert(0, "\\");
2534 (yyval.Type).newTy = (yyvsp[0].String);
Reid Spencera50d5962006-12-02 04:11:07 +00002535 (yyval.Type).oldTy = NumericTy;
Reid Spencere77e35e2006-12-01 20:26:20 +00002536 ;}
2537 break;
2538
Reid Spencer57f28f92006-12-03 07:10:26 +00002539 case 131:
Reid Spencer187ccf82006-12-09 16:57:22 +00002540#line 470 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002541 { // Function derived type?
2542 *(yyvsp[-3].Type).newTy += "( " + *(yyvsp[-1].String) + " )";
2543 delete (yyvsp[-1].String);
2544 (yyval.Type).newTy = (yyvsp[-3].Type).newTy;
2545 (yyval.Type).oldTy = FunctionTy;
2546 ;}
2547 break;
2548
Reid Spencer57f28f92006-12-03 07:10:26 +00002549 case 132:
Reid Spencer187ccf82006-12-09 16:57:22 +00002550#line 476 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002551 { // Sized array type?
Reid Spencerf2d55322006-12-01 21:52:30 +00002552 (yyvsp[-3].String)->insert(0,"[ ");
2553 *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " ]";
Reid Spencere77e35e2006-12-01 20:26:20 +00002554 delete (yyvsp[-1].Type).newTy;
Reid Spencerf2d55322006-12-01 21:52:30 +00002555 (yyval.Type).newTy = (yyvsp[-3].String);
Reid Spencere77e35e2006-12-01 20:26:20 +00002556 (yyval.Type).oldTy = ArrayTy;
Reid Spencer78720742006-12-02 20:21:22 +00002557 (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy;
Reid Spencere7c3c602006-11-30 06:36:44 +00002558 ;}
2559 break;
2560
Reid Spencer57f28f92006-12-03 07:10:26 +00002561 case 133:
Reid Spencer187ccf82006-12-09 16:57:22 +00002562#line 484 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002563 { // Packed array type?
Reid Spencerf2d55322006-12-01 21:52:30 +00002564 (yyvsp[-3].String)->insert(0,"< ");
2565 *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " >";
Reid Spencere77e35e2006-12-01 20:26:20 +00002566 delete (yyvsp[-1].Type).newTy;
Reid Spencerf2d55322006-12-01 21:52:30 +00002567 (yyval.Type).newTy = (yyvsp[-3].String);
Reid Spencere77e35e2006-12-01 20:26:20 +00002568 (yyval.Type).oldTy = PackedTy;
Reid Spencer78720742006-12-02 20:21:22 +00002569 (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy;
Reid Spencere7c3c602006-11-30 06:36:44 +00002570 ;}
2571 break;
2572
Reid Spencer57f28f92006-12-03 07:10:26 +00002573 case 134:
Reid Spencer187ccf82006-12-09 16:57:22 +00002574#line 492 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002575 { // Structure type?
2576 (yyvsp[-1].String)->insert(0, "{ ");
2577 *(yyvsp[-1].String) += " }";
2578 (yyval.Type).newTy = (yyvsp[-1].String);
2579 (yyval.Type).oldTy = StructTy;
Reid Spencere7c3c602006-11-30 06:36:44 +00002580 ;}
2581 break;
2582
Reid Spencer57f28f92006-12-03 07:10:26 +00002583 case 135:
Reid Spencer187ccf82006-12-09 16:57:22 +00002584#line 498 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002585 { // Empty structure type?
Reid Spencer0b7e5072006-12-01 22:42:01 +00002586 (yyval.Type).newTy = new std::string("{}");
Reid Spencere77e35e2006-12-01 20:26:20 +00002587 (yyval.Type).oldTy = StructTy;
Reid Spencere7c3c602006-11-30 06:36:44 +00002588 ;}
2589 break;
2590
Reid Spencer57f28f92006-12-03 07:10:26 +00002591 case 136:
Reid Spencer187ccf82006-12-09 16:57:22 +00002592#line 502 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002593 { // Pointer type?
2594 *(yyvsp[-1].Type).newTy += '*';
Reid Spencer78720742006-12-02 20:21:22 +00002595 (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy;
Reid Spencere77e35e2006-12-01 20:26:20 +00002596 (yyvsp[-1].Type).oldTy = PointerTy;
2597 (yyval.Type) = (yyvsp[-1].Type);
Reid Spencere7c3c602006-11-30 06:36:44 +00002598 ;}
2599 break;
2600
Reid Spencer57f28f92006-12-03 07:10:26 +00002601 case 137:
Reid Spencer187ccf82006-12-09 16:57:22 +00002602#line 513 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002603 {
2604 (yyval.String) = (yyvsp[0].Type).newTy;
Reid Spencere7c3c602006-11-30 06:36:44 +00002605 ;}
2606 break;
2607
Reid Spencer57f28f92006-12-03 07:10:26 +00002608 case 138:
Reid Spencer187ccf82006-12-09 16:57:22 +00002609#line 516 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002610 {
2611 *(yyvsp[-2].String) += ", " + *(yyvsp[0].Type).newTy;
2612 delete (yyvsp[0].Type).newTy;
2613 (yyval.String) = (yyvsp[-2].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002614 ;}
2615 break;
2616
Reid Spencer57f28f92006-12-03 07:10:26 +00002617 case 140:
Reid Spencer187ccf82006-12-09 16:57:22 +00002618#line 525 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002619 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002620 *(yyvsp[-2].String) += ", ...";
2621 delete (yyvsp[0].String);
2622 (yyval.String) = (yyvsp[-2].String);
2623 ;}
2624 break;
2625
Reid Spencer57f28f92006-12-03 07:10:26 +00002626 case 141:
Reid Spencer187ccf82006-12-09 16:57:22 +00002627#line 530 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002628 {
2629 (yyval.String) = (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002630 ;}
2631 break;
2632
Reid Spencer57f28f92006-12-03 07:10:26 +00002633 case 142:
Reid Spencer187ccf82006-12-09 16:57:22 +00002634#line 533 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002635 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002636 (yyval.String) = new std::string();
Reid Spencere7c3c602006-11-30 06:36:44 +00002637 ;}
2638 break;
2639
Reid Spencer57f28f92006-12-03 07:10:26 +00002640 case 143:
Reid Spencer187ccf82006-12-09 16:57:22 +00002641#line 543 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002642 { // Nonempty unsized arr
2643 (yyval.Const).type = (yyvsp[-3].Type);
2644 (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
2645 *(yyval.Const).cnst += " [ " + *(yyvsp[-1].String) + " ]";
2646 delete (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002647 ;}
2648 break;
2649
Reid Spencer57f28f92006-12-03 07:10:26 +00002650 case 144:
Reid Spencer187ccf82006-12-09 16:57:22 +00002651#line 549 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002652 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002653 (yyval.Const).type = (yyvsp[-2].Type);
2654 (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
2655 *(yyval.Const).cnst += "[ ]";
Reid Spencere7c3c602006-11-30 06:36:44 +00002656 ;}
2657 break;
2658
Reid Spencer57f28f92006-12-03 07:10:26 +00002659 case 145:
Reid Spencer187ccf82006-12-09 16:57:22 +00002660#line 554 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002661 {
2662 (yyval.Const).type = (yyvsp[-2].Type);
2663 (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
2664 *(yyval.Const).cnst += " c" + *(yyvsp[0].String);
2665 delete (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002666 ;}
2667 break;
2668
Reid Spencer57f28f92006-12-03 07:10:26 +00002669 case 146:
Reid Spencer187ccf82006-12-09 16:57:22 +00002670#line 560 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002671 { // Nonempty unsized arr
2672 (yyval.Const).type = (yyvsp[-3].Type);
2673 (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
2674 *(yyval.Const).cnst += " < " + *(yyvsp[-1].String) + " >";
2675 delete (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002676 ;}
2677 break;
2678
Reid Spencer57f28f92006-12-03 07:10:26 +00002679 case 147:
Reid Spencer187ccf82006-12-09 16:57:22 +00002680#line 566 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002681 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002682 (yyval.Const).type = (yyvsp[-3].Type);
2683 (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
2684 *(yyval.Const).cnst += " { " + *(yyvsp[-1].String) + " }";
2685 delete (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002686 ;}
2687 break;
2688
Reid Spencer57f28f92006-12-03 07:10:26 +00002689 case 148:
Reid Spencer187ccf82006-12-09 16:57:22 +00002690#line 572 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002691 {
2692 (yyval.Const).type = (yyvsp[-2].Type);
2693 (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
Reid Spencer0b7e5072006-12-01 22:42:01 +00002694 *(yyval.Const).cnst += " {}";
Reid Spencere7c3c602006-11-30 06:36:44 +00002695 ;}
2696 break;
2697
Reid Spencer57f28f92006-12-03 07:10:26 +00002698 case 149:
Reid Spencer187ccf82006-12-09 16:57:22 +00002699#line 577 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002700 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002701 (yyval.Const).type = (yyvsp[-1].Type);
2702 (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
Reid Spencerf2d55322006-12-01 21:52:30 +00002703 *(yyval.Const).cnst += " " + *(yyvsp[0].String);
2704 delete (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002705 ;}
2706 break;
2707
Reid Spencer57f28f92006-12-03 07:10:26 +00002708 case 150:
Reid Spencerf0cf1322006-12-07 04:23:03 +00002709#line 583 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002710 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002711 (yyval.Const).type = (yyvsp[-1].Type);
2712 (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
Reid Spencerf2d55322006-12-01 21:52:30 +00002713 *(yyval.Const).cnst += " " + *(yyvsp[0].String);
2714 delete (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002715 ;}
2716 break;
2717
Reid Spencer187ccf82006-12-09 16:57:22 +00002718 case 151:
Reid Spencerf0cf1322006-12-07 04:23:03 +00002719#line 589 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002720 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002721 (yyval.Const).type = (yyvsp[-1].Type);
2722 (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
Reid Spencerf2d55322006-12-01 21:52:30 +00002723 *(yyval.Const).cnst += " " + *(yyvsp[0].String);
2724 delete (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002725 ;}
2726 break;
2727
Reid Spencer187ccf82006-12-09 16:57:22 +00002728 case 152:
Reid Spencerf0cf1322006-12-07 04:23:03 +00002729#line 595 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002730 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002731 (yyval.Const).type = (yyvsp[-1].Type);
2732 (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
Reid Spencerf2d55322006-12-01 21:52:30 +00002733 *(yyval.Const).cnst += " " + *(yyvsp[0].String);
2734 delete (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002735 ;}
2736 break;
2737
Reid Spencer187ccf82006-12-09 16:57:22 +00002738 case 153:
Reid Spencerf0cf1322006-12-07 04:23:03 +00002739#line 601 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer187ccf82006-12-09 16:57:22 +00002740 {
2741 (yyval.Const).type = (yyvsp[-1].Type);
2742 (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
2743 *(yyval.Const).cnst += " " + *(yyvsp[0].String);
2744 delete (yyvsp[0].String);
2745 ;}
2746 break;
2747
2748 case 154:
2749#line 607 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002750 { // integral constants
Reid Spencere77e35e2006-12-01 20:26:20 +00002751 (yyval.Const).type = (yyvsp[-1].Type);
2752 (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
Reid Spencerf2d55322006-12-01 21:52:30 +00002753 *(yyval.Const).cnst += " " + *(yyvsp[0].String);
2754 delete (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002755 ;}
2756 break;
2757
Reid Spencer57f28f92006-12-03 07:10:26 +00002758 case 155:
Reid Spencer187ccf82006-12-09 16:57:22 +00002759#line 613 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002760 { // integral constants
Reid Spencere77e35e2006-12-01 20:26:20 +00002761 (yyval.Const).type = (yyvsp[-1].Type);
2762 (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
Reid Spencerf2d55322006-12-01 21:52:30 +00002763 *(yyval.Const).cnst += " " + *(yyvsp[0].String);
2764 delete (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002765 ;}
2766 break;
2767
Reid Spencer57f28f92006-12-03 07:10:26 +00002768 case 156:
Reid Spencer187ccf82006-12-09 16:57:22 +00002769#line 619 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002770 { // Boolean constants
Reid Spencere77e35e2006-12-01 20:26:20 +00002771 (yyval.Const).type = (yyvsp[-1].Type);
2772 (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
Reid Spencerf2d55322006-12-01 21:52:30 +00002773 *(yyval.Const).cnst += " " + *(yyvsp[0].String);
2774 delete (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002775 ;}
2776 break;
2777
Reid Spencer57f28f92006-12-03 07:10:26 +00002778 case 157:
Reid Spencer187ccf82006-12-09 16:57:22 +00002779#line 625 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002780 { // Boolean constants
2781 (yyval.Const).type = (yyvsp[-1].Type);
2782 (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
2783 *(yyval.Const).cnst += " " + *(yyvsp[0].String);
2784 delete (yyvsp[0].String);
2785 ;}
2786 break;
2787
Reid Spencer57f28f92006-12-03 07:10:26 +00002788 case 158:
Reid Spencer187ccf82006-12-09 16:57:22 +00002789#line 631 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002790 { // Float & Double constants
2791 (yyval.Const).type = (yyvsp[-1].Type);
2792 (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
2793 *(yyval.Const).cnst += " " + *(yyvsp[0].String);
2794 delete (yyvsp[0].String);
2795 ;}
2796 break;
2797
Reid Spencer57f28f92006-12-03 07:10:26 +00002798 case 159:
Reid Spencer187ccf82006-12-09 16:57:22 +00002799#line 639 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002800 {
Reid Spencer280d8012006-12-01 23:40:53 +00002801 std::string source = *(yyvsp[-3].Const).cnst;
Reid Spencera50d5962006-12-02 04:11:07 +00002802 TypeInfo DstTy = (yyvsp[-1].Type);
2803 ResolveType(DstTy);
Reid Spencer280d8012006-12-01 23:40:53 +00002804 if (*(yyvsp[-5].String) == "cast") {
Reid Spencera50d5962006-12-02 04:11:07 +00002805 // Call getCastUpgrade to upgrade the old cast
2806 (yyval.String) = new std::string(getCastUpgrade(source, (yyvsp[-3].Const).type, (yyvsp[-1].Type), true));
2807 } else {
2808 // Nothing to upgrade, just create the cast constant expr
2809 (yyval.String) = new std::string(*(yyvsp[-5].String));
2810 *(yyval.String) += "( " + source + " to " + *(yyvsp[-1].Type).newTy + ")";
Reid Spencer280d8012006-12-01 23:40:53 +00002811 }
Reid Spencere77e35e2006-12-01 20:26:20 +00002812 delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy();
Reid Spencere7c3c602006-11-30 06:36:44 +00002813 ;}
2814 break;
2815
Reid Spencer57f28f92006-12-03 07:10:26 +00002816 case 160:
Reid Spencer187ccf82006-12-09 16:57:22 +00002817#line 653 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002818 {
Reid Spencerf8483652006-12-02 15:16:01 +00002819 *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst;
2820 for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) {
2821 ValueInfo& VI = (*(yyvsp[-1].ValList))[i];
2822 *(yyvsp[-4].String) += ", " + *VI.val;
2823 VI.destroy();
2824 }
2825 *(yyvsp[-4].String) += ")";
Reid Spencere77e35e2006-12-01 20:26:20 +00002826 (yyval.String) = (yyvsp[-4].String);
2827 (yyvsp[-2].Const).destroy();
Reid Spencerf8483652006-12-02 15:16:01 +00002828 delete (yyvsp[-1].ValList);
Reid Spencere7c3c602006-11-30 06:36:44 +00002829 ;}
2830 break;
2831
Reid Spencer57f28f92006-12-03 07:10:26 +00002832 case 161:
Reid Spencer187ccf82006-12-09 16:57:22 +00002833#line 665 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002834 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002835 *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
2836 (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
2837 (yyval.String) = (yyvsp[-7].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002838 ;}
2839 break;
2840
Reid Spencer57f28f92006-12-03 07:10:26 +00002841 case 162:
Reid Spencer187ccf82006-12-09 16:57:22 +00002842#line 670 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002843 {
Reid Spencer78720742006-12-02 20:21:22 +00002844 const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type);
2845 (yyval.String) = new std::string(op);
2846 *(yyval.String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
2847 delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
Reid Spencere7c3c602006-11-30 06:36:44 +00002848 ;}
2849 break;
2850
Reid Spencer57f28f92006-12-03 07:10:26 +00002851 case 163:
Reid Spencer187ccf82006-12-09 16:57:22 +00002852#line 676 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002853 {
2854 *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
2855 (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
2856 (yyval.String) = (yyvsp[-5].String);
2857 ;}
2858 break;
2859
Reid Spencer57f28f92006-12-03 07:10:26 +00002860 case 164:
Reid Spencer187ccf82006-12-09 16:57:22 +00002861#line 681 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002862 {
Reid Spencer229e9362006-12-02 22:14:11 +00002863#if UPGRADE_SETCOND_OPS
2864 *(yyvsp[-5].String) = getCompareOp(*(yyvsp[-5].String), (yyvsp[-3].Const).type);
2865#endif
Reid Spencer78720742006-12-02 20:21:22 +00002866 *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
2867 (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
2868 (yyval.String) = (yyvsp[-5].String);
2869 ;}
2870 break;
2871
Reid Spencer57f28f92006-12-03 07:10:26 +00002872 case 165:
Reid Spencer187ccf82006-12-09 16:57:22 +00002873#line 689 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer229e9362006-12-02 22:14:11 +00002874 {
2875 *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
2876 delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
2877 (yyval.String) = (yyvsp[-6].String);
2878 ;}
2879 break;
2880
Reid Spencer57f28f92006-12-03 07:10:26 +00002881 case 166:
Reid Spencer187ccf82006-12-09 16:57:22 +00002882#line 694 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002883 {
Reid Spencer57f28f92006-12-03 07:10:26 +00002884 *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
2885 delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
2886 (yyval.String) = (yyvsp[-6].String);
2887 ;}
2888 break;
2889
2890 case 167:
Reid Spencer187ccf82006-12-09 16:57:22 +00002891#line 699 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer57f28f92006-12-03 07:10:26 +00002892 {
Reid Spencerf7bde222006-12-01 22:26:37 +00002893 const char* shiftop = (yyvsp[-5].String)->c_str();
2894 if (*(yyvsp[-5].String) == "shr")
2895 shiftop = ((yyvsp[-3].Const).type.isUnsigned()) ? "lshr" : "ashr";
2896 (yyval.String) = new std::string(shiftop);
2897 *(yyval.String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
2898 delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
Reid Spencere7c3c602006-11-30 06:36:44 +00002899 ;}
2900 break;
2901
Reid Spencer57f28f92006-12-03 07:10:26 +00002902 case 168:
Reid Spencer187ccf82006-12-09 16:57:22 +00002903#line 707 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002904 {
Reid Spencerf7bde222006-12-01 22:26:37 +00002905 *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
2906 (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
2907 (yyval.String) = (yyvsp[-5].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002908 ;}
2909 break;
2910
Reid Spencer57f28f92006-12-03 07:10:26 +00002911 case 169:
Reid Spencer187ccf82006-12-09 16:57:22 +00002912#line 712 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002913 {
2914 *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
2915 (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
2916 (yyval.String) = (yyvsp[-7].String);
2917 ;}
2918 break;
2919
Reid Spencer57f28f92006-12-03 07:10:26 +00002920 case 170:
Reid Spencer187ccf82006-12-09 16:57:22 +00002921#line 717 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer57f28f92006-12-03 07:10:26 +00002922 {
2923 *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
2924 (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
2925 (yyval.String) = (yyvsp[-7].String);
2926 ;}
2927 break;
2928
2929 case 171:
Reid Spencer187ccf82006-12-09 16:57:22 +00002930#line 727 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002931 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002932 *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst;
2933 (yyvsp[0].Const).destroy();
2934 (yyval.String) = (yyvsp[-2].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00002935 ;}
2936 break;
2937
Reid Spencer57f28f92006-12-03 07:10:26 +00002938 case 172:
Reid Spencer187ccf82006-12-09 16:57:22 +00002939#line 732 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002940 { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00002941 break;
2942
Reid Spencer57f28f92006-12-03 07:10:26 +00002943 case 175:
Reid Spencer187ccf82006-12-09 16:57:22 +00002944#line 747 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002945 {
2946;}
2947 break;
2948
Reid Spencer57f28f92006-12-03 07:10:26 +00002949 case 176:
Reid Spencer187ccf82006-12-09 16:57:22 +00002950#line 752 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002951 {
Reid Spencere77e35e2006-12-01 20:26:20 +00002952 (yyval.String) = 0;
2953 ;}
2954 break;
2955
Reid Spencer57f28f92006-12-03 07:10:26 +00002956 case 177:
Reid Spencer187ccf82006-12-09 16:57:22 +00002957#line 755 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002958 {
2959 *O << *(yyvsp[0].String) << "\n";
2960 delete (yyvsp[0].String);
2961 (yyval.String) = 0;
2962 ;}
2963 break;
2964
Reid Spencer57f28f92006-12-03 07:10:26 +00002965 case 178:
Reid Spencer187ccf82006-12-09 16:57:22 +00002966#line 760 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002967 {
2968 *O << "module asm " << " " << *(yyvsp[0].String) << "\n";
Reid Spencerd154b572006-12-01 20:36:40 +00002969 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00002970 ;}
2971 break;
2972
Reid Spencer57f28f92006-12-03 07:10:26 +00002973 case 179:
Reid Spencer187ccf82006-12-09 16:57:22 +00002974#line 764 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00002975 {
Reid Spencerd154b572006-12-01 20:36:40 +00002976 *O << "implementation\n";
2977 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00002978 ;}
2979 break;
2980
Reid Spencer57f28f92006-12-03 07:10:26 +00002981 case 180:
Reid Spencer187ccf82006-12-09 16:57:22 +00002982#line 768 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencera50d5962006-12-02 04:11:07 +00002983 { (yyval.String) = 0; ;}
2984 break;
2985
Reid Spencer57f28f92006-12-03 07:10:26 +00002986 case 182:
Reid Spencer187ccf82006-12-09 16:57:22 +00002987#line 770 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00002988 { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;}
2989 break;
2990
Reid Spencer57f28f92006-12-03 07:10:26 +00002991 case 183:
Reid Spencer187ccf82006-12-09 16:57:22 +00002992#line 773 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00002993 {
Reid Spencera50d5962006-12-02 04:11:07 +00002994 EnumeratedTypes.push_back((yyvsp[0].Type));
2995 if (!(yyvsp[-2].String)->empty()) {
2996 NamedTypes[*(yyvsp[-2].String)].newTy = new std::string(*(yyvsp[0].Type).newTy);
2997 NamedTypes[*(yyvsp[-2].String)].oldTy = (yyvsp[0].Type).oldTy;
Reid Spencer78720742006-12-02 20:21:22 +00002998 NamedTypes[*(yyvsp[-2].String)].elemTy = (yyvsp[0].Type).elemTy;
Reid Spencera50d5962006-12-02 04:11:07 +00002999 *O << *(yyvsp[-2].String) << " = ";
3000 }
3001 *O << "type " << *(yyvsp[0].Type).newTy << "\n";
3002 delete (yyvsp[-2].String); delete (yyvsp[-1].String); (yyvsp[0].Type).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003003 (yyval.String) = 0;
3004 ;}
3005 break;
3006
Reid Spencer57f28f92006-12-03 07:10:26 +00003007 case 184:
Reid Spencer187ccf82006-12-09 16:57:22 +00003008#line 785 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003009 { // Function prototypes can be in const pool
3010 *O << *(yyvsp[0].String) << "\n";
3011 delete (yyvsp[0].String);
3012 (yyval.String) = 0;
3013 ;}
3014 break;
3015
Reid Spencer57f28f92006-12-03 07:10:26 +00003016 case 185:
Reid Spencer187ccf82006-12-09 16:57:22 +00003017#line 790 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003018 { // Asm blocks can be in the const pool
3019 *O << *(yyvsp[-2].String) << " " << *(yyvsp[-1].String) << " " << *(yyvsp[0].String) << "\n";
3020 delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String);
3021 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003022 ;}
3023 break;
3024
Reid Spencer57f28f92006-12-03 07:10:26 +00003025 case 186:
Reid Spencer187ccf82006-12-09 16:57:22 +00003026#line 795 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003027 {
Reid Spencerf12ee422006-12-05 19:21:25 +00003028 if (!(yyvsp[-4].String)->empty()) {
Reid Spencera50d5962006-12-02 04:11:07 +00003029 *O << *(yyvsp[-4].String) << " = ";
Reid Spencerf12ee422006-12-05 19:21:25 +00003030 Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Const).type.clone();
3031 }
Reid Spencera50d5962006-12-02 04:11:07 +00003032 *O << *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Const).cnst << " " << *(yyvsp[0].String) << "\n";
Reid Spencere77e35e2006-12-01 20:26:20 +00003033 delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Const).destroy(); delete (yyvsp[0].String);
3034 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003035 ;}
3036 break;
3037
Reid Spencer57f28f92006-12-03 07:10:26 +00003038 case 187:
Reid Spencer187ccf82006-12-09 16:57:22 +00003039#line 804 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003040 {
Reid Spencerf12ee422006-12-05 19:21:25 +00003041 if (!(yyvsp[-4].String)->empty()) {
Reid Spencera50d5962006-12-02 04:11:07 +00003042 *O << *(yyvsp[-4].String) << " = ";
Reid Spencerf12ee422006-12-05 19:21:25 +00003043 Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone();
3044 }
Reid Spencera50d5962006-12-02 04:11:07 +00003045 *O << *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].String) << "\n";
Reid Spencere77e35e2006-12-01 20:26:20 +00003046 delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String);
3047 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003048 ;}
3049 break;
3050
Reid Spencer57f28f92006-12-03 07:10:26 +00003051 case 188:
Reid Spencer187ccf82006-12-09 16:57:22 +00003052#line 813 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf7bde222006-12-01 22:26:37 +00003053 {
Reid Spencerf12ee422006-12-05 19:21:25 +00003054 if (!(yyvsp[-4].String)->empty()) {
Reid Spencera50d5962006-12-02 04:11:07 +00003055 *O << *(yyvsp[-4].String) << " = ";
Reid Spencerf12ee422006-12-05 19:21:25 +00003056 Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone();
3057 }
Reid Spencera50d5962006-12-02 04:11:07 +00003058 *O << *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].String) << "\n";
Reid Spencerf7bde222006-12-01 22:26:37 +00003059 delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String);
3060 (yyval.String) = 0;
3061 ;}
3062 break;
3063
Reid Spencer57f28f92006-12-03 07:10:26 +00003064 case 189:
Reid Spencer187ccf82006-12-09 16:57:22 +00003065#line 822 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerfcb5df82006-12-01 22:34:43 +00003066 {
Reid Spencerf12ee422006-12-05 19:21:25 +00003067 if (!(yyvsp[-4].String)->empty()) {
Reid Spencera50d5962006-12-02 04:11:07 +00003068 *O << *(yyvsp[-4].String) << " = ";
Reid Spencerf12ee422006-12-05 19:21:25 +00003069 Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone();
3070 }
Reid Spencera50d5962006-12-02 04:11:07 +00003071 *O << *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].String) << "\n";
Reid Spencerfcb5df82006-12-01 22:34:43 +00003072 delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String);
3073 (yyval.String) = 0;
3074 ;}
3075 break;
3076
Reid Spencer57f28f92006-12-03 07:10:26 +00003077 case 190:
Reid Spencer187ccf82006-12-09 16:57:22 +00003078#line 831 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003079 {
3080 *O << *(yyvsp[-1].String) << " " << *(yyvsp[0].String) << "\n";
3081 delete (yyvsp[-1].String); delete (yyvsp[0].String);
3082 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003083 ;}
3084 break;
3085
Reid Spencer57f28f92006-12-03 07:10:26 +00003086 case 191:
Reid Spencer187ccf82006-12-09 16:57:22 +00003087#line 836 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003088 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003089 *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << "\n";
3090 delete (yyvsp[-2].String); delete (yyvsp[0].String);
3091 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003092 ;}
3093 break;
3094
Reid Spencer57f28f92006-12-03 07:10:26 +00003095 case 192:
Reid Spencer187ccf82006-12-09 16:57:22 +00003096#line 841 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003097 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003098 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003099 ;}
3100 break;
3101
Reid Spencer57f28f92006-12-03 07:10:26 +00003102 case 196:
Reid Spencer187ccf82006-12-09 16:57:22 +00003103#line 851 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003104 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003105 *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
3106 delete (yyvsp[0].String);
3107 (yyval.String) = (yyvsp[-2].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003108 ;}
3109 break;
3110
Reid Spencer57f28f92006-12-03 07:10:26 +00003111 case 197:
Reid Spencer187ccf82006-12-09 16:57:22 +00003112#line 856 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003113 {
Reid Spencerf2d55322006-12-01 21:52:30 +00003114 *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
3115 if (*(yyvsp[0].String) == "64")
Reid Spencere77e35e2006-12-01 20:26:20 +00003116 SizeOfPointer = 64;
Reid Spencerf2d55322006-12-01 21:52:30 +00003117 delete (yyvsp[0].String);
Reid Spencere77e35e2006-12-01 20:26:20 +00003118 (yyval.String) = (yyvsp[-2].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003119 ;}
3120 break;
3121
Reid Spencer57f28f92006-12-03 07:10:26 +00003122 case 198:
Reid Spencer187ccf82006-12-09 16:57:22 +00003123#line 863 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf7bde222006-12-01 22:26:37 +00003124 {
3125 *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
3126 delete (yyvsp[0].String);
3127 (yyval.String) = (yyvsp[-2].String);
3128 ;}
3129 break;
3130
Reid Spencer57f28f92006-12-03 07:10:26 +00003131 case 199:
Reid Spencer187ccf82006-12-09 16:57:22 +00003132#line 868 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer57f28f92006-12-03 07:10:26 +00003133 {
3134 *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
3135 delete (yyvsp[0].String);
3136 (yyval.String) = (yyvsp[-2].String);
3137 ;}
3138 break;
3139
3140 case 200:
Reid Spencer187ccf82006-12-09 16:57:22 +00003141#line 875 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003142 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003143 (yyvsp[-1].String)->insert(0, "[ ");
3144 *(yyvsp[-1].String) += " ]";
3145 (yyval.String) = (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003146 ;}
3147 break;
3148
Reid Spencer57f28f92006-12-03 07:10:26 +00003149 case 201:
Reid Spencer187ccf82006-12-09 16:57:22 +00003150#line 882 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003151 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003152 *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
3153 delete (yyvsp[0].String);
3154 (yyval.String) = (yyvsp[-2].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003155 ;}
3156 break;
3157
Reid Spencer57f28f92006-12-03 07:10:26 +00003158 case 203:
Reid Spencer187ccf82006-12-09 16:57:22 +00003159#line 888 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003160 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003161 (yyval.String) = new std::string();
Reid Spencere7c3c602006-11-30 06:36:44 +00003162 ;}
3163 break;
3164
Reid Spencer57f28f92006-12-03 07:10:26 +00003165 case 207:
Reid Spencer187ccf82006-12-09 16:57:22 +00003166#line 897 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003167 { (yyval.String) = new std::string(); ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00003168 break;
3169
Reid Spencer57f28f92006-12-03 07:10:26 +00003170 case 208:
Reid Spencer187ccf82006-12-09 16:57:22 +00003171#line 899 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003172 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003173 (yyval.String) = (yyvsp[-1].Type).newTy;
3174 if (!(yyvsp[0].String)->empty())
3175 *(yyval.String) += " " + *(yyvsp[0].String);
3176 delete (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003177;}
3178 break;
3179
Reid Spencer57f28f92006-12-03 07:10:26 +00003180 case 209:
Reid Spencer187ccf82006-12-09 16:57:22 +00003181#line 906 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003182 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003183 *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
3184 delete (yyvsp[0].String);
3185 ;}
3186 break;
3187
Reid Spencer57f28f92006-12-03 07:10:26 +00003188 case 210:
Reid Spencer187ccf82006-12-09 16:57:22 +00003189#line 910 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003190 {
3191 (yyval.String) = (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003192 ;}
3193 break;
3194
Reid Spencer57f28f92006-12-03 07:10:26 +00003195 case 211:
Reid Spencer187ccf82006-12-09 16:57:22 +00003196#line 914 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003197 {
Reid Spencerf7bde222006-12-01 22:26:37 +00003198 (yyval.String) = (yyvsp[0].String);
3199 ;}
3200 break;
3201
Reid Spencer57f28f92006-12-03 07:10:26 +00003202 case 212:
Reid Spencer187ccf82006-12-09 16:57:22 +00003203#line 917 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf7bde222006-12-01 22:26:37 +00003204 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003205 *(yyvsp[-2].String) += ", ...";
3206 (yyval.String) = (yyvsp[-2].String);
3207 delete (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003208 ;}
3209 break;
3210
Reid Spencer57f28f92006-12-03 07:10:26 +00003211 case 213:
Reid Spencer187ccf82006-12-09 16:57:22 +00003212#line 922 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003213 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003214 (yyval.String) = (yyvsp[0].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003215 ;}
3216 break;
3217
Reid Spencer57f28f92006-12-03 07:10:26 +00003218 case 214:
Reid Spencer187ccf82006-12-09 16:57:22 +00003219#line 925 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerd154b572006-12-01 20:36:40 +00003220 { (yyval.String) = new std::string(); ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00003221 break;
3222
Reid Spencer57f28f92006-12-03 07:10:26 +00003223 case 215:
Reid Spencer187ccf82006-12-09 16:57:22 +00003224#line 928 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003225 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003226 if (!(yyvsp[-7].String)->empty()) {
3227 *(yyvsp[-7].String) += " ";
3228 }
3229 *(yyvsp[-7].String) += *(yyvsp[-6].Type).newTy + " " + *(yyvsp[-5].String) + "(" + *(yyvsp[-3].String) + ")";
3230 if (!(yyvsp[-1].String)->empty()) {
3231 *(yyvsp[-7].String) += " " + *(yyvsp[-1].String);
3232 }
3233 if (!(yyvsp[0].String)->empty()) {
3234 *(yyvsp[-7].String) += " " + *(yyvsp[0].String);
3235 }
3236 (yyvsp[-6].Type).destroy();
3237 delete (yyvsp[-5].String);
3238 delete (yyvsp[-3].String);
3239 delete (yyvsp[-1].String);
3240 delete (yyvsp[0].String);
3241 (yyval.String) = (yyvsp[-7].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003242 ;}
3243 break;
3244
Reid Spencer57f28f92006-12-03 07:10:26 +00003245 case 216:
Reid Spencer187ccf82006-12-09 16:57:22 +00003246#line 947 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00003247 { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00003248 break;
3249
Reid Spencer57f28f92006-12-03 07:10:26 +00003250 case 217:
Reid Spencer187ccf82006-12-09 16:57:22 +00003251#line 948 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00003252 { (yyval.String) = new std::string ("{"); ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00003253 break;
3254
Reid Spencer57f28f92006-12-03 07:10:26 +00003255 case 218:
Reid Spencer187ccf82006-12-09 16:57:22 +00003256#line 950 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003257 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003258 if (!(yyvsp[-2].String)->empty()) {
3259 *O << *(yyvsp[-2].String) << " ";
3260 }
3261 *O << *(yyvsp[-1].String) << " " << *(yyvsp[0].String) << "\n";
3262 delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String);
3263 (yyval.String) = 0;
3264;}
Reid Spencere7c3c602006-11-30 06:36:44 +00003265 break;
3266
Reid Spencer57f28f92006-12-03 07:10:26 +00003267 case 219:
Reid Spencer187ccf82006-12-09 16:57:22 +00003268#line 959 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00003269 { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00003270 break;
3271
Reid Spencer57f28f92006-12-03 07:10:26 +00003272 case 220:
Reid Spencer187ccf82006-12-09 16:57:22 +00003273#line 960 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003274 { (yyval.String) = new std::string("}"); ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00003275 break;
3276
Reid Spencer57f28f92006-12-03 07:10:26 +00003277 case 221:
Reid Spencer187ccf82006-12-09 16:57:22 +00003278#line 962 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003279 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003280 if ((yyvsp[-1].String))
3281 *O << *(yyvsp[-1].String);
3282 *O << '\n' << *(yyvsp[0].String) << "\n";
3283 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003284;}
3285 break;
3286
Reid Spencer57f28f92006-12-03 07:10:26 +00003287 case 222:
Reid Spencer187ccf82006-12-09 16:57:22 +00003288#line 970 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003289 { (yyval.String) = new std::string(); ;}
3290 break;
3291
Reid Spencer57f28f92006-12-03 07:10:26 +00003292 case 225:
Reid Spencer187ccf82006-12-09 16:57:22 +00003293#line 976 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003294 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003295 if (!(yyvsp[-1].String)->empty())
3296 *(yyvsp[-2].String) += " " + *(yyvsp[-1].String);
3297 *(yyvsp[-2].String) += " " + *(yyvsp[0].String);
3298 delete (yyvsp[-1].String);
3299 delete (yyvsp[0].String);
3300 (yyval.String) = (yyvsp[-2].String);
3301 ;}
3302 break;
3303
Reid Spencer57f28f92006-12-03 07:10:26 +00003304 case 226:
Reid Spencer187ccf82006-12-09 16:57:22 +00003305#line 989 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerd154b572006-12-01 20:36:40 +00003306 { (yyval.String) = new std::string(); ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00003307 break;
3308
Reid Spencer57f28f92006-12-03 07:10:26 +00003309 case 236:
Reid Spencer187ccf82006-12-09 16:57:22 +00003310#line 995 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003311 {
3312 (yyvsp[-1].String)->insert(0, "<");
3313 *(yyvsp[-1].String) += ">";
3314 (yyval.String) = (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003315 ;}
3316 break;
3317
Reid Spencer57f28f92006-12-03 07:10:26 +00003318 case 238:
Reid Spencer187ccf82006-12-09 16:57:22 +00003319#line 1001 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003320 {
3321 if (!(yyvsp[-3].String)->empty()) {
3322 *(yyvsp[-4].String) += " " + *(yyvsp[-3].String);
3323 }
3324 *(yyvsp[-4].String) += " " + *(yyvsp[-2].String) + ", " + *(yyvsp[0].String);
3325 delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String);
3326 (yyval.String) = (yyvsp[-4].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003327 ;}
3328 break;
3329
Reid Spencer57f28f92006-12-03 07:10:26 +00003330 case 241:
Reid Spencer187ccf82006-12-09 16:57:22 +00003331#line 1014 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003332 {
Reid Spencerf459d392006-12-02 16:19:52 +00003333 (yyval.Value).val = (yyvsp[0].String);
3334 (yyval.Value).constant = false;
3335 (yyval.Value).type.newTy = 0;
3336 (yyval.Value).type.oldTy = UnresolvedTy;
3337 ;}
3338 break;
3339
Reid Spencer57f28f92006-12-03 07:10:26 +00003340 case 242:
Reid Spencer187ccf82006-12-09 16:57:22 +00003341#line 1020 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf459d392006-12-02 16:19:52 +00003342 {
3343 (yyval.Value).val = (yyvsp[0].String);
3344 (yyval.Value).constant = true;
3345 (yyval.Value).type.newTy = 0;
3346 (yyval.Value).type.oldTy = UnresolvedTy;
3347 ;}
3348 break;
3349
Reid Spencer57f28f92006-12-03 07:10:26 +00003350 case 243:
Reid Spencer187ccf82006-12-09 16:57:22 +00003351#line 1031 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf459d392006-12-02 16:19:52 +00003352 {
3353 (yyval.Value) = (yyvsp[0].Value);
Reid Spencere77e35e2006-12-01 20:26:20 +00003354 (yyval.Value).type = (yyvsp[-1].Type);
Reid Spencerf459d392006-12-02 16:19:52 +00003355 (yyval.Value).val->insert(0, *(yyvsp[-1].Type).newTy + " ");
Reid Spencere77e35e2006-12-01 20:26:20 +00003356 ;}
3357 break;
3358
Reid Spencer57f28f92006-12-03 07:10:26 +00003359 case 244:
Reid Spencer187ccf82006-12-09 16:57:22 +00003360#line 1037 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf7bde222006-12-01 22:26:37 +00003361 {
Reid Spencerf2d55322006-12-01 21:52:30 +00003362 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003363 ;}
3364 break;
3365
Reid Spencer57f28f92006-12-03 07:10:26 +00003366 case 245:
Reid Spencer187ccf82006-12-09 16:57:22 +00003367#line 1040 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf7bde222006-12-01 22:26:37 +00003368 { // Do not allow functions with 0 basic blocks
Reid Spencerf2d55322006-12-01 21:52:30 +00003369 (yyval.String) = 0;
Reid Spencere77e35e2006-12-01 20:26:20 +00003370 ;}
3371 break;
3372
Reid Spencer57f28f92006-12-03 07:10:26 +00003373 case 246:
Reid Spencer187ccf82006-12-09 16:57:22 +00003374#line 1048 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf7bde222006-12-01 22:26:37 +00003375 {
3376 (yyval.String) = 0;
3377 ;}
3378 break;
3379
Reid Spencer57f28f92006-12-03 07:10:26 +00003380 case 247:
Reid Spencer187ccf82006-12-09 16:57:22 +00003381#line 1052 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003382 {
3383 *O << " " << *(yyvsp[0].String) << "\n";
3384 delete (yyvsp[0].String);
3385 (yyval.String) = 0;
3386 ;}
3387 break;
3388
Reid Spencer57f28f92006-12-03 07:10:26 +00003389 case 248:
Reid Spencer187ccf82006-12-09 16:57:22 +00003390#line 1057 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003391 {
3392 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003393 ;}
3394 break;
3395
Reid Spencer57f28f92006-12-03 07:10:26 +00003396 case 249:
Reid Spencer187ccf82006-12-09 16:57:22 +00003397#line 1060 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003398 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003399 *O << *(yyvsp[0].String) << "\n";
3400 delete (yyvsp[0].String);
3401 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003402 ;}
3403 break;
3404
Reid Spencer57f28f92006-12-03 07:10:26 +00003405 case 251:
Reid Spencer187ccf82006-12-09 16:57:22 +00003406#line 1066 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00003407 { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;}
3408 break;
3409
Reid Spencer57f28f92006-12-03 07:10:26 +00003410 case 252:
Reid Spencer187ccf82006-12-09 16:57:22 +00003411#line 1068 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003412 { // Return with a result...
3413 *O << " " << *(yyvsp[-1].String) << " " << *(yyvsp[0].Value).val << "\n";
3414 delete (yyvsp[-1].String); (yyvsp[0].Value).destroy();
3415 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003416 ;}
3417 break;
3418
Reid Spencer57f28f92006-12-03 07:10:26 +00003419 case 253:
Reid Spencer187ccf82006-12-09 16:57:22 +00003420#line 1073 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003421 { // Return with no result...
3422 *O << " " << *(yyvsp[-1].String) << " " << *(yyvsp[0].Type).newTy << "\n";
3423 delete (yyvsp[-1].String); (yyvsp[0].Type).destroy();
3424 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003425 ;}
3426 break;
3427
Reid Spencer57f28f92006-12-03 07:10:26 +00003428 case 254:
Reid Spencer187ccf82006-12-09 16:57:22 +00003429#line 1078 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003430 { // Unconditional Branch...
Reid Spencerf459d392006-12-02 16:19:52 +00003431 *O << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].Value).val << "\n";
3432 delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003433 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003434 ;}
3435 break;
3436
Reid Spencer57f28f92006-12-03 07:10:26 +00003437 case 255:
Reid Spencer187ccf82006-12-09 16:57:22 +00003438#line 1083 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003439 {
Reid Spencerf459d392006-12-02 16:19:52 +00003440 *O << " " << *(yyvsp[-8].String) << " " << *(yyvsp[-7].Type).newTy << " " << *(yyvsp[-6].Value).val << ", "
3441 << *(yyvsp[-4].Type).newTy << " " << *(yyvsp[-3].Value).val << ", " << *(yyvsp[-1].Type).newTy << " "
3442 << *(yyvsp[0].Value).val << "\n";
3443 delete (yyvsp[-8].String); (yyvsp[-7].Type).destroy(); (yyvsp[-6].Value).destroy(); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy();
3444 (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003445 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003446 ;}
3447 break;
3448
Reid Spencer57f28f92006-12-03 07:10:26 +00003449 case 256:
Reid Spencer187ccf82006-12-09 16:57:22 +00003450#line 1091 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003451 {
Reid Spencerf459d392006-12-02 16:19:52 +00003452 *O << " " << *(yyvsp[-8].String) << " " << *(yyvsp[-7].Type).newTy << " " << *(yyvsp[-6].Value).val << ", "
3453 << *(yyvsp[-4].Type).newTy << " " << *(yyvsp[-3].Value).val << " [" << *(yyvsp[-1].String) << " ]\n";
3454 delete (yyvsp[-8].String); (yyvsp[-7].Type).destroy(); (yyvsp[-6].Value).destroy(); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy();
3455 delete (yyvsp[-1].String);
Reid Spencere77e35e2006-12-01 20:26:20 +00003456 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003457 ;}
3458 break;
3459
Reid Spencer57f28f92006-12-03 07:10:26 +00003460 case 257:
Reid Spencer187ccf82006-12-09 16:57:22 +00003461#line 1098 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003462 {
Reid Spencerf459d392006-12-02 16:19:52 +00003463 *O << " " << *(yyvsp[-7].String) << " " << *(yyvsp[-6].Type).newTy << " " << *(yyvsp[-5].Value).val << ", "
3464 << *(yyvsp[-3].Type).newTy << " " << *(yyvsp[-2].Value).val << "[]\n";
3465 delete (yyvsp[-7].String); (yyvsp[-6].Type).destroy(); (yyvsp[-5].Value).destroy(); (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003466 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003467 ;}
3468 break;
3469
Reid Spencer57f28f92006-12-03 07:10:26 +00003470 case 258:
Reid Spencer187ccf82006-12-09 16:57:22 +00003471#line 1105 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003472 {
Reid Spencer16244f42006-12-01 21:10:07 +00003473 *O << " ";
3474 if (!(yyvsp[-13].String)->empty())
Reid Spencera50d5962006-12-02 04:11:07 +00003475 *O << *(yyvsp[-13].String) << " = ";
Reid Spencerf459d392006-12-02 16:19:52 +00003476 *O << *(yyvsp[-12].String) << " " << *(yyvsp[-11].String) << " " << *(yyvsp[-10].Type).newTy << " " << *(yyvsp[-9].Value).val << " (";
Reid Spencerf8483652006-12-02 15:16:01 +00003477 for (unsigned i = 0; i < (yyvsp[-7].ValList)->size(); ++i) {
3478 ValueInfo& VI = (*(yyvsp[-7].ValList))[i];
3479 *O << *VI.val;
3480 if (i+1 < (yyvsp[-7].ValList)->size())
3481 *O << ", ";
3482 VI.destroy();
3483 }
Reid Spencerf459d392006-12-02 16:19:52 +00003484 *O << ") " << *(yyvsp[-5].String) << " " << *(yyvsp[-4].Type).newTy << " " << *(yyvsp[-3].Value).val << " "
3485 << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].Value).val << "\n";
3486 delete (yyvsp[-13].String); delete (yyvsp[-12].String); delete (yyvsp[-11].String); (yyvsp[-10].Type).destroy(); (yyvsp[-9].Value).destroy(); delete (yyvsp[-7].ValList);
3487 delete (yyvsp[-5].String); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy(); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy();
3488 (yyvsp[0].Value).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003489 (yyval.String) = 0;
Reid Spencere7c3c602006-11-30 06:36:44 +00003490 ;}
3491 break;
3492
Reid Spencer57f28f92006-12-03 07:10:26 +00003493 case 259:
Reid Spencer187ccf82006-12-09 16:57:22 +00003494#line 1124 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003495 {
Reid Spencerfcb5df82006-12-01 22:34:43 +00003496 *O << " " << *(yyvsp[0].String) << "\n";
3497 delete (yyvsp[0].String);
3498 (yyval.String) = 0;
3499 ;}
3500 break;
3501
Reid Spencer57f28f92006-12-03 07:10:26 +00003502 case 260:
Reid Spencer187ccf82006-12-09 16:57:22 +00003503#line 1129 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer57f28f92006-12-03 07:10:26 +00003504 {
3505 *O << " " << *(yyvsp[0].String) << "\n";
3506 delete (yyvsp[0].String);
3507 (yyval.String) = 0;
3508 ;}
3509 break;
3510
3511 case 261:
Reid Spencer187ccf82006-12-09 16:57:22 +00003512#line 1135 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerfcb5df82006-12-01 22:34:43 +00003513 {
Reid Spencerf459d392006-12-02 16:19:52 +00003514 *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + " " + *(yyvsp[-3].String) + ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
3515 (yyvsp[-4].Type).destroy(); delete (yyvsp[-3].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003516 (yyval.String) = (yyvsp[-5].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003517 ;}
3518 break;
3519
Reid Spencer57f28f92006-12-03 07:10:26 +00003520 case 262:
Reid Spencer187ccf82006-12-09 16:57:22 +00003521#line 1140 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003522 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003523 (yyvsp[-3].String)->insert(0, *(yyvsp[-4].Type).newTy + " " );
Reid Spencerf459d392006-12-02 16:19:52 +00003524 *(yyvsp[-3].String) += ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
3525 (yyvsp[-4].Type).destroy(); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003526 (yyval.String) = (yyvsp[-3].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003527 ;}
3528 break;
3529
Reid Spencer57f28f92006-12-03 07:10:26 +00003530 case 263:
Reid Spencer187ccf82006-12-09 16:57:22 +00003531#line 1148 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003532 {
Reid Spencera50d5962006-12-02 04:11:07 +00003533 if (!(yyvsp[-1].String)->empty())
3534 *(yyvsp[-1].String) += " = ";
Reid Spencere77e35e2006-12-01 20:26:20 +00003535 *(yyvsp[-1].String) += *(yyvsp[0].String);
3536 delete (yyvsp[0].String);
3537 (yyval.String) = (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003538 ;}
3539 break;
3540
Reid Spencer57f28f92006-12-03 07:10:26 +00003541 case 264:
Reid Spencer187ccf82006-12-09 16:57:22 +00003542#line 1157 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003543 { // Used for PHI nodes
Reid Spencerf459d392006-12-02 16:19:52 +00003544 (yyvsp[-3].Value).val->insert(0, *(yyvsp[-5].Type).newTy + "[");
3545 *(yyvsp[-3].Value).val += "," + *(yyvsp[-1].Value).val + "]";
3546 (yyvsp[-5].Type).destroy(); (yyvsp[-1].Value).destroy();
3547 (yyval.String) = new std::string(*(yyvsp[-3].Value).val);
3548 (yyvsp[-3].Value).destroy();
Reid Spencere7c3c602006-11-30 06:36:44 +00003549 ;}
3550 break;
3551
Reid Spencer57f28f92006-12-03 07:10:26 +00003552 case 265:
Reid Spencer187ccf82006-12-09 16:57:22 +00003553#line 1164 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003554 {
Reid Spencerf459d392006-12-02 16:19:52 +00003555 *(yyvsp[-6].String) += ", [" + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + "]";
3556 (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003557 (yyval.String) = (yyvsp[-6].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003558 ;}
3559 break;
3560
Reid Spencer57f28f92006-12-03 07:10:26 +00003561 case 266:
Reid Spencer187ccf82006-12-09 16:57:22 +00003562#line 1172 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf8483652006-12-02 15:16:01 +00003563 {
3564 (yyval.ValList) = new ValueList();
3565 (yyval.ValList)->push_back((yyvsp[0].Value));
Reid Spencere7c3c602006-11-30 06:36:44 +00003566 ;}
3567 break;
3568
Reid Spencer57f28f92006-12-03 07:10:26 +00003569 case 267:
Reid Spencer187ccf82006-12-09 16:57:22 +00003570#line 1176 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf8483652006-12-02 15:16:01 +00003571 {
3572 (yyvsp[-2].ValList)->push_back((yyvsp[0].Value));
3573 (yyval.ValList) = (yyvsp[-2].ValList);
3574 ;}
3575 break;
3576
Reid Spencer57f28f92006-12-03 07:10:26 +00003577 case 268:
Reid Spencer187ccf82006-12-09 16:57:22 +00003578#line 1183 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf8483652006-12-02 15:16:01 +00003579 { (yyval.ValList) = (yyvsp[0].ValList); ;}
3580 break;
3581
Reid Spencer57f28f92006-12-03 07:10:26 +00003582 case 269:
Reid Spencer187ccf82006-12-09 16:57:22 +00003583#line 1184 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf8483652006-12-02 15:16:01 +00003584 { (yyval.ValList) = new ValueList(); ;}
Reid Spencere77e35e2006-12-01 20:26:20 +00003585 break;
3586
Reid Spencer57f28f92006-12-03 07:10:26 +00003587 case 270:
Reid Spencer187ccf82006-12-09 16:57:22 +00003588#line 1188 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003589 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003590 *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
3591 delete (yyvsp[0].String);
3592 (yyval.String) = (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003593 ;}
3594 break;
3595
Reid Spencer57f28f92006-12-03 07:10:26 +00003596 case 272:
Reid Spencer187ccf82006-12-09 16:57:22 +00003597#line 1196 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer78720742006-12-02 20:21:22 +00003598 {
3599 const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type));
3600 (yyval.String) = new std::string(op);
3601 *(yyval.String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
3602 delete (yyvsp[-4].String); (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
3603 ;}
3604 break;
3605
Reid Spencer57f28f92006-12-03 07:10:26 +00003606 case 273:
Reid Spencer187ccf82006-12-09 16:57:22 +00003607#line 1202 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003608 {
Reid Spencerf459d392006-12-02 16:19:52 +00003609 *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
3610 (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003611 (yyval.String) = (yyvsp[-4].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003612 ;}
3613 break;
3614
Reid Spencer57f28f92006-12-03 07:10:26 +00003615 case 274:
Reid Spencer187ccf82006-12-09 16:57:22 +00003616#line 1207 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003617 {
Reid Spencer229e9362006-12-02 22:14:11 +00003618#if UPGRADE_SETCOND_OPS
3619 *(yyvsp[-4].String) = getCompareOp(*(yyvsp[-4].String), (yyvsp[-3].Type));
3620#endif
Reid Spencerf459d392006-12-02 16:19:52 +00003621 *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
3622 (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003623 (yyval.String) = (yyvsp[-4].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003624 ;}
3625 break;
3626
Reid Spencer57f28f92006-12-03 07:10:26 +00003627 case 275:
Reid Spencer187ccf82006-12-09 16:57:22 +00003628#line 1215 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer229e9362006-12-02 22:14:11 +00003629 {
3630 *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " " + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + ")";
3631 delete (yyvsp[-5].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
3632 (yyval.String) = (yyvsp[-6].String);
3633 ;}
3634 break;
3635
Reid Spencer57f28f92006-12-03 07:10:26 +00003636 case 276:
Reid Spencer187ccf82006-12-09 16:57:22 +00003637#line 1220 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer57f28f92006-12-03 07:10:26 +00003638 {
3639 *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " " + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + ")";
3640 delete (yyvsp[-5].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
3641 (yyval.String) = (yyvsp[-6].String);
3642 ;}
3643 break;
3644
3645 case 277:
Reid Spencer187ccf82006-12-09 16:57:22 +00003646#line 1225 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003647 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003648 *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
3649 (yyvsp[0].Value).destroy();
3650 (yyval.String) = (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003651 ;}
3652 break;
3653
Reid Spencer57f28f92006-12-03 07:10:26 +00003654 case 278:
Reid Spencer187ccf82006-12-09 16:57:22 +00003655#line 1230 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003656 {
Reid Spencerf7bde222006-12-01 22:26:37 +00003657 const char* shiftop = (yyvsp[-3].String)->c_str();
3658 if (*(yyvsp[-3].String) == "shr")
3659 shiftop = ((yyvsp[-2].Value).type.isUnsigned()) ? "lshr" : "ashr";
3660 (yyval.String) = new std::string(shiftop);
3661 *(yyval.String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
3662 delete (yyvsp[-3].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
Reid Spencere7c3c602006-11-30 06:36:44 +00003663 ;}
3664 break;
3665
Reid Spencer57f28f92006-12-03 07:10:26 +00003666 case 279:
Reid Spencer187ccf82006-12-09 16:57:22 +00003667#line 1238 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003668 {
Reid Spencer280d8012006-12-01 23:40:53 +00003669 std::string source = *(yyvsp[-2].Value).val;
Reid Spencera50d5962006-12-02 04:11:07 +00003670 TypeInfo SrcTy = (yyvsp[-2].Value).type;
3671 TypeInfo DstTy = (yyvsp[0].Type);
3672 ResolveType(DstTy);
3673 (yyval.String) = new std::string();
Reid Spencer280d8012006-12-01 23:40:53 +00003674 if (*(yyvsp[-3].String) == "cast") {
Reid Spencera50d5962006-12-02 04:11:07 +00003675 *(yyval.String) += getCastUpgrade(source, SrcTy, DstTy, false);
3676 } else {
3677 *(yyval.String) += *(yyvsp[-3].String) + " " + source + " to " + *DstTy.newTy;
Reid Spencer280d8012006-12-01 23:40:53 +00003678 }
Reid Spencere77e35e2006-12-01 20:26:20 +00003679 delete (yyvsp[-3].String); (yyvsp[-2].Value).destroy();
3680 delete (yyvsp[-1].String); (yyvsp[0].Type).destroy();
Reid Spencere7c3c602006-11-30 06:36:44 +00003681 ;}
3682 break;
3683
Reid Spencer57f28f92006-12-03 07:10:26 +00003684 case 280:
Reid Spencer187ccf82006-12-09 16:57:22 +00003685#line 1252 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003686 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003687 *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
3688 (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
3689 (yyval.String) = (yyvsp[-5].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003690 ;}
3691 break;
3692
Reid Spencer57f28f92006-12-03 07:10:26 +00003693 case 281:
Reid Spencer187ccf82006-12-09 16:57:22 +00003694#line 1257 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003695 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003696 *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Type).newTy;
3697 (yyvsp[-2].Value).destroy(); (yyvsp[0].Type).destroy();
3698 (yyval.String) = (yyvsp[-3].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003699 ;}
3700 break;
3701
Reid Spencer57f28f92006-12-03 07:10:26 +00003702 case 282:
Reid Spencer187ccf82006-12-09 16:57:22 +00003703#line 1262 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003704 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003705 *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
3706 (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
3707 (yyval.String) = (yyvsp[-3].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003708 ;}
3709 break;
3710
Reid Spencer57f28f92006-12-03 07:10:26 +00003711 case 283:
Reid Spencer187ccf82006-12-09 16:57:22 +00003712#line 1267 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003713 {
Reid Spencer57f28f92006-12-03 07:10:26 +00003714 *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
3715 (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
3716 (yyval.String) = (yyvsp[-5].String);
3717 ;}
3718 break;
3719
3720 case 284:
Reid Spencer187ccf82006-12-09 16:57:22 +00003721#line 1272 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer57f28f92006-12-03 07:10:26 +00003722 {
3723 *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
3724 (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
3725 (yyval.String) = (yyvsp[-5].String);
3726 ;}
3727 break;
3728
3729 case 285:
Reid Spencer187ccf82006-12-09 16:57:22 +00003730#line 1277 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencer57f28f92006-12-03 07:10:26 +00003731 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003732 *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
3733 delete (yyvsp[0].String);
3734 (yyval.String) = (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003735 ;}
3736 break;
3737
Reid Spencer57f28f92006-12-03 07:10:26 +00003738 case 286:
Reid Spencer187ccf82006-12-09 16:57:22 +00003739#line 1282 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003740 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003741 if (!(yyvsp[-5].String)->empty())
3742 *(yyvsp[-6].String) += " " + *(yyvsp[-5].String);
3743 if (!(yyvsp[-6].String)->empty())
3744 *(yyvsp[-6].String) += " ";
Reid Spencerf459d392006-12-02 16:19:52 +00003745 *(yyvsp[-6].String) += *(yyvsp[-4].Type).newTy + " " + *(yyvsp[-3].Value).val + "(";
Reid Spencerf8483652006-12-02 15:16:01 +00003746 for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) {
3747 ValueInfo& VI = (*(yyvsp[-1].ValList))[i];
3748 *(yyvsp[-6].String) += *VI.val;
3749 if (i+1 < (yyvsp[-1].ValList)->size())
3750 *(yyvsp[-6].String) += ", ";
3751 VI.destroy();
3752 }
3753 *(yyvsp[-6].String) += ")";
Reid Spencerf459d392006-12-02 16:19:52 +00003754 delete (yyvsp[-5].String); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy(); delete (yyvsp[-1].ValList);
Reid Spencere77e35e2006-12-01 20:26:20 +00003755 (yyval.String) = (yyvsp[-6].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003756 ;}
3757 break;
3758
Reid Spencer57f28f92006-12-03 07:10:26 +00003759 case 288:
Reid Spencer187ccf82006-12-09 16:57:22 +00003760#line 1304 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf8483652006-12-02 15:16:01 +00003761 { (yyval.ValList) = (yyvsp[0].ValList); ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00003762 break;
3763
Reid Spencer57f28f92006-12-03 07:10:26 +00003764 case 289:
Reid Spencer187ccf82006-12-09 16:57:22 +00003765#line 1305 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf8483652006-12-02 15:16:01 +00003766 { (yyval.ValList) = new ValueList(); ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00003767 break;
3768
Reid Spencer57f28f92006-12-03 07:10:26 +00003769 case 291:
Reid Spencer187ccf82006-12-09 16:57:22 +00003770#line 1310 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003771 { (yyval.String) = new std::string(); ;}
3772 break;
3773
Reid Spencer57f28f92006-12-03 07:10:26 +00003774 case 292:
Reid Spencer187ccf82006-12-09 16:57:22 +00003775#line 1313 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere77e35e2006-12-01 20:26:20 +00003776 {
3777 *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
3778 if (!(yyvsp[0].String)->empty())
3779 *(yyvsp[-2].String) += " " + *(yyvsp[0].String);
3780 (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String);
3781 (yyval.String) = (yyvsp[-2].String);
3782 ;}
Reid Spencere7c3c602006-11-30 06:36:44 +00003783 break;
3784
Reid Spencer57f28f92006-12-03 07:10:26 +00003785 case 293:
Reid Spencer187ccf82006-12-09 16:57:22 +00003786#line 1320 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003787 {
Reid Spencerf459d392006-12-02 16:19:52 +00003788 *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val;
Reid Spencere77e35e2006-12-01 20:26:20 +00003789 if (!(yyvsp[0].String)->empty())
3790 *(yyvsp[-5].String) += " " + *(yyvsp[0].String);
Reid Spencerf459d392006-12-02 16:19:52 +00003791 (yyvsp[-4].Type).destroy(); (yyvsp[-2].Type).destroy(); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String);
Reid Spencere77e35e2006-12-01 20:26:20 +00003792 (yyval.String) = (yyvsp[-5].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003793 ;}
3794 break;
3795
Reid Spencer57f28f92006-12-03 07:10:26 +00003796 case 294:
Reid Spencer187ccf82006-12-09 16:57:22 +00003797#line 1327 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf7bde222006-12-01 22:26:37 +00003798 {
3799 *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
3800 if (!(yyvsp[0].String)->empty())
3801 *(yyvsp[-2].String) += " " + *(yyvsp[0].String);
3802 (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String);
3803 (yyval.String) = (yyvsp[-2].String);
3804 ;}
3805 break;
3806
Reid Spencer57f28f92006-12-03 07:10:26 +00003807 case 295:
Reid Spencer187ccf82006-12-09 16:57:22 +00003808#line 1334 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencerf7bde222006-12-01 22:26:37 +00003809 {
Reid Spencerf459d392006-12-02 16:19:52 +00003810 *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val;
Reid Spencerf7bde222006-12-01 22:26:37 +00003811 if (!(yyvsp[0].String)->empty())
3812 *(yyvsp[-5].String) += " " + *(yyvsp[0].String);
Reid Spencerf459d392006-12-02 16:19:52 +00003813 (yyvsp[-4].Type).destroy(); (yyvsp[-2].Type).destroy(); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String);
Reid Spencerf7bde222006-12-01 22:26:37 +00003814 (yyval.String) = (yyvsp[-5].String);
3815 ;}
3816 break;
3817
Reid Spencer57f28f92006-12-03 07:10:26 +00003818 case 296:
Reid Spencer187ccf82006-12-09 16:57:22 +00003819#line 1341 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003820 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003821 *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
3822 (yyvsp[0].Value).destroy();
3823 (yyval.String) = (yyvsp[-1].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003824 ;}
3825 break;
3826
Reid Spencer57f28f92006-12-03 07:10:26 +00003827 case 297:
Reid Spencer187ccf82006-12-09 16:57:22 +00003828#line 1346 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003829 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003830 if (!(yyvsp[-3].String)->empty())
3831 *(yyvsp[-3].String) += " ";
Reid Spencerf459d392006-12-02 16:19:52 +00003832 *(yyvsp[-3].String) += *(yyvsp[-2].String) + " " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
3833 delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003834 (yyval.String) = (yyvsp[-3].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003835 ;}
3836 break;
3837
Reid Spencer57f28f92006-12-03 07:10:26 +00003838 case 298:
Reid Spencer187ccf82006-12-09 16:57:22 +00003839#line 1353 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003840 {
Reid Spencere77e35e2006-12-01 20:26:20 +00003841 if (!(yyvsp[-5].String)->empty())
3842 *(yyvsp[-5].String) += " ";
Reid Spencerf459d392006-12-02 16:19:52 +00003843 *(yyvsp[-5].String) += *(yyvsp[-4].String) + " " + *(yyvsp[-3].Value).val + ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
3844 delete (yyvsp[-4].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
Reid Spencere77e35e2006-12-01 20:26:20 +00003845 (yyval.String) = (yyvsp[-5].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003846 ;}
3847 break;
3848
Reid Spencer57f28f92006-12-03 07:10:26 +00003849 case 299:
Reid Spencer187ccf82006-12-09 16:57:22 +00003850#line 1360 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00003851 {
Reid Spencerf459d392006-12-02 16:19:52 +00003852 // Upgrade the indices
3853 for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) {
3854 ValueInfo& VI = (*(yyvsp[0].ValList))[i];
3855 if (VI.type.isUnsigned() && !VI.isConstant() &&
3856 VI.type.getBitWidth() < 64) {
3857 std::string* old = VI.val;
3858 *O << " %gep_upgrade" << unique << " = zext " << *old
3859 << " to ulong\n";
3860 VI.val = new std::string("ulong %gep_upgrade" + llvm::utostr(unique++));
3861 VI.type.oldTy = ULongTy;
3862 delete old;
3863 }
3864 }
3865 *(yyvsp[-3].String) += " " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val;
Reid Spencerf8483652006-12-02 15:16:01 +00003866 for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) {
3867 ValueInfo& VI = (*(yyvsp[0].ValList))[i];
3868 *(yyvsp[-3].String) += ", " + *VI.val;
3869 VI.destroy();
3870 }
Reid Spencerf459d392006-12-02 16:19:52 +00003871 (yyvsp[-2].Type).destroy(); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].ValList);
Reid Spencere77e35e2006-12-01 20:26:20 +00003872 (yyval.String) = (yyvsp[-3].String);
Reid Spencere7c3c602006-11-30 06:36:44 +00003873 ;}
3874 break;
3875
3876
3877 default: break;
3878 }
3879
3880/* Line 1126 of yacc.c. */
Reid Spencer187ccf82006-12-09 16:57:22 +00003881#line 3882 "UpgradeParser.tab.c"
Reid Spencere7c3c602006-11-30 06:36:44 +00003882
3883 yyvsp -= yylen;
3884 yyssp -= yylen;
3885
3886
3887 YY_STACK_PRINT (yyss, yyssp);
3888
3889 *++yyvsp = yyval;
3890
3891
3892 /* Now `shift' the result of the reduction. Determine what state
3893 that goes to, based on the state we popped back to and the rule
3894 number reduced by. */
3895
3896 yyn = yyr1[yyn];
3897
3898 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3899 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3900 yystate = yytable[yystate];
3901 else
3902 yystate = yydefgoto[yyn - YYNTOKENS];
3903
3904 goto yynewstate;
3905
3906
3907/*------------------------------------.
3908| yyerrlab -- here on detecting error |
3909`------------------------------------*/
3910yyerrlab:
3911 /* If not already recovering from an error, report this error. */
3912 if (!yyerrstatus)
3913 {
3914 ++yynerrs;
3915#if YYERROR_VERBOSE
3916 yyn = yypact[yystate];
3917
3918 if (YYPACT_NINF < yyn && yyn < YYLAST)
3919 {
3920 int yytype = YYTRANSLATE (yychar);
3921 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
3922 YYSIZE_T yysize = yysize0;
3923 YYSIZE_T yysize1;
3924 int yysize_overflow = 0;
3925 char *yymsg = 0;
3926# define YYERROR_VERBOSE_ARGS_MAXIMUM 5
3927 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
3928 int yyx;
3929
3930#if 0
3931 /* This is so xgettext sees the translatable formats that are
3932 constructed on the fly. */
3933 YY_("syntax error, unexpected %s");
3934 YY_("syntax error, unexpected %s, expecting %s");
3935 YY_("syntax error, unexpected %s, expecting %s or %s");
3936 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
3937 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
3938#endif
3939 char *yyfmt;
3940 char const *yyf;
3941 static char const yyunexpected[] = "syntax error, unexpected %s";
3942 static char const yyexpecting[] = ", expecting %s";
3943 static char const yyor[] = " or %s";
3944 char yyformat[sizeof yyunexpected
3945 + sizeof yyexpecting - 1
3946 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
3947 * (sizeof yyor - 1))];
3948 char const *yyprefix = yyexpecting;
3949
3950 /* Start YYX at -YYN if negative to avoid negative indexes in
3951 YYCHECK. */
3952 int yyxbegin = yyn < 0 ? -yyn : 0;
3953
3954 /* Stay within bounds of both yycheck and yytname. */
3955 int yychecklim = YYLAST - yyn;
3956 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
3957 int yycount = 1;
3958
3959 yyarg[0] = yytname[yytype];
3960 yyfmt = yystpcpy (yyformat, yyunexpected);
3961
3962 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
3963 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3964 {
3965 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
3966 {
3967 yycount = 1;
3968 yysize = yysize0;
3969 yyformat[sizeof yyunexpected - 1] = '\0';
3970 break;
3971 }
3972 yyarg[yycount++] = yytname[yyx];
3973 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
3974 yysize_overflow |= yysize1 < yysize;
3975 yysize = yysize1;
3976 yyfmt = yystpcpy (yyfmt, yyprefix);
3977 yyprefix = yyor;
3978 }
3979
3980 yyf = YY_(yyformat);
3981 yysize1 = yysize + yystrlen (yyf);
3982 yysize_overflow |= yysize1 < yysize;
3983 yysize = yysize1;
3984
3985 if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
3986 yymsg = (char *) YYSTACK_ALLOC (yysize);
3987 if (yymsg)
3988 {
3989 /* Avoid sprintf, as that infringes on the user's name space.
3990 Don't have undefined behavior even if the translation
3991 produced a string with the wrong number of "%s"s. */
3992 char *yyp = yymsg;
3993 int yyi = 0;
3994 while ((*yyp = *yyf))
3995 {
3996 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
3997 {
3998 yyp += yytnamerr (yyp, yyarg[yyi++]);
3999 yyf += 2;
4000 }
4001 else
4002 {
4003 yyp++;
4004 yyf++;
4005 }
4006 }
4007 yyerror (yymsg);
4008 YYSTACK_FREE (yymsg);
4009 }
4010 else
4011 {
4012 yyerror (YY_("syntax error"));
4013 goto yyexhaustedlab;
4014 }
4015 }
4016 else
4017#endif /* YYERROR_VERBOSE */
4018 yyerror (YY_("syntax error"));
4019 }
4020
4021
4022
4023 if (yyerrstatus == 3)
4024 {
4025 /* If just tried and failed to reuse look-ahead token after an
4026 error, discard it. */
4027
4028 if (yychar <= YYEOF)
4029 {
4030 /* Return failure if at end of input. */
4031 if (yychar == YYEOF)
4032 YYABORT;
4033 }
4034 else
4035 {
4036 yydestruct ("Error: discarding", yytoken, &yylval);
4037 yychar = YYEMPTY;
4038 }
4039 }
4040
4041 /* Else will try to reuse look-ahead token after shifting the error
4042 token. */
4043 goto yyerrlab1;
4044
4045
4046/*---------------------------------------------------.
4047| yyerrorlab -- error raised explicitly by YYERROR. |
4048`---------------------------------------------------*/
4049yyerrorlab:
4050
4051 /* Pacify compilers like GCC when the user code never invokes
4052 YYERROR and the label yyerrorlab therefore never appears in user
4053 code. */
4054 if (0)
4055 goto yyerrorlab;
4056
4057yyvsp -= yylen;
4058 yyssp -= yylen;
4059 yystate = *yyssp;
4060 goto yyerrlab1;
4061
4062
4063/*-------------------------------------------------------------.
4064| yyerrlab1 -- common code for both syntax error and YYERROR. |
4065`-------------------------------------------------------------*/
4066yyerrlab1:
4067 yyerrstatus = 3; /* Each real token shifted decrements this. */
4068
4069 for (;;)
4070 {
4071 yyn = yypact[yystate];
4072 if (yyn != YYPACT_NINF)
4073 {
4074 yyn += YYTERROR;
4075 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
4076 {
4077 yyn = yytable[yyn];
4078 if (0 < yyn)
4079 break;
4080 }
4081 }
4082
4083 /* Pop the current state because it cannot handle the error token. */
4084 if (yyssp == yyss)
4085 YYABORT;
4086
4087
4088 yydestruct ("Error: popping", yystos[yystate], yyvsp);
4089 YYPOPSTACK;
4090 yystate = *yyssp;
4091 YY_STACK_PRINT (yyss, yyssp);
4092 }
4093
4094 if (yyn == YYFINAL)
4095 YYACCEPT;
4096
4097 *++yyvsp = yylval;
4098
4099
4100 /* Shift the error token. */
4101 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
4102
4103 yystate = yyn;
4104 goto yynewstate;
4105
4106
4107/*-------------------------------------.
4108| yyacceptlab -- YYACCEPT comes here. |
4109`-------------------------------------*/
4110yyacceptlab:
4111 yyresult = 0;
4112 goto yyreturn;
4113
4114/*-----------------------------------.
4115| yyabortlab -- YYABORT comes here. |
4116`-----------------------------------*/
4117yyabortlab:
4118 yyresult = 1;
4119 goto yyreturn;
4120
4121#ifndef yyoverflow
4122/*-------------------------------------------------.
4123| yyexhaustedlab -- memory exhaustion comes here. |
4124`-------------------------------------------------*/
4125yyexhaustedlab:
4126 yyerror (YY_("memory exhausted"));
4127 yyresult = 2;
4128 /* Fall through. */
4129#endif
4130
4131yyreturn:
4132 if (yychar != YYEOF && yychar != YYEMPTY)
4133 yydestruct ("Cleanup: discarding lookahead",
4134 yytoken, &yylval);
4135 while (yyssp != yyss)
4136 {
4137 yydestruct ("Cleanup: popping",
4138 yystos[*yyssp], yyvsp);
4139 YYPOPSTACK;
4140 }
4141#ifndef yyoverflow
4142 if (yyss != yyssa)
4143 YYSTACK_FREE (yyss);
4144#endif
4145 return yyresult;
4146}
4147
4148
Reid Spencer187ccf82006-12-09 16:57:22 +00004149#line 1384 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
Reid Spencere7c3c602006-11-30 06:36:44 +00004150
4151
4152int yyerror(const char *ErrorMsg) {
4153 std::string where
4154 = std::string((CurFilename == "-") ? std::string("<stdin>") : CurFilename)
4155 + ":" + llvm::utostr((unsigned) Upgradelineno) + ": ";
4156 std::string errMsg = std::string(ErrorMsg) + "\n" + where + " while reading ";
4157 if (yychar == YYEMPTY || yychar == 0)
4158 errMsg += "end-of-file.";
4159 else
4160 errMsg += "token: '" + std::string(Upgradetext, Upgradeleng) + "'";
4161 std::cerr << errMsg << '\n';
4162 exit(1);
4163}
4164