[llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeParser.cpp UpgradeParser.cpp.cvs UpgradeParser.h UpgradeParser.h.cvs UpgradeParser.y.cvs

Reid Spencer reid at x10sys.com
Sun Dec 31 17:20:56 PST 2006



Changes in directory llvm/tools/llvm-upgrade:

UpgradeParser.cpp updated: 1.29 -> 1.30
UpgradeParser.cpp.cvs updated: 1.27 -> 1.28
UpgradeParser.h updated: 1.22 -> 1.23
UpgradeParser.h.cvs updated: 1.20 -> 1.21
UpgradeParser.y.cvs updated: 1.26 -> 1.27
---
Log message:

Regenerate.


---
Diffs of the changes:  (+493 -400)

 UpgradeParser.cpp     |  427 ++++++++++++++++++++++++++------------------------
 UpgradeParser.cpp.cvs |  427 ++++++++++++++++++++++++++------------------------
 UpgradeParser.h       |    2 
 UpgradeParser.h.cvs   |    2 
 UpgradeParser.y.cvs   |   35 +++-
 5 files changed, 493 insertions(+), 400 deletions(-)


Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp
diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.29 llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.30
--- llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.29	Sun Dec 31 00:02:26 2006
+++ llvm/tools/llvm-upgrade/UpgradeParser.cpp	Sun Dec 31 19:20:41 2006
@@ -396,6 +396,15 @@
 // definitions and calls.
 static bool AddAttributes = false;
 
+// This bool is used to communicate between the InstVal and Inst rules about
+// whether or not a cast should be deleted. When the flag is set, InstVal has
+// determined that the cast is a candidate. However, it can only be deleted if
+// the value being casted is the same value name as the instruction. The Inst
+// rule makes that comparison if the flag is set and comments out the
+// instruction if they match.
+static bool deleteUselessCastFlag = false;
+static std::string* deleteUselessCastName = 0;
+
 typedef std::vector<TypeInfo> TypeVector;
 static TypeVector EnumeratedTypes;
 typedef std::map<std::string,TypeInfo> TypeMap;
@@ -652,7 +661,7 @@
 #endif
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 280 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 289 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
   TypeInfo        Type;
@@ -661,7 +670,7 @@
   ValueList*      ValList;
 } YYSTYPE;
 /* Line 196 of yacc.c.  */
-#line 665 "UpgradeParser.tab.c"
+#line 674 "UpgradeParser.tab.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -673,7 +682,7 @@
 
 
 /* Line 219 of yacc.c.  */
-#line 677 "UpgradeParser.tab.c"
+#line 686 "UpgradeParser.tab.c"
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 # define YYSIZE_T __SIZE_TYPE__
@@ -1029,37 +1038,37 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 {
-       0,   343,   343,   343,   344,   344,   348,   348,   348,   348,
-     348,   348,   348,   349,   349,   349,   349,   350,   350,   350,
-     351,   351,   351,   351,   351,   351,   352,   352,   352,   352,
-     352,   352,   352,   352,   352,   352,   353,   353,   353,   353,
-     353,   353,   353,   353,   353,   353,   354,   354,   354,   354,
-     354,   354,   355,   355,   355,   355,   356,   356,   356,   356,
-     356,   356,   356,   357,   357,   357,   357,   357,   357,   362,
-     362,   362,   362,   363,   363,   363,   363,   364,   364,   365,
-     365,   368,   371,   376,   376,   376,   376,   376,   376,   377,
-     378,   381,   381,   381,   381,   381,   382,   383,   388,   393,
-     394,   397,   398,   406,   412,   413,   416,   417,   426,   427,
-     440,   440,   441,   441,   442,   446,   446,   446,   446,   446,
-     446,   446,   447,   447,   447,   447,   447,   449,   453,   457,
-     460,   465,   471,   479,   487,   493,   497,   503,   507,   518,
-     521,   529,   530,   535,   538,   548,   554,   559,   565,   571,
-     577,   582,   588,   594,   600,   606,   612,   618,   624,   630,
-     636,   644,   658,   670,   675,   681,   686,   692,   697,   702,
-     710,   715,   720,   730,   735,   740,   740,   750,   755,   758,
-     763,   767,   771,   773,   773,   776,   788,   793,   798,   807,
-     816,   825,   834,   839,   844,   849,   851,   851,   854,   859,
-     866,   871,   878,   885,   890,   891,   899,   899,   900,   900,
-     902,   909,   913,   917,   920,   925,   928,   931,   950,   951,
-     954,   965,   966,   968,   976,   977,   978,   982,   995,   996,
-     999,   999,   999,   999,   999,   999,   999,  1000,  1001,  1006,
-    1007,  1016,  1016,  1020,  1026,  1037,  1043,  1046,  1054,  1058,
-    1063,  1066,  1072,  1072,  1074,  1079,  1084,  1089,  1097,  1104,
-    1110,  1130,  1135,  1141,  1146,  1154,  1163,  1170,  1178,  1182,
-    1189,  1190,  1194,  1199,  1202,  1208,  1213,  1219,  1224,  1229,
-    1234,  1242,  1256,  1261,  1266,  1271,  1276,  1281,  1286,  1303,
-    1308,  1309,  1313,  1314,  1317,  1324,  1331,  1338,  1345,  1350,
-    1357,  1364
+       0,   352,   352,   352,   353,   353,   357,   357,   357,   357,
+     357,   357,   357,   358,   358,   358,   358,   359,   359,   359,
+     360,   360,   360,   360,   360,   360,   361,   361,   361,   361,
+     361,   361,   361,   361,   361,   361,   362,   362,   362,   362,
+     362,   362,   362,   362,   362,   362,   363,   363,   363,   363,
+     363,   363,   364,   364,   364,   364,   365,   365,   365,   365,
+     365,   365,   365,   366,   366,   366,   366,   366,   366,   371,
+     371,   371,   371,   372,   372,   372,   372,   373,   373,   374,
+     374,   377,   380,   385,   385,   385,   385,   385,   385,   386,
+     387,   390,   390,   390,   390,   390,   391,   392,   397,   402,
+     403,   406,   407,   415,   421,   422,   425,   426,   435,   436,
+     449,   449,   450,   450,   451,   455,   455,   455,   455,   455,
+     455,   455,   456,   456,   456,   456,   456,   458,   462,   466,
+     469,   474,   480,   488,   496,   502,   506,   512,   516,   527,
+     530,   538,   539,   544,   547,   557,   563,   568,   574,   580,
+     586,   591,   597,   603,   609,   615,   621,   627,   633,   639,
+     645,   653,   667,   679,   684,   690,   695,   701,   706,   711,
+     719,   724,   729,   739,   744,   749,   749,   759,   764,   767,
+     772,   776,   780,   782,   782,   785,   797,   802,   807,   816,
+     825,   834,   843,   848,   853,   858,   860,   860,   863,   868,
+     875,   880,   887,   894,   899,   900,   908,   908,   909,   909,
+     911,   918,   922,   926,   929,   934,   937,   940,   959,   960,
+     963,   974,   975,   977,   985,   986,   987,   991,  1004,  1005,
+    1008,  1008,  1008,  1008,  1008,  1008,  1008,  1009,  1010,  1015,
+    1016,  1025,  1025,  1029,  1035,  1046,  1052,  1055,  1063,  1067,
+    1072,  1075,  1081,  1081,  1083,  1088,  1093,  1098,  1106,  1113,
+    1119,  1139,  1144,  1150,  1155,  1163,  1180,  1187,  1195,  1199,
+    1206,  1207,  1211,  1216,  1219,  1225,  1230,  1236,  1241,  1246,
+    1251,  1259,  1287,  1292,  1297,  1302,  1307,  1312,  1317,  1334,
+    1339,  1340,  1344,  1345,  1348,  1355,  1362,  1369,  1376,  1381,
+    1388,  1395
 };
 #endif
 
@@ -2408,26 +2417,26 @@
   switch (yyn)
     {
         case 81:
-#line 368 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 377 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[-1].String);
   ;}
     break;
 
   case 82:
-#line 371 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 380 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string(""); 
   ;}
     break;
 
   case 90:
-#line 378 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 387 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 97:
-#line 383 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 392 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += *(yyvsp[0].String); 
     delete (yyvsp[0].String);
@@ -2436,27 +2445,27 @@
     break;
 
   case 98:
-#line 388 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 397 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 99:
-#line 393 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 402 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 100:
-#line 394 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 403 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;}
     break;
 
   case 101:
-#line 397 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 406 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 102:
-#line 398 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 407 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, ", "); 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
@@ -2466,7 +2475,7 @@
     break;
 
   case 103:
-#line 406 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 415 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -2475,17 +2484,17 @@
     break;
 
   case 104:
-#line 412 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 421 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 106:
-#line 416 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 425 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 107:
-#line 417 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 426 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
       (yyvsp[-1].String)->insert(0, ", ");
       if (!(yyvsp[0].String)->empty())
@@ -2496,7 +2505,7 @@
     break;
 
   case 109:
-#line 427 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 436 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
       *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
       delete (yyvsp[0].String);
@@ -2505,7 +2514,7 @@
     break;
 
   case 127:
-#line 449 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 458 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String); 
     (yyval.Type).oldTy = OpaqueTy; 
@@ -2513,7 +2522,7 @@
     break;
 
   case 128:
-#line 453 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String);
     (yyval.Type).oldTy = UnresolvedTy;
@@ -2521,14 +2530,14 @@
     break;
 
   case 129:
-#line 457 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 466 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type) = (yyvsp[0].Type); 
   ;}
     break;
 
   case 130:
-#line 460 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 469 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Type UpReference
     (yyvsp[0].String)->insert(0, "\\");
     (yyval.Type).newTy = (yyvsp[0].String);
@@ -2537,7 +2546,7 @@
     break;
 
   case 131:
-#line 465 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 474 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {           // Function derived type?
     *(yyvsp[-3].Type).newTy += "( " + *(yyvsp[-1].String) + " )";
     delete (yyvsp[-1].String);
@@ -2547,7 +2556,7 @@
     break;
 
   case 132:
-#line 471 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 480 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {          // Sized array type?
     (yyvsp[-3].String)->insert(0,"[ ");
     *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " ]";
@@ -2559,7 +2568,7 @@
     break;
 
   case 133:
-#line 479 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 488 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {          // Packed array type?
     (yyvsp[-3].String)->insert(0,"< ");
     *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " >";
@@ -2571,7 +2580,7 @@
     break;
 
   case 134:
-#line 487 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 496 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                        // Structure type?
     (yyvsp[-1].String)->insert(0, "{ ");
     *(yyvsp[-1].String) += " }";
@@ -2581,7 +2590,7 @@
     break;
 
   case 135:
-#line 493 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 502 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                                  // Empty structure type?
     (yyval.Type).newTy = new std::string("{}");
     (yyval.Type).oldTy = StructTy;
@@ -2589,7 +2598,7 @@
     break;
 
   case 136:
-#line 497 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 506 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                // Packed Structure type?
     (yyvsp[-2].String)->insert(0, "<{ ");
     *(yyvsp[-2].String) += " }>";
@@ -2599,7 +2608,7 @@
     break;
 
   case 137:
-#line 503 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 512 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                          // Empty packed structure type?
     (yyval.Type).newTy = new std::string("<{}>");
     (yyval.Type).oldTy = StructTy;
@@ -2607,7 +2616,7 @@
     break;
 
   case 138:
-#line 507 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 516 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                             // Pointer type?
     *(yyvsp[-1].Type).newTy += '*';
     (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy;
@@ -2617,14 +2626,14 @@
     break;
 
   case 139:
-#line 518 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 527 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].Type).newTy;
   ;}
     break;
 
   case 140:
-#line 521 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 530 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Type).newTy;
     delete (yyvsp[0].Type).newTy;
@@ -2633,7 +2642,7 @@
     break;
 
   case 142:
-#line 530 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 539 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     delete (yyvsp[0].String);
@@ -2642,21 +2651,21 @@
     break;
 
   case 143:
-#line 535 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 544 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 144:
-#line 538 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 547 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
   case 145:
-#line 548 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 557 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2666,7 +2675,7 @@
     break;
 
   case 146:
-#line 554 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 563 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2675,7 +2684,7 @@
     break;
 
   case 147:
-#line 559 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 568 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2685,7 +2694,7 @@
     break;
 
   case 148:
-#line 565 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 574 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2695,7 +2704,7 @@
     break;
 
   case 149:
-#line 571 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 580 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2705,7 +2714,7 @@
     break;
 
   case 150:
-#line 577 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 586 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2714,7 +2723,7 @@
     break;
 
   case 151:
-#line 582 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 591 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2724,7 +2733,7 @@
     break;
 
   case 152:
-#line 588 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 597 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2734,7 +2743,7 @@
     break;
 
   case 153:
-#line 594 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 603 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2744,7 +2753,7 @@
     break;
 
   case 154:
-#line 600 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 609 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2754,7 +2763,7 @@
     break;
 
   case 155:
-#line 606 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 615 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2764,7 +2773,7 @@
     break;
 
   case 156:
-#line 612 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 621 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {      // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2774,7 +2783,7 @@
     break;
 
   case 157:
-#line 618 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 627 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {            // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2784,7 +2793,7 @@
     break;
 
   case 158:
-#line 624 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 633 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                      // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2794,7 +2803,7 @@
     break;
 
   case 159:
-#line 630 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 639 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                     // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2804,7 +2813,7 @@
     break;
 
   case 160:
-#line 636 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 645 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Float & Double constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2814,7 +2823,7 @@
     break;
 
   case 161:
-#line 644 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 653 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-3].Const).cnst;
     TypeInfo DstTy = (yyvsp[-1].Type);
@@ -2832,7 +2841,7 @@
     break;
 
   case 162:
-#line 658 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 667 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst;
     for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) {
@@ -2848,7 +2857,7 @@
     break;
 
   case 163:
-#line 670 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 679 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2857,7 +2866,7 @@
     break;
 
   case 164:
-#line 675 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 684 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); 
     (yyval.String) = new std::string(op);
@@ -2867,7 +2876,7 @@
     break;
 
   case 165:
-#line 681 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 690 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2876,7 +2885,7 @@
     break;
 
   case 166:
-#line 686 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 695 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) = getCompareOp(*(yyvsp[-5].String), (yyvsp[-3].Const).type);
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
@@ -2886,7 +2895,7 @@
     break;
 
   case 167:
-#line 692 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 701 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2895,7 +2904,7 @@
     break;
 
   case 168:
-#line 697 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 706 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2904,7 +2913,7 @@
     break;
 
   case 169:
-#line 702 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 711 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-5].String)->c_str();
     if (*(yyvsp[-5].String) == "shr")
@@ -2916,7 +2925,7 @@
     break;
 
   case 170:
-#line 710 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 719 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2925,7 +2934,7 @@
     break;
 
   case 171:
-#line 715 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 724 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2934,7 +2943,7 @@
     break;
 
   case 172:
-#line 720 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 729 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2943,7 +2952,7 @@
     break;
 
   case 173:
-#line 730 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 739 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst;
     (yyvsp[0].Const).destroy();
@@ -2952,25 +2961,25 @@
     break;
 
   case 174:
-#line 735 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 744 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;}
     break;
 
   case 177:
-#line 750 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 759 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
 ;}
     break;
 
   case 178:
-#line 755 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 764 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 179:
-#line 758 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 767 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -2979,7 +2988,7 @@
     break;
 
   case 180:
-#line 763 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 772 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "module asm " << ' ' << *(yyvsp[0].String) << '\n';
     (yyval.String) = 0;
@@ -2987,7 +2996,7 @@
     break;
 
   case 181:
-#line 767 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 776 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "implementation\n";
     (yyval.String) = 0;
@@ -2995,17 +3004,17 @@
     break;
 
   case 182:
-#line 771 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 780 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = 0; ;}
     break;
 
   case 184:
-#line 773 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 782 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;}
     break;
 
   case 185:
-#line 776 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 785 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     EnumeratedTypes.push_back((yyvsp[0].Type));
     if (!(yyvsp[-2].String)->empty()) {
@@ -3021,7 +3030,7 @@
     break;
 
   case 186:
-#line 788 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 797 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {       // Function prototypes can be in const pool
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3030,7 +3039,7 @@
     break;
 
   case 187:
-#line 793 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {  // Asm blocks can be in the const pool
     *O << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n';
     delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); 
@@ -3039,7 +3048,7 @@
     break;
 
   case 188:
-#line 798 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 807 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
@@ -3052,7 +3061,7 @@
     break;
 
   case 189:
-#line 807 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 816 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
@@ -3065,7 +3074,7 @@
     break;
 
   case 190:
-#line 816 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 825 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
@@ -3078,7 +3087,7 @@
     break;
 
   case 191:
-#line 825 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 834 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
@@ -3091,7 +3100,7 @@
     break;
 
   case 192:
-#line 834 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 843 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *O << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n';
     delete (yyvsp[-1].String); delete (yyvsp[0].String);
@@ -3100,7 +3109,7 @@
     break;
 
   case 193:
-#line 839 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 848 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[-2].String); delete (yyvsp[0].String);
@@ -3109,14 +3118,14 @@
     break;
 
   case 194:
-#line 844 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 853 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.String) = 0;
   ;}
     break;
 
   case 198:
-#line 854 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 863 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3125,7 +3134,7 @@
     break;
 
   case 199:
-#line 859 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 868 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     if (*(yyvsp[0].String) == "64")
@@ -3136,7 +3145,7 @@
     break;
 
   case 200:
-#line 866 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 875 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3145,7 +3154,7 @@
     break;
 
   case 201:
-#line 871 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 880 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3154,7 +3163,7 @@
     break;
 
   case 202:
-#line 878 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 887 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-1].String)->insert(0, "[ ");
     *(yyvsp[-1].String) += " ]";
@@ -3163,7 +3172,7 @@
     break;
 
   case 203:
-#line 885 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 894 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3172,19 +3181,19 @@
     break;
 
   case 205:
-#line 891 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 900 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
   case 209:
-#line 900 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 909 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 210:
-#line 902 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 911 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
   (yyval.String) = (yyvsp[-1].Type).newTy;
   if (!(yyvsp[0].String)->empty())
@@ -3194,7 +3203,7 @@
     break;
 
   case 211:
-#line 909 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 918 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3202,21 +3211,21 @@
     break;
 
   case 212:
-#line 913 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 922 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 213:
-#line 917 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 926 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 214:
-#line 920 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 929 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     (yyval.String) = (yyvsp[-2].String);
@@ -3225,19 +3234,19 @@
     break;
 
   case 215:
-#line 925 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 934 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 216:
-#line 928 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 937 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 217:
-#line 931 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 940 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-7].String)->empty()) {
       *(yyvsp[-7].String) += " ";
@@ -3259,17 +3268,17 @@
     break;
 
   case 218:
-#line 950 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 959 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;}
     break;
 
   case 219:
-#line 951 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 960 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string ("{"); ;}
     break;
 
   case 220:
-#line 954 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 963 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "define ";
     if (!(yyvsp[-2].String)->empty()) {
@@ -3282,17 +3291,17 @@
     break;
 
   case 221:
-#line 965 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 974 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;}
     break;
 
   case 222:
-#line 966 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 975 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); ;}
     break;
 
   case 223:
-#line 968 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 977 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
   if ((yyvsp[-1].String))
     *O << *(yyvsp[-1].String);
@@ -3302,12 +3311,12 @@
     break;
 
   case 224:
-#line 976 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 985 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 227:
-#line 982 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 991 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     if (!(yyvsp[-1].String)->empty())
       *(yyvsp[-2].String) += " " + *(yyvsp[-1].String);
@@ -3319,12 +3328,12 @@
     break;
 
   case 228:
-#line 995 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1004 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 238:
-#line 1001 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1010 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, "<");
     *(yyvsp[-1].String) += ">";
@@ -3333,7 +3342,7 @@
     break;
 
   case 240:
-#line 1007 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1016 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty()) {
       *(yyvsp[-4].String) += " " + *(yyvsp[-3].String);
@@ -3345,7 +3354,7 @@
     break;
 
   case 243:
-#line 1020 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1029 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = false;
@@ -3355,7 +3364,7 @@
     break;
 
   case 244:
-#line 1026 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1035 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = true;
@@ -3365,7 +3374,7 @@
     break;
 
   case 245:
-#line 1037 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1046 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value) = (yyvsp[0].Value);
     (yyval.Value).type = (yyvsp[-1].Type);
@@ -3374,28 +3383,28 @@
     break;
 
   case 246:
-#line 1043 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1052 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 247:
-#line 1046 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1055 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { // Do not allow functions with 0 basic blocks   
     (yyval.String) = 0;
   ;}
     break;
 
   case 248:
-#line 1054 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1063 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 249:
-#line 1058 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1067 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3404,14 +3413,14 @@
     break;
 
   case 250:
-#line 1063 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1072 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 251:
-#line 1066 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1075 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3420,12 +3429,12 @@
     break;
 
   case 253:
-#line 1072 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1081 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;}
     break;
 
   case 254:
-#line 1074 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1083 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {              // Return with a result...
     *O << "    " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Value).val << '\n';
     delete (yyvsp[-1].String); (yyvsp[0].Value).destroy();
@@ -3434,7 +3443,7 @@
     break;
 
   case 255:
-#line 1079 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1088 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                                       // Return with no result...
     *O << "    " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Type).newTy << '\n';
     delete (yyvsp[-1].String); (yyvsp[0].Type).destroy();
@@ -3443,7 +3452,7 @@
     break;
 
   case 256:
-#line 1084 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1093 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                         // Unconditional Branch...
     *O << "    " << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].Value).val << '\n';
     delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
@@ -3452,7 +3461,7 @@
     break;
 
   case 257:
-#line 1089 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1098 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {  
     *O << "    " << *(yyvsp[-8].String) << ' ' << *(yyvsp[-7].Type).newTy << ' ' << *(yyvsp[-6].Value).val << ", " 
        << *(yyvsp[-4].Type).newTy << ' ' << *(yyvsp[-3].Value).val << ", " << *(yyvsp[-1].Type).newTy << ' ' 
@@ -3464,7 +3473,7 @@
     break;
 
   case 258:
-#line 1097 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1106 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[-8].String) << ' ' << *(yyvsp[-7].Type).newTy << ' ' << *(yyvsp[-6].Value).val << ", " 
        << *(yyvsp[-4].Type).newTy << ' ' << *(yyvsp[-3].Value).val << " [" << *(yyvsp[-1].String) << " ]\n";
@@ -3475,7 +3484,7 @@
     break;
 
   case 259:
-#line 1104 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[-7].String) << ' ' << *(yyvsp[-6].Type).newTy << ' ' << *(yyvsp[-5].Value).val << ", " 
        << *(yyvsp[-3].Type).newTy << ' ' << *(yyvsp[-2].Value).val << "[]\n";
@@ -3485,7 +3494,7 @@
     break;
 
   case 260:
-#line 1111 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1120 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    ";
     if (!(yyvsp[-13].String)->empty())
@@ -3508,7 +3517,7 @@
     break;
 
   case 261:
-#line 1130 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1139 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3517,7 +3526,7 @@
     break;
 
   case 262:
-#line 1135 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1144 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3526,7 +3535,7 @@
     break;
 
   case 263:
-#line 1141 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1150 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + " " + *(yyvsp[-3].String) + ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Type).destroy(); delete (yyvsp[-3].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
@@ -3535,7 +3544,7 @@
     break;
 
   case 264:
-#line 1146 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-3].String)->insert(0, *(yyvsp[-4].Type).newTy + " " );
     *(yyvsp[-3].String) += ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
@@ -3545,18 +3554,26 @@
     break;
 
   case 265:
-#line 1154 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
-    if (!(yyvsp[-1].String)->empty())
-      *(yyvsp[-1].String) += " = ";
+    if (!(yyvsp[-1].String)->empty()) {
+      if (deleteUselessCastFlag && *deleteUselessCastName == *(yyvsp[-1].String)) {
+        *(yyvsp[-1].String) += " = ";
+        (yyvsp[-1].String)->insert(0, "; "); // don't actually delete it, just comment it out
+        delete deleteUselessCastName;
+      } else {
+        *(yyvsp[-1].String) += " = ";
+      }
+    }
     *(yyvsp[-1].String) += *(yyvsp[0].String);
     delete (yyvsp[0].String);
+    deleteUselessCastFlag = false;
     (yyval.String) = (yyvsp[-1].String); 
   ;}
     break;
 
   case 266:
-#line 1163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1180 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {    // Used for PHI nodes
     (yyvsp[-3].Value).val->insert(0, *(yyvsp[-5].Type).newTy + "[");
     *(yyvsp[-3].Value).val += "," + *(yyvsp[-1].Value).val + "]";
@@ -3567,7 +3584,7 @@
     break;
 
   case 267:
-#line 1170 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += ", [" + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + "]";
     (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3576,7 +3593,7 @@
     break;
 
   case 268:
-#line 1178 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.ValList) = new ValueList();
     (yyval.ValList)->push_back((yyvsp[0].Value));
@@ -3584,7 +3601,7 @@
     break;
 
   case 269:
-#line 1182 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-2].ValList)->push_back((yyvsp[0].Value));
     (yyval.ValList) = (yyvsp[-2].ValList);
@@ -3592,17 +3609,17 @@
     break;
 
   case 270:
-#line 1189 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1206 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
   case 271:
-#line 1190 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1207 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = new ValueList(); ;}
     break;
 
   case 272:
-#line 1194 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3611,7 +3628,7 @@
     break;
 
   case 274:
-#line 1202 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1219 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); 
     (yyval.String) = new std::string(op);
@@ -3621,7 +3638,7 @@
     break;
 
   case 275:
-#line 1208 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1225 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3630,7 +3647,7 @@
     break;
 
   case 276:
-#line 1213 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1230 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) = getCompareOp(*(yyvsp[-4].String), (yyvsp[-3].Type));
     *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
@@ -3640,7 +3657,7 @@
     break;
 
   case 277:
-#line 1219 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1236 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + "," + *(yyvsp[0].Value).val;
     delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3649,7 +3666,7 @@
     break;
 
   case 278:
-#line 1224 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1241 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + "," + *(yyvsp[0].Value).val;
     delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3658,7 +3675,7 @@
     break;
 
   case 279:
-#line 1229 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1246 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3667,7 +3684,7 @@
     break;
 
   case 280:
-#line 1234 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1251 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-3].String)->c_str();
     if (*(yyvsp[-3].String) == "shr")
@@ -3679,7 +3696,7 @@
     break;
 
   case 281:
-#line 1242 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1259 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-2].Value).val;
     TypeInfo SrcTy = (yyvsp[-2].Value).type;
@@ -3691,13 +3708,27 @@
     } else {
       *(yyval.String) += *(yyvsp[-3].String) + " " + source + " to " + *DstTy.newTy;
     }
+    // Check to see if this is a useless cast of a value to the same name
+    // and the same type. Such casts will probably cause redefinition errors
+    // when assembled and perform no code gen action so just remove them.
+    if (*(yyvsp[-3].String) == "cast" || *(yyvsp[-3].String) == "bitcast")
+      if ((yyvsp[-2].Value).type.isInteger() && (yyvsp[0].Type).isInteger() &&
+          (yyvsp[-2].Value).type.getBitWidth() == (yyvsp[0].Type).getBitWidth()) {
+        deleteUselessCastFlag = true; // Flag the "Inst" rule
+        deleteUselessCastName = new std::string(*(yyvsp[-2].Value).val); // save the name
+        size_t pos = deleteUselessCastName->find_first_of("%\"",0);
+        if (pos != std::string::npos) {
+          // remove the type portion before val
+          deleteUselessCastName->erase(0, pos);
+        }
+      }
     delete (yyvsp[-3].String); (yyvsp[-2].Value).destroy();
     delete (yyvsp[-1].String); (yyvsp[0].Type).destroy();
   ;}
     break;
 
   case 282:
-#line 1256 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1287 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3706,7 +3737,7 @@
     break;
 
   case 283:
-#line 1261 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1292 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Type).newTy;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Type).destroy();
@@ -3715,7 +3746,7 @@
     break;
 
   case 284:
-#line 1266 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1297 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3724,7 +3755,7 @@
     break;
 
   case 285:
-#line 1271 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1302 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3733,7 +3764,7 @@
     break;
 
   case 286:
-#line 1276 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1307 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3742,7 +3773,7 @@
     break;
 
   case 287:
-#line 1281 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1312 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3751,7 +3782,7 @@
     break;
 
   case 288:
-#line 1286 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1317 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-6].String) += " " + *(yyvsp[-5].String);
@@ -3772,22 +3803,22 @@
     break;
 
   case 290:
-#line 1308 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1339 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
   case 291:
-#line 1309 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1340 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {  (yyval.ValList) = new ValueList(); ;}
     break;
 
   case 293:
-#line 1314 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1345 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 294:
-#line 1317 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1348 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3798,7 +3829,7 @@
     break;
 
   case 295:
-#line 1324 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1355 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val;
     if (!(yyvsp[0].String)->empty())
@@ -3809,7 +3840,7 @@
     break;
 
   case 296:
-#line 1331 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1362 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3820,7 +3851,7 @@
     break;
 
   case 297:
-#line 1338 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1369 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val;
     if (!(yyvsp[0].String)->empty())
@@ -3831,7 +3862,7 @@
     break;
 
   case 298:
-#line 1345 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1376 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3840,7 +3871,7 @@
     break;
 
   case 299:
-#line 1350 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1381 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty())
       *(yyvsp[-3].String) += " ";
@@ -3851,7 +3882,7 @@
     break;
 
   case 300:
-#line 1357 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1388 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-5].String) += " ";
@@ -3862,7 +3893,7 @@
     break;
 
   case 301:
-#line 1364 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1395 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     // Upgrade the indices
     for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) {
@@ -3893,7 +3924,7 @@
     }
 
 /* Line 1126 of yacc.c.  */
-#line 3897 "UpgradeParser.tab.c"
+#line 3928 "UpgradeParser.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4161,7 +4192,7 @@
 }
 
 
-#line 1388 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1419 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
 
 
 int yyerror(const char *ErrorMsg) {


Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.27 llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.28
--- llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.27	Sun Dec 31 00:02:26 2006
+++ llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs	Sun Dec 31 19:20:41 2006
@@ -396,6 +396,15 @@
 // definitions and calls.
 static bool AddAttributes = false;
 
+// This bool is used to communicate between the InstVal and Inst rules about
+// whether or not a cast should be deleted. When the flag is set, InstVal has
+// determined that the cast is a candidate. However, it can only be deleted if
+// the value being casted is the same value name as the instruction. The Inst
+// rule makes that comparison if the flag is set and comments out the
+// instruction if they match.
+static bool deleteUselessCastFlag = false;
+static std::string* deleteUselessCastName = 0;
+
 typedef std::vector<TypeInfo> TypeVector;
 static TypeVector EnumeratedTypes;
 typedef std::map<std::string,TypeInfo> TypeMap;
@@ -652,7 +661,7 @@
 #endif
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 280 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 289 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
   TypeInfo        Type;
@@ -661,7 +670,7 @@
   ValueList*      ValList;
 } YYSTYPE;
 /* Line 196 of yacc.c.  */
-#line 665 "UpgradeParser.tab.c"
+#line 674 "UpgradeParser.tab.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -673,7 +682,7 @@
 
 
 /* Line 219 of yacc.c.  */
-#line 677 "UpgradeParser.tab.c"
+#line 686 "UpgradeParser.tab.c"
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 # define YYSIZE_T __SIZE_TYPE__
@@ -1029,37 +1038,37 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 {
-       0,   343,   343,   343,   344,   344,   348,   348,   348,   348,
-     348,   348,   348,   349,   349,   349,   349,   350,   350,   350,
-     351,   351,   351,   351,   351,   351,   352,   352,   352,   352,
-     352,   352,   352,   352,   352,   352,   353,   353,   353,   353,
-     353,   353,   353,   353,   353,   353,   354,   354,   354,   354,
-     354,   354,   355,   355,   355,   355,   356,   356,   356,   356,
-     356,   356,   356,   357,   357,   357,   357,   357,   357,   362,
-     362,   362,   362,   363,   363,   363,   363,   364,   364,   365,
-     365,   368,   371,   376,   376,   376,   376,   376,   376,   377,
-     378,   381,   381,   381,   381,   381,   382,   383,   388,   393,
-     394,   397,   398,   406,   412,   413,   416,   417,   426,   427,
-     440,   440,   441,   441,   442,   446,   446,   446,   446,   446,
-     446,   446,   447,   447,   447,   447,   447,   449,   453,   457,
-     460,   465,   471,   479,   487,   493,   497,   503,   507,   518,
-     521,   529,   530,   535,   538,   548,   554,   559,   565,   571,
-     577,   582,   588,   594,   600,   606,   612,   618,   624,   630,
-     636,   644,   658,   670,   675,   681,   686,   692,   697,   702,
-     710,   715,   720,   730,   735,   740,   740,   750,   755,   758,
-     763,   767,   771,   773,   773,   776,   788,   793,   798,   807,
-     816,   825,   834,   839,   844,   849,   851,   851,   854,   859,
-     866,   871,   878,   885,   890,   891,   899,   899,   900,   900,
-     902,   909,   913,   917,   920,   925,   928,   931,   950,   951,
-     954,   965,   966,   968,   976,   977,   978,   982,   995,   996,
-     999,   999,   999,   999,   999,   999,   999,  1000,  1001,  1006,
-    1007,  1016,  1016,  1020,  1026,  1037,  1043,  1046,  1054,  1058,
-    1063,  1066,  1072,  1072,  1074,  1079,  1084,  1089,  1097,  1104,
-    1110,  1130,  1135,  1141,  1146,  1154,  1163,  1170,  1178,  1182,
-    1189,  1190,  1194,  1199,  1202,  1208,  1213,  1219,  1224,  1229,
-    1234,  1242,  1256,  1261,  1266,  1271,  1276,  1281,  1286,  1303,
-    1308,  1309,  1313,  1314,  1317,  1324,  1331,  1338,  1345,  1350,
-    1357,  1364
+       0,   352,   352,   352,   353,   353,   357,   357,   357,   357,
+     357,   357,   357,   358,   358,   358,   358,   359,   359,   359,
+     360,   360,   360,   360,   360,   360,   361,   361,   361,   361,
+     361,   361,   361,   361,   361,   361,   362,   362,   362,   362,
+     362,   362,   362,   362,   362,   362,   363,   363,   363,   363,
+     363,   363,   364,   364,   364,   364,   365,   365,   365,   365,
+     365,   365,   365,   366,   366,   366,   366,   366,   366,   371,
+     371,   371,   371,   372,   372,   372,   372,   373,   373,   374,
+     374,   377,   380,   385,   385,   385,   385,   385,   385,   386,
+     387,   390,   390,   390,   390,   390,   391,   392,   397,   402,
+     403,   406,   407,   415,   421,   422,   425,   426,   435,   436,
+     449,   449,   450,   450,   451,   455,   455,   455,   455,   455,
+     455,   455,   456,   456,   456,   456,   456,   458,   462,   466,
+     469,   474,   480,   488,   496,   502,   506,   512,   516,   527,
+     530,   538,   539,   544,   547,   557,   563,   568,   574,   580,
+     586,   591,   597,   603,   609,   615,   621,   627,   633,   639,
+     645,   653,   667,   679,   684,   690,   695,   701,   706,   711,
+     719,   724,   729,   739,   744,   749,   749,   759,   764,   767,
+     772,   776,   780,   782,   782,   785,   797,   802,   807,   816,
+     825,   834,   843,   848,   853,   858,   860,   860,   863,   868,
+     875,   880,   887,   894,   899,   900,   908,   908,   909,   909,
+     911,   918,   922,   926,   929,   934,   937,   940,   959,   960,
+     963,   974,   975,   977,   985,   986,   987,   991,  1004,  1005,
+    1008,  1008,  1008,  1008,  1008,  1008,  1008,  1009,  1010,  1015,
+    1016,  1025,  1025,  1029,  1035,  1046,  1052,  1055,  1063,  1067,
+    1072,  1075,  1081,  1081,  1083,  1088,  1093,  1098,  1106,  1113,
+    1119,  1139,  1144,  1150,  1155,  1163,  1180,  1187,  1195,  1199,
+    1206,  1207,  1211,  1216,  1219,  1225,  1230,  1236,  1241,  1246,
+    1251,  1259,  1287,  1292,  1297,  1302,  1307,  1312,  1317,  1334,
+    1339,  1340,  1344,  1345,  1348,  1355,  1362,  1369,  1376,  1381,
+    1388,  1395
 };
 #endif
 
@@ -2408,26 +2417,26 @@
   switch (yyn)
     {
         case 81:
-#line 368 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 377 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[-1].String);
   ;}
     break;
 
   case 82:
-#line 371 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 380 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string(""); 
   ;}
     break;
 
   case 90:
-#line 378 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 387 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 97:
-#line 383 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 392 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += *(yyvsp[0].String); 
     delete (yyvsp[0].String);
@@ -2436,27 +2445,27 @@
     break;
 
   case 98:
-#line 388 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 397 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 99:
-#line 393 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 402 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 100:
-#line 394 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 403 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;}
     break;
 
   case 101:
-#line 397 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 406 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 102:
-#line 398 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 407 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, ", "); 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
@@ -2466,7 +2475,7 @@
     break;
 
   case 103:
-#line 406 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 415 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -2475,17 +2484,17 @@
     break;
 
   case 104:
-#line 412 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 421 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 106:
-#line 416 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 425 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 107:
-#line 417 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 426 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
       (yyvsp[-1].String)->insert(0, ", ");
       if (!(yyvsp[0].String)->empty())
@@ -2496,7 +2505,7 @@
     break;
 
   case 109:
-#line 427 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 436 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
       *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
       delete (yyvsp[0].String);
@@ -2505,7 +2514,7 @@
     break;
 
   case 127:
-#line 449 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 458 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String); 
     (yyval.Type).oldTy = OpaqueTy; 
@@ -2513,7 +2522,7 @@
     break;
 
   case 128:
-#line 453 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String);
     (yyval.Type).oldTy = UnresolvedTy;
@@ -2521,14 +2530,14 @@
     break;
 
   case 129:
-#line 457 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 466 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type) = (yyvsp[0].Type); 
   ;}
     break;
 
   case 130:
-#line 460 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 469 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Type UpReference
     (yyvsp[0].String)->insert(0, "\\");
     (yyval.Type).newTy = (yyvsp[0].String);
@@ -2537,7 +2546,7 @@
     break;
 
   case 131:
-#line 465 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 474 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {           // Function derived type?
     *(yyvsp[-3].Type).newTy += "( " + *(yyvsp[-1].String) + " )";
     delete (yyvsp[-1].String);
@@ -2547,7 +2556,7 @@
     break;
 
   case 132:
-#line 471 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 480 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {          // Sized array type?
     (yyvsp[-3].String)->insert(0,"[ ");
     *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " ]";
@@ -2559,7 +2568,7 @@
     break;
 
   case 133:
-#line 479 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 488 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {          // Packed array type?
     (yyvsp[-3].String)->insert(0,"< ");
     *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " >";
@@ -2571,7 +2580,7 @@
     break;
 
   case 134:
-#line 487 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 496 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                        // Structure type?
     (yyvsp[-1].String)->insert(0, "{ ");
     *(yyvsp[-1].String) += " }";
@@ -2581,7 +2590,7 @@
     break;
 
   case 135:
-#line 493 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 502 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                                  // Empty structure type?
     (yyval.Type).newTy = new std::string("{}");
     (yyval.Type).oldTy = StructTy;
@@ -2589,7 +2598,7 @@
     break;
 
   case 136:
-#line 497 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 506 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                // Packed Structure type?
     (yyvsp[-2].String)->insert(0, "<{ ");
     *(yyvsp[-2].String) += " }>";
@@ -2599,7 +2608,7 @@
     break;
 
   case 137:
-#line 503 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 512 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                          // Empty packed structure type?
     (yyval.Type).newTy = new std::string("<{}>");
     (yyval.Type).oldTy = StructTy;
@@ -2607,7 +2616,7 @@
     break;
 
   case 138:
-#line 507 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 516 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                             // Pointer type?
     *(yyvsp[-1].Type).newTy += '*';
     (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy;
@@ -2617,14 +2626,14 @@
     break;
 
   case 139:
-#line 518 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 527 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].Type).newTy;
   ;}
     break;
 
   case 140:
-#line 521 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 530 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Type).newTy;
     delete (yyvsp[0].Type).newTy;
@@ -2633,7 +2642,7 @@
     break;
 
   case 142:
-#line 530 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 539 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     delete (yyvsp[0].String);
@@ -2642,21 +2651,21 @@
     break;
 
   case 143:
-#line 535 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 544 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 144:
-#line 538 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 547 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
   case 145:
-#line 548 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 557 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2666,7 +2675,7 @@
     break;
 
   case 146:
-#line 554 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 563 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2675,7 +2684,7 @@
     break;
 
   case 147:
-#line 559 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 568 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2685,7 +2694,7 @@
     break;
 
   case 148:
-#line 565 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 574 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2695,7 +2704,7 @@
     break;
 
   case 149:
-#line 571 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 580 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2705,7 +2714,7 @@
     break;
 
   case 150:
-#line 577 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 586 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2714,7 +2723,7 @@
     break;
 
   case 151:
-#line 582 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 591 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2724,7 +2733,7 @@
     break;
 
   case 152:
-#line 588 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 597 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2734,7 +2743,7 @@
     break;
 
   case 153:
-#line 594 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 603 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2744,7 +2753,7 @@
     break;
 
   case 154:
-#line 600 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 609 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2754,7 +2763,7 @@
     break;
 
   case 155:
-#line 606 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 615 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2764,7 +2773,7 @@
     break;
 
   case 156:
-#line 612 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 621 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {      // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2774,7 +2783,7 @@
     break;
 
   case 157:
-#line 618 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 627 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {            // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2784,7 +2793,7 @@
     break;
 
   case 158:
-#line 624 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 633 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                      // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2794,7 +2803,7 @@
     break;
 
   case 159:
-#line 630 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 639 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                     // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2804,7 +2813,7 @@
     break;
 
   case 160:
-#line 636 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 645 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Float & Double constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2814,7 +2823,7 @@
     break;
 
   case 161:
-#line 644 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 653 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-3].Const).cnst;
     TypeInfo DstTy = (yyvsp[-1].Type);
@@ -2832,7 +2841,7 @@
     break;
 
   case 162:
-#line 658 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 667 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst;
     for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) {
@@ -2848,7 +2857,7 @@
     break;
 
   case 163:
-#line 670 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 679 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2857,7 +2866,7 @@
     break;
 
   case 164:
-#line 675 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 684 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); 
     (yyval.String) = new std::string(op);
@@ -2867,7 +2876,7 @@
     break;
 
   case 165:
-#line 681 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 690 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2876,7 +2885,7 @@
     break;
 
   case 166:
-#line 686 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 695 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) = getCompareOp(*(yyvsp[-5].String), (yyvsp[-3].Const).type);
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
@@ -2886,7 +2895,7 @@
     break;
 
   case 167:
-#line 692 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 701 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2895,7 +2904,7 @@
     break;
 
   case 168:
-#line 697 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 706 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2904,7 +2913,7 @@
     break;
 
   case 169:
-#line 702 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 711 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-5].String)->c_str();
     if (*(yyvsp[-5].String) == "shr")
@@ -2916,7 +2925,7 @@
     break;
 
   case 170:
-#line 710 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 719 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2925,7 +2934,7 @@
     break;
 
   case 171:
-#line 715 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 724 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2934,7 +2943,7 @@
     break;
 
   case 172:
-#line 720 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 729 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2943,7 +2952,7 @@
     break;
 
   case 173:
-#line 730 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 739 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst;
     (yyvsp[0].Const).destroy();
@@ -2952,25 +2961,25 @@
     break;
 
   case 174:
-#line 735 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 744 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;}
     break;
 
   case 177:
-#line 750 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 759 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
 ;}
     break;
 
   case 178:
-#line 755 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 764 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 179:
-#line 758 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 767 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -2979,7 +2988,7 @@
     break;
 
   case 180:
-#line 763 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 772 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "module asm " << ' ' << *(yyvsp[0].String) << '\n';
     (yyval.String) = 0;
@@ -2987,7 +2996,7 @@
     break;
 
   case 181:
-#line 767 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 776 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "implementation\n";
     (yyval.String) = 0;
@@ -2995,17 +3004,17 @@
     break;
 
   case 182:
-#line 771 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 780 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = 0; ;}
     break;
 
   case 184:
-#line 773 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 782 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;}
     break;
 
   case 185:
-#line 776 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 785 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     EnumeratedTypes.push_back((yyvsp[0].Type));
     if (!(yyvsp[-2].String)->empty()) {
@@ -3021,7 +3030,7 @@
     break;
 
   case 186:
-#line 788 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 797 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {       // Function prototypes can be in const pool
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3030,7 +3039,7 @@
     break;
 
   case 187:
-#line 793 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {  // Asm blocks can be in the const pool
     *O << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n';
     delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); 
@@ -3039,7 +3048,7 @@
     break;
 
   case 188:
-#line 798 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 807 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
@@ -3052,7 +3061,7 @@
     break;
 
   case 189:
-#line 807 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 816 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
@@ -3065,7 +3074,7 @@
     break;
 
   case 190:
-#line 816 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 825 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
@@ -3078,7 +3087,7 @@
     break;
 
   case 191:
-#line 825 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 834 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
@@ -3091,7 +3100,7 @@
     break;
 
   case 192:
-#line 834 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 843 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *O << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n';
     delete (yyvsp[-1].String); delete (yyvsp[0].String);
@@ -3100,7 +3109,7 @@
     break;
 
   case 193:
-#line 839 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 848 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[-2].String); delete (yyvsp[0].String);
@@ -3109,14 +3118,14 @@
     break;
 
   case 194:
-#line 844 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 853 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.String) = 0;
   ;}
     break;
 
   case 198:
-#line 854 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 863 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3125,7 +3134,7 @@
     break;
 
   case 199:
-#line 859 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 868 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     if (*(yyvsp[0].String) == "64")
@@ -3136,7 +3145,7 @@
     break;
 
   case 200:
-#line 866 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 875 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3145,7 +3154,7 @@
     break;
 
   case 201:
-#line 871 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 880 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3154,7 +3163,7 @@
     break;
 
   case 202:
-#line 878 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 887 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-1].String)->insert(0, "[ ");
     *(yyvsp[-1].String) += " ]";
@@ -3163,7 +3172,7 @@
     break;
 
   case 203:
-#line 885 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 894 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3172,19 +3181,19 @@
     break;
 
   case 205:
-#line 891 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 900 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
   case 209:
-#line 900 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 909 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 210:
-#line 902 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 911 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
   (yyval.String) = (yyvsp[-1].Type).newTy;
   if (!(yyvsp[0].String)->empty())
@@ -3194,7 +3203,7 @@
     break;
 
   case 211:
-#line 909 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 918 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3202,21 +3211,21 @@
     break;
 
   case 212:
-#line 913 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 922 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 213:
-#line 917 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 926 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 214:
-#line 920 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 929 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     (yyval.String) = (yyvsp[-2].String);
@@ -3225,19 +3234,19 @@
     break;
 
   case 215:
-#line 925 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 934 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 216:
-#line 928 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 937 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 217:
-#line 931 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 940 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-7].String)->empty()) {
       *(yyvsp[-7].String) += " ";
@@ -3259,17 +3268,17 @@
     break;
 
   case 218:
-#line 950 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 959 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;}
     break;
 
   case 219:
-#line 951 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 960 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string ("{"); ;}
     break;
 
   case 220:
-#line 954 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 963 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "define ";
     if (!(yyvsp[-2].String)->empty()) {
@@ -3282,17 +3291,17 @@
     break;
 
   case 221:
-#line 965 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 974 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;}
     break;
 
   case 222:
-#line 966 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 975 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); ;}
     break;
 
   case 223:
-#line 968 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 977 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
   if ((yyvsp[-1].String))
     *O << *(yyvsp[-1].String);
@@ -3302,12 +3311,12 @@
     break;
 
   case 224:
-#line 976 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 985 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 227:
-#line 982 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 991 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     if (!(yyvsp[-1].String)->empty())
       *(yyvsp[-2].String) += " " + *(yyvsp[-1].String);
@@ -3319,12 +3328,12 @@
     break;
 
   case 228:
-#line 995 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1004 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 238:
-#line 1001 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1010 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, "<");
     *(yyvsp[-1].String) += ">";
@@ -3333,7 +3342,7 @@
     break;
 
   case 240:
-#line 1007 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1016 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty()) {
       *(yyvsp[-4].String) += " " + *(yyvsp[-3].String);
@@ -3345,7 +3354,7 @@
     break;
 
   case 243:
-#line 1020 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1029 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = false;
@@ -3355,7 +3364,7 @@
     break;
 
   case 244:
-#line 1026 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1035 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = true;
@@ -3365,7 +3374,7 @@
     break;
 
   case 245:
-#line 1037 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1046 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value) = (yyvsp[0].Value);
     (yyval.Value).type = (yyvsp[-1].Type);
@@ -3374,28 +3383,28 @@
     break;
 
   case 246:
-#line 1043 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1052 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 247:
-#line 1046 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1055 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { // Do not allow functions with 0 basic blocks   
     (yyval.String) = 0;
   ;}
     break;
 
   case 248:
-#line 1054 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1063 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 249:
-#line 1058 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1067 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3404,14 +3413,14 @@
     break;
 
   case 250:
-#line 1063 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1072 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 251:
-#line 1066 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1075 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3420,12 +3429,12 @@
     break;
 
   case 253:
-#line 1072 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1081 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;}
     break;
 
   case 254:
-#line 1074 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1083 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {              // Return with a result...
     *O << "    " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Value).val << '\n';
     delete (yyvsp[-1].String); (yyvsp[0].Value).destroy();
@@ -3434,7 +3443,7 @@
     break;
 
   case 255:
-#line 1079 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1088 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                                       // Return with no result...
     *O << "    " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Type).newTy << '\n';
     delete (yyvsp[-1].String); (yyvsp[0].Type).destroy();
@@ -3443,7 +3452,7 @@
     break;
 
   case 256:
-#line 1084 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1093 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {                         // Unconditional Branch...
     *O << "    " << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].Value).val << '\n';
     delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
@@ -3452,7 +3461,7 @@
     break;
 
   case 257:
-#line 1089 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1098 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {  
     *O << "    " << *(yyvsp[-8].String) << ' ' << *(yyvsp[-7].Type).newTy << ' ' << *(yyvsp[-6].Value).val << ", " 
        << *(yyvsp[-4].Type).newTy << ' ' << *(yyvsp[-3].Value).val << ", " << *(yyvsp[-1].Type).newTy << ' ' 
@@ -3464,7 +3473,7 @@
     break;
 
   case 258:
-#line 1097 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1106 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[-8].String) << ' ' << *(yyvsp[-7].Type).newTy << ' ' << *(yyvsp[-6].Value).val << ", " 
        << *(yyvsp[-4].Type).newTy << ' ' << *(yyvsp[-3].Value).val << " [" << *(yyvsp[-1].String) << " ]\n";
@@ -3475,7 +3484,7 @@
     break;
 
   case 259:
-#line 1104 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[-7].String) << ' ' << *(yyvsp[-6].Type).newTy << ' ' << *(yyvsp[-5].Value).val << ", " 
        << *(yyvsp[-3].Type).newTy << ' ' << *(yyvsp[-2].Value).val << "[]\n";
@@ -3485,7 +3494,7 @@
     break;
 
   case 260:
-#line 1111 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1120 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    ";
     if (!(yyvsp[-13].String)->empty())
@@ -3508,7 +3517,7 @@
     break;
 
   case 261:
-#line 1130 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1139 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3517,7 +3526,7 @@
     break;
 
   case 262:
-#line 1135 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1144 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3526,7 +3535,7 @@
     break;
 
   case 263:
-#line 1141 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1150 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + " " + *(yyvsp[-3].String) + ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Type).destroy(); delete (yyvsp[-3].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
@@ -3535,7 +3544,7 @@
     break;
 
   case 264:
-#line 1146 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-3].String)->insert(0, *(yyvsp[-4].Type).newTy + " " );
     *(yyvsp[-3].String) += ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
@@ -3545,18 +3554,26 @@
     break;
 
   case 265:
-#line 1154 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
-    if (!(yyvsp[-1].String)->empty())
-      *(yyvsp[-1].String) += " = ";
+    if (!(yyvsp[-1].String)->empty()) {
+      if (deleteUselessCastFlag && *deleteUselessCastName == *(yyvsp[-1].String)) {
+        *(yyvsp[-1].String) += " = ";
+        (yyvsp[-1].String)->insert(0, "; "); // don't actually delete it, just comment it out
+        delete deleteUselessCastName;
+      } else {
+        *(yyvsp[-1].String) += " = ";
+      }
+    }
     *(yyvsp[-1].String) += *(yyvsp[0].String);
     delete (yyvsp[0].String);
+    deleteUselessCastFlag = false;
     (yyval.String) = (yyvsp[-1].String); 
   ;}
     break;
 
   case 266:
-#line 1163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1180 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {    // Used for PHI nodes
     (yyvsp[-3].Value).val->insert(0, *(yyvsp[-5].Type).newTy + "[");
     *(yyvsp[-3].Value).val += "," + *(yyvsp[-1].Value).val + "]";
@@ -3567,7 +3584,7 @@
     break;
 
   case 267:
-#line 1170 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += ", [" + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + "]";
     (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3576,7 +3593,7 @@
     break;
 
   case 268:
-#line 1178 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.ValList) = new ValueList();
     (yyval.ValList)->push_back((yyvsp[0].Value));
@@ -3584,7 +3601,7 @@
     break;
 
   case 269:
-#line 1182 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-2].ValList)->push_back((yyvsp[0].Value));
     (yyval.ValList) = (yyvsp[-2].ValList);
@@ -3592,17 +3609,17 @@
     break;
 
   case 270:
-#line 1189 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1206 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
   case 271:
-#line 1190 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1207 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = new ValueList(); ;}
     break;
 
   case 272:
-#line 1194 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3611,7 +3628,7 @@
     break;
 
   case 274:
-#line 1202 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1219 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); 
     (yyval.String) = new std::string(op);
@@ -3621,7 +3638,7 @@
     break;
 
   case 275:
-#line 1208 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1225 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3630,7 +3647,7 @@
     break;
 
   case 276:
-#line 1213 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1230 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) = getCompareOp(*(yyvsp[-4].String), (yyvsp[-3].Type));
     *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
@@ -3640,7 +3657,7 @@
     break;
 
   case 277:
-#line 1219 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1236 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + "," + *(yyvsp[0].Value).val;
     delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3649,7 +3666,7 @@
     break;
 
   case 278:
-#line 1224 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1241 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + "," + *(yyvsp[0].Value).val;
     delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3658,7 +3675,7 @@
     break;
 
   case 279:
-#line 1229 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1246 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3667,7 +3684,7 @@
     break;
 
   case 280:
-#line 1234 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1251 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-3].String)->c_str();
     if (*(yyvsp[-3].String) == "shr")
@@ -3679,7 +3696,7 @@
     break;
 
   case 281:
-#line 1242 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1259 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-2].Value).val;
     TypeInfo SrcTy = (yyvsp[-2].Value).type;
@@ -3691,13 +3708,27 @@
     } else {
       *(yyval.String) += *(yyvsp[-3].String) + " " + source + " to " + *DstTy.newTy;
     }
+    // Check to see if this is a useless cast of a value to the same name
+    // and the same type. Such casts will probably cause redefinition errors
+    // when assembled and perform no code gen action so just remove them.
+    if (*(yyvsp[-3].String) == "cast" || *(yyvsp[-3].String) == "bitcast")
+      if ((yyvsp[-2].Value).type.isInteger() && (yyvsp[0].Type).isInteger() &&
+          (yyvsp[-2].Value).type.getBitWidth() == (yyvsp[0].Type).getBitWidth()) {
+        deleteUselessCastFlag = true; // Flag the "Inst" rule
+        deleteUselessCastName = new std::string(*(yyvsp[-2].Value).val); // save the name
+        size_t pos = deleteUselessCastName->find_first_of("%\"",0);
+        if (pos != std::string::npos) {
+          // remove the type portion before val
+          deleteUselessCastName->erase(0, pos);
+        }
+      }
     delete (yyvsp[-3].String); (yyvsp[-2].Value).destroy();
     delete (yyvsp[-1].String); (yyvsp[0].Type).destroy();
   ;}
     break;
 
   case 282:
-#line 1256 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1287 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3706,7 +3737,7 @@
     break;
 
   case 283:
-#line 1261 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1292 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Type).newTy;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Type).destroy();
@@ -3715,7 +3746,7 @@
     break;
 
   case 284:
-#line 1266 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1297 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3724,7 +3755,7 @@
     break;
 
   case 285:
-#line 1271 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1302 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3733,7 +3764,7 @@
     break;
 
   case 286:
-#line 1276 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1307 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3742,7 +3773,7 @@
     break;
 
   case 287:
-#line 1281 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1312 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3751,7 +3782,7 @@
     break;
 
   case 288:
-#line 1286 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1317 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-6].String) += " " + *(yyvsp[-5].String);
@@ -3772,22 +3803,22 @@
     break;
 
   case 290:
-#line 1308 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1339 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
   case 291:
-#line 1309 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1340 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {  (yyval.ValList) = new ValueList(); ;}
     break;
 
   case 293:
-#line 1314 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1345 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 294:
-#line 1317 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1348 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3798,7 +3829,7 @@
     break;
 
   case 295:
-#line 1324 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1355 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val;
     if (!(yyvsp[0].String)->empty())
@@ -3809,7 +3840,7 @@
     break;
 
   case 296:
-#line 1331 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1362 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3820,7 +3851,7 @@
     break;
 
   case 297:
-#line 1338 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1369 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val;
     if (!(yyvsp[0].String)->empty())
@@ -3831,7 +3862,7 @@
     break;
 
   case 298:
-#line 1345 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1376 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3840,7 +3871,7 @@
     break;
 
   case 299:
-#line 1350 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1381 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty())
       *(yyvsp[-3].String) += " ";
@@ -3851,7 +3882,7 @@
     break;
 
   case 300:
-#line 1357 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1388 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-5].String) += " ";
@@ -3862,7 +3893,7 @@
     break;
 
   case 301:
-#line 1364 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1395 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
     {
     // Upgrade the indices
     for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) {
@@ -3893,7 +3924,7 @@
     }
 
 /* Line 1126 of yacc.c.  */
-#line 3897 "UpgradeParser.tab.c"
+#line 3928 "UpgradeParser.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4161,7 +4192,7 @@
 }
 
 
-#line 1388 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1419 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
 
 
 int yyerror(const char *ErrorMsg) {


Index: llvm/tools/llvm-upgrade/UpgradeParser.h
diff -u llvm/tools/llvm-upgrade/UpgradeParser.h:1.22 llvm/tools/llvm-upgrade/UpgradeParser.h:1.23
--- llvm/tools/llvm-upgrade/UpgradeParser.h:1.22	Sun Dec 31 00:02:26 2006
+++ llvm/tools/llvm-upgrade/UpgradeParser.h	Sun Dec 31 19:20:41 2006
@@ -333,7 +333,7 @@
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 280 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 289 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
   TypeInfo        Type;


Index: llvm/tools/llvm-upgrade/UpgradeParser.h.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.20 llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.21
--- llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.20	Sun Dec 31 00:02:26 2006
+++ llvm/tools/llvm-upgrade/UpgradeParser.h.cvs	Sun Dec 31 19:20:41 2006
@@ -333,7 +333,7 @@
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 280 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 289 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
   TypeInfo        Type;


Index: llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.26 llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.27
--- llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.26	Sun Dec 31 00:02:26 2006
+++ llvm/tools/llvm-upgrade/UpgradeParser.y.cvs	Sun Dec 31 19:20:41 2006
@@ -38,6 +38,15 @@
 // definitions and calls.
 static bool AddAttributes = false;
 
+// This bool is used to communicate between the InstVal and Inst rules about
+// whether or not a cast should be deleted. When the flag is set, InstVal has
+// determined that the cast is a candidate. However, it can only be deleted if
+// the value being casted is the same value name as the instruction. The Inst
+// rule makes that comparison if the flag is set and comments out the
+// instruction if they match.
+static bool deleteUselessCastFlag = false;
+static std::string* deleteUselessCastName = 0;
+
 typedef std::vector<TypeInfo> TypeVector;
 static TypeVector EnumeratedTypes;
 typedef std::map<std::string,TypeInfo> TypeMap;
@@ -1152,10 +1161,18 @@
 
 Inst 
   : OptAssign InstVal {
-    if (!$1->empty())
-      *$1 += " = ";
+    if (!$1->empty()) {
+      if (deleteUselessCastFlag && *deleteUselessCastName == *$1) {
+        *$1 += " = ";
+        $1->insert(0, "; "); // don't actually delete it, just comment it out
+        delete deleteUselessCastName;
+      } else {
+        *$1 += " = ";
+      }
+    }
     *$1 += *$2;
     delete $2;
+    deleteUselessCastFlag = false;
     $$ = $1; 
   };
 
@@ -1250,6 +1267,20 @@
     } else {
       *$$ += *$1 + " " + source + " to " + *DstTy.newTy;
     }
+    // Check to see if this is a useless cast of a value to the same name
+    // and the same type. Such casts will probably cause redefinition errors
+    // when assembled and perform no code gen action so just remove them.
+    if (*$1 == "cast" || *$1 == "bitcast")
+      if ($2.type.isInteger() && $4.isInteger() &&
+          $2.type.getBitWidth() == $4.getBitWidth()) {
+        deleteUselessCastFlag = true; // Flag the "Inst" rule
+        deleteUselessCastName = new std::string(*$2.val); // save the name
+        size_t pos = deleteUselessCastName->find_first_of("%\"",0);
+        if (pos != std::string::npos) {
+          // remove the type portion before val
+          deleteUselessCastName->erase(0, pos);
+        }
+      }
     delete $1; $2.destroy();
     delete $3; $4.destroy();
   }






More information about the llvm-commits mailing list