Regenerate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32235 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/llvm-upgrade/UpgradeParser.cpp b/tools/llvm-upgrade/UpgradeParser.cpp
index 98c3422..c0a76de 100644
--- a/tools/llvm-upgrade/UpgradeParser.cpp
+++ b/tools/llvm-upgrade/UpgradeParser.cpp
@@ -397,6 +397,7 @@
 static TypeVector EnumeratedTypes;
 typedef std::map<std::string,TypeInfo> TypeMap;
 static TypeMap NamedTypes;
+static TypeMap Globals;
 
 void destroy(ValueList* VL) {
   while (!VL->empty()) {
@@ -641,7 +642,7 @@
 #endif
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 269 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 270 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
   TypeInfo        Type;
@@ -650,7 +651,7 @@
   ValueList*      ValList;
 } YYSTYPE;
 /* Line 196 of yacc.c.  */
-#line 654 "UpgradeParser.tab.c"
+#line 655 "UpgradeParser.tab.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -662,7 +663,7 @@
 
 
 /* Line 219 of yacc.c.  */
-#line 666 "UpgradeParser.tab.c"
+#line 667 "UpgradeParser.tab.c"
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 # define YYSIZE_T __SIZE_TYPE__
@@ -1016,36 +1017,36 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 {
-       0,   332,   332,   332,   333,   333,   337,   337,   337,   337,
-     337,   337,   337,   338,   338,   338,   338,   339,   339,   339,
-     340,   340,   340,   340,   340,   340,   341,   341,   341,   341,
+       0,   333,   333,   333,   334,   334,   338,   338,   338,   338,
+     338,   338,   338,   339,   339,   339,   339,   340,   340,   340,
      341,   341,   341,   341,   341,   341,   342,   342,   342,   342,
      342,   342,   342,   342,   342,   342,   343,   343,   343,   343,
-     343,   343,   344,   344,   344,   344,   345,   345,   345,   345,
-     345,   345,   345,   346,   346,   346,   346,   346,   346,   351,
-     351,   351,   351,   352,   352,   352,   352,   353,   353,   354,
-     354,   357,   360,   365,   365,   365,   365,   365,   365,   366,
-     367,   370,   370,   370,   370,   370,   371,   372,   377,   382,
-     383,   386,   387,   395,   401,   402,   405,   406,   415,   416,
-     429,   429,   430,   430,   431,   435,   435,   435,   435,   435,
-     435,   435,   436,   436,   436,   436,   436,   438,   442,   446,
-     449,   454,   460,   468,   476,   482,   486,   497,   500,   508,
-     509,   514,   517,   527,   533,   538,   544,   550,   556,   561,
-     567,   573,   579,   585,   591,   597,   603,   609,   615,   623,
-     637,   649,   654,   660,   665,   673,   678,   683,   691,   696,
-     701,   711,   716,   721,   721,   731,   736,   739,   744,   748,
-     752,   754,   754,   757,   769,   774,   779,   786,   793,   800,
-     807,   812,   817,   822,   824,   824,   827,   832,   839,   844,
-     851,   858,   863,   864,   872,   872,   873,   873,   875,   882,
-     886,   890,   893,   898,   901,   903,   923,   924,   926,   935,
-     936,   938,   946,   947,   948,   952,   965,   966,   969,   969,
-     969,   969,   969,   969,   969,   970,   971,   976,   977,   986,
-     986,   990,   996,  1007,  1013,  1016,  1024,  1028,  1033,  1036,
-    1042,  1042,  1044,  1049,  1054,  1059,  1067,  1074,  1080,  1100,
-    1105,  1111,  1116,  1124,  1133,  1140,  1148,  1152,  1159,  1160,
-    1164,  1169,  1172,  1178,  1183,  1191,  1196,  1201,  1206,  1214,
-    1228,  1233,  1238,  1243,  1248,  1253,  1258,  1275,  1280,  1281,
-    1285,  1286,  1289,  1296,  1303,  1310,  1317,  1322,  1329,  1336
+     343,   343,   343,   343,   343,   343,   344,   344,   344,   344,
+     344,   344,   345,   345,   345,   345,   346,   346,   346,   346,
+     346,   346,   346,   347,   347,   347,   347,   347,   347,   352,
+     352,   352,   352,   353,   353,   353,   353,   354,   354,   355,
+     355,   358,   361,   366,   366,   366,   366,   366,   366,   367,
+     368,   371,   371,   371,   371,   371,   372,   373,   378,   383,
+     384,   387,   388,   396,   402,   403,   406,   407,   416,   417,
+     430,   430,   431,   431,   432,   436,   436,   436,   436,   436,
+     436,   436,   437,   437,   437,   437,   437,   439,   443,   447,
+     450,   455,   461,   469,   477,   483,   487,   498,   501,   509,
+     510,   515,   518,   528,   534,   539,   545,   551,   557,   562,
+     568,   574,   580,   586,   592,   598,   604,   610,   616,   624,
+     638,   650,   655,   661,   666,   674,   679,   684,   692,   697,
+     702,   712,   717,   722,   722,   732,   737,   740,   745,   749,
+     753,   755,   755,   758,   770,   775,   780,   789,   798,   807,
+     816,   821,   826,   831,   833,   833,   836,   841,   848,   853,
+     860,   867,   872,   873,   881,   881,   882,   882,   884,   891,
+     895,   899,   902,   907,   910,   912,   932,   933,   935,   944,
+     945,   947,   955,   956,   957,   961,   974,   975,   978,   978,
+     978,   978,   978,   978,   978,   979,   980,   985,   986,   995,
+     995,   999,  1005,  1016,  1022,  1025,  1033,  1037,  1042,  1045,
+    1051,  1051,  1053,  1058,  1063,  1068,  1076,  1083,  1089,  1109,
+    1114,  1120,  1125,  1133,  1142,  1149,  1157,  1161,  1168,  1169,
+    1173,  1178,  1181,  1187,  1192,  1200,  1205,  1210,  1215,  1223,
+    1237,  1242,  1247,  1252,  1257,  1262,  1267,  1284,  1289,  1290,
+    1294,  1295,  1298,  1305,  1312,  1319,  1326,  1331,  1338,  1345
 };
 #endif
 
@@ -2392,26 +2393,26 @@
   switch (yyn)
     {
         case 81:
-#line 357 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 358 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[-1].String);
   ;}
     break;
 
   case 82:
-#line 360 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 361 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string(""); 
   ;}
     break;
 
   case 90:
-#line 367 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 368 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 97:
-#line 372 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 373 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += *(yyvsp[0].String); 
     delete (yyvsp[0].String);
@@ -2420,27 +2421,27 @@
     break;
 
   case 98:
-#line 377 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 378 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 99:
-#line 382 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 383 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 100:
-#line 383 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 384 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;}
     break;
 
   case 101:
-#line 386 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 387 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 102:
-#line 387 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 388 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, ", "); 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
@@ -2450,7 +2451,7 @@
     break;
 
   case 103:
-#line 395 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 396 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -2459,17 +2460,17 @@
     break;
 
   case 104:
-#line 401 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 402 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 106:
-#line 405 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 406 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 107:
-#line 406 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 407 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
       (yyvsp[-1].String)->insert(0, ", ");
       if (!(yyvsp[0].String)->empty())
@@ -2480,7 +2481,7 @@
     break;
 
   case 109:
-#line 416 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 417 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
       *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
       delete (yyvsp[0].String);
@@ -2489,7 +2490,7 @@
     break;
 
   case 127:
-#line 438 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 439 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String); 
     (yyval.Type).oldTy = OpaqueTy; 
@@ -2497,7 +2498,7 @@
     break;
 
   case 128:
-#line 442 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 443 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String);
     (yyval.Type).oldTy = UnresolvedTy;
@@ -2505,14 +2506,14 @@
     break;
 
   case 129:
-#line 446 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 447 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type) = (yyvsp[0].Type); 
   ;}
     break;
 
   case 130:
-#line 449 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 450 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Type UpReference
     (yyvsp[0].String)->insert(0, "\\");
     (yyval.Type).newTy = (yyvsp[0].String);
@@ -2521,7 +2522,7 @@
     break;
 
   case 131:
-#line 454 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 455 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {           // Function derived type?
     *(yyvsp[-3].Type).newTy += "( " + *(yyvsp[-1].String) + " )";
     delete (yyvsp[-1].String);
@@ -2531,7 +2532,7 @@
     break;
 
   case 132:
-#line 460 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 461 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {          // Sized array type?
     (yyvsp[-3].String)->insert(0,"[ ");
     *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " ]";
@@ -2543,7 +2544,7 @@
     break;
 
   case 133:
-#line 468 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 469 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {          // Packed array type?
     (yyvsp[-3].String)->insert(0,"< ");
     *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " >";
@@ -2555,7 +2556,7 @@
     break;
 
   case 134:
-#line 476 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 477 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                        // Structure type?
     (yyvsp[-1].String)->insert(0, "{ ");
     *(yyvsp[-1].String) += " }";
@@ -2565,7 +2566,7 @@
     break;
 
   case 135:
-#line 482 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 483 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                                  // Empty structure type?
     (yyval.Type).newTy = new std::string("{}");
     (yyval.Type).oldTy = StructTy;
@@ -2573,7 +2574,7 @@
     break;
 
   case 136:
-#line 486 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 487 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                             // Pointer type?
     *(yyvsp[-1].Type).newTy += '*';
     (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy;
@@ -2583,14 +2584,14 @@
     break;
 
   case 137:
-#line 497 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 498 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].Type).newTy;
   ;}
     break;
 
   case 138:
-#line 500 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 501 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Type).newTy;
     delete (yyvsp[0].Type).newTy;
@@ -2599,7 +2600,7 @@
     break;
 
   case 140:
-#line 509 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 510 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     delete (yyvsp[0].String);
@@ -2608,21 +2609,21 @@
     break;
 
   case 141:
-#line 514 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 515 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 142:
-#line 517 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 518 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
   case 143:
-#line 527 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 528 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2632,7 +2633,7 @@
     break;
 
   case 144:
-#line 533 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 534 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2641,7 +2642,7 @@
     break;
 
   case 145:
-#line 538 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 539 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2651,7 +2652,7 @@
     break;
 
   case 146:
-#line 544 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 545 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2661,7 +2662,7 @@
     break;
 
   case 147:
-#line 550 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 551 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2671,7 +2672,7 @@
     break;
 
   case 148:
-#line 556 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 557 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2680,7 +2681,7 @@
     break;
 
   case 149:
-#line 561 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 562 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2690,7 +2691,7 @@
     break;
 
   case 150:
-#line 567 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 568 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2700,7 +2701,7 @@
     break;
 
   case 151:
-#line 573 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 574 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2710,7 +2711,7 @@
     break;
 
   case 152:
-#line 579 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 580 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2720,7 +2721,7 @@
     break;
 
   case 153:
-#line 585 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 586 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2730,7 +2731,7 @@
     break;
 
   case 154:
-#line 591 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 592 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {      // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2740,7 +2741,7 @@
     break;
 
   case 155:
-#line 597 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 598 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {            // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2750,7 +2751,7 @@
     break;
 
   case 156:
-#line 603 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 604 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                      // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2760,7 +2761,7 @@
     break;
 
   case 157:
-#line 609 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 610 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                     // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2770,7 +2771,7 @@
     break;
 
   case 158:
-#line 615 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 616 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Float & Double constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2780,7 +2781,7 @@
     break;
 
   case 159:
-#line 623 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 624 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-3].Const).cnst;
     TypeInfo DstTy = (yyvsp[-1].Type);
@@ -2798,7 +2799,7 @@
     break;
 
   case 160:
-#line 637 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 638 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst;
     for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) {
@@ -2814,7 +2815,7 @@
     break;
 
   case 161:
-#line 649 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 650 "/proj/llvm/llvm-1/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();
@@ -2823,7 +2824,7 @@
     break;
 
   case 162:
-#line 654 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 655 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); 
     (yyval.String) = new std::string(op);
@@ -2833,7 +2834,7 @@
     break;
 
   case 163:
-#line 660 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 661 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2842,7 +2843,7 @@
     break;
 
   case 164:
-#line 665 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 666 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
 #if UPGRADE_SETCOND_OPS
     *(yyvsp[-5].String) = getCompareOp(*(yyvsp[-5].String), (yyvsp[-3].Const).type);
@@ -2854,7 +2855,7 @@
     break;
 
   case 165:
-#line 673 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 674 "/proj/llvm/llvm-1/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();
@@ -2863,7 +2864,7 @@
     break;
 
   case 166:
-#line 678 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 679 "/proj/llvm/llvm-1/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();
@@ -2872,7 +2873,7 @@
     break;
 
   case 167:
-#line 683 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 684 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-5].String)->c_str();
     if (*(yyvsp[-5].String) == "shr")
@@ -2884,7 +2885,7 @@
     break;
 
   case 168:
-#line 691 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 692 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2893,7 +2894,7 @@
     break;
 
   case 169:
-#line 696 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 697 "/proj/llvm/llvm-1/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();
@@ -2902,7 +2903,7 @@
     break;
 
   case 170:
-#line 701 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 702 "/proj/llvm/llvm-1/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();
@@ -2911,7 +2912,7 @@
     break;
 
   case 171:
-#line 711 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 712 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst;
     (yyvsp[0].Const).destroy();
@@ -2920,25 +2921,25 @@
     break;
 
   case 172:
-#line 716 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 717 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;}
     break;
 
   case 175:
-#line 731 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 732 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
 ;}
     break;
 
   case 176:
-#line 736 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 737 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 177:
-#line 739 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 740 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -2947,7 +2948,7 @@
     break;
 
   case 178:
-#line 744 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 745 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "module asm " << " " << *(yyvsp[0].String) << "\n";
     (yyval.String) = 0;
@@ -2955,7 +2956,7 @@
     break;
 
   case 179:
-#line 748 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 749 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "implementation\n";
     (yyval.String) = 0;
@@ -2963,17 +2964,17 @@
     break;
 
   case 180:
-#line 752 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 753 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = 0; ;}
     break;
 
   case 182:
-#line 754 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 755 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;}
     break;
 
   case 183:
-#line 757 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 758 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     EnumeratedTypes.push_back((yyvsp[0].Type));
     if (!(yyvsp[-2].String)->empty()) {
@@ -2989,7 +2990,7 @@
     break;
 
   case 184:
-#line 769 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 770 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {       // Function prototypes can be in const pool
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -2998,7 +2999,7 @@
     break;
 
   case 185:
-#line 774 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 775 "/proj/llvm/llvm-1/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); 
@@ -3007,10 +3008,12 @@
     break;
 
   case 186:
-#line 779 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 780 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
-    if (!(yyvsp[-4].String)->empty())
+    if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
+      Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Const).type.clone();
+    }
     *O << *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Const).cnst << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Const).destroy(); delete (yyvsp[0].String); 
     (yyval.String) = 0;
@@ -3018,10 +3021,12 @@
     break;
 
   case 187:
-#line 786 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 789 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
-    if (!(yyvsp[-4].String)->empty())
+    if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
+      Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone();
+    }
     *O <<  *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String);
     (yyval.String) = 0;
@@ -3029,10 +3034,12 @@
     break;
 
   case 188:
-#line 793 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 798 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
-    if (!(yyvsp[-4].String)->empty())
+    if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
+      Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone();
+    }
     *O << *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String);
     (yyval.String) = 0;
@@ -3040,10 +3047,12 @@
     break;
 
   case 189:
-#line 800 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 807 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
-    if (!(yyvsp[-4].String)->empty())
+    if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
+      Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone();
+    }
     *O << *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String);
     (yyval.String) = 0;
@@ -3051,7 +3060,7 @@
     break;
 
   case 190:
-#line 807 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 816 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *O << *(yyvsp[-1].String) << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-1].String); delete (yyvsp[0].String);
@@ -3060,7 +3069,7 @@
     break;
 
   case 191:
-#line 812 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 821 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-2].String); delete (yyvsp[0].String);
@@ -3069,14 +3078,14 @@
     break;
 
   case 192:
-#line 817 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 826 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.String) = 0;
   ;}
     break;
 
   case 196:
-#line 827 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 836 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3085,7 +3094,7 @@
     break;
 
   case 197:
-#line 832 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 841 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     if (*(yyvsp[0].String) == "64")
@@ -3096,7 +3105,7 @@
     break;
 
   case 198:
-#line 839 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 848 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3105,7 +3114,7 @@
     break;
 
   case 199:
-#line 844 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 853 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3114,7 +3123,7 @@
     break;
 
   case 200:
-#line 851 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 860 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-1].String)->insert(0, "[ ");
     *(yyvsp[-1].String) += " ]";
@@ -3123,7 +3132,7 @@
     break;
 
   case 201:
-#line 858 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 867 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3132,19 +3141,19 @@
     break;
 
   case 203:
-#line 864 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 873 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
   case 207:
-#line 873 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 882 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 208:
-#line 875 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 884 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
   (yyval.String) = (yyvsp[-1].Type).newTy;
   if (!(yyvsp[0].String)->empty())
@@ -3154,7 +3163,7 @@
     break;
 
   case 209:
-#line 882 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 891 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3162,21 +3171,21 @@
     break;
 
   case 210:
-#line 886 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 895 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 211:
-#line 890 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 899 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 212:
-#line 893 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 902 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     (yyval.String) = (yyvsp[-2].String);
@@ -3185,19 +3194,19 @@
     break;
 
   case 213:
-#line 898 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 907 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 214:
-#line 901 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 910 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 215:
-#line 904 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 913 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-7].String)->empty()) {
       *(yyvsp[-7].String) += " ";
@@ -3219,17 +3228,17 @@
     break;
 
   case 216:
-#line 923 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 932 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;}
     break;
 
   case 217:
-#line 924 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 933 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string ("{"); ;}
     break;
 
   case 218:
-#line 926 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 935 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
   if (!(yyvsp[-2].String)->empty()) {
     *O << *(yyvsp[-2].String) << " ";
@@ -3241,17 +3250,17 @@
     break;
 
   case 219:
-#line 935 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 944 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;}
     break;
 
   case 220:
-#line 936 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 945 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); ;}
     break;
 
   case 221:
-#line 938 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 947 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
   if ((yyvsp[-1].String))
     *O << *(yyvsp[-1].String);
@@ -3261,12 +3270,12 @@
     break;
 
   case 222:
-#line 946 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 955 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 225:
-#line 952 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 961 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     if (!(yyvsp[-1].String)->empty())
       *(yyvsp[-2].String) += " " + *(yyvsp[-1].String);
@@ -3278,12 +3287,12 @@
     break;
 
   case 226:
-#line 965 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 974 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 236:
-#line 971 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 980 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, "<");
     *(yyvsp[-1].String) += ">";
@@ -3292,7 +3301,7 @@
     break;
 
   case 238:
-#line 977 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 986 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty()) {
       *(yyvsp[-4].String) += " " + *(yyvsp[-3].String);
@@ -3304,7 +3313,7 @@
     break;
 
   case 241:
-#line 990 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 999 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = false;
@@ -3314,7 +3323,7 @@
     break;
 
   case 242:
-#line 996 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1005 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = true;
@@ -3324,7 +3333,7 @@
     break;
 
   case 243:
-#line 1007 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1016 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value) = (yyvsp[0].Value);
     (yyval.Value).type = (yyvsp[-1].Type);
@@ -3333,28 +3342,28 @@
     break;
 
   case 244:
-#line 1013 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1022 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 245:
-#line 1016 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1025 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { // Do not allow functions with 0 basic blocks   
     (yyval.String) = 0;
   ;}
     break;
 
   case 246:
-#line 1024 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1033 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 247:
-#line 1028 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1037 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3363,14 +3372,14 @@
     break;
 
   case 248:
-#line 1033 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1042 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 249:
-#line 1036 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1045 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3379,12 +3388,12 @@
     break;
 
   case 251:
-#line 1042 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1051 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;}
     break;
 
   case 252:
-#line 1044 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1053 "/proj/llvm/llvm-1/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();
@@ -3393,7 +3402,7 @@
     break;
 
   case 253:
-#line 1049 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1058 "/proj/llvm/llvm-1/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();
@@ -3402,7 +3411,7 @@
     break;
 
   case 254:
-#line 1054 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1063 "/proj/llvm/llvm-1/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();
@@ -3411,7 +3420,7 @@
     break;
 
   case 255:
-#line 1059 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1068 "/proj/llvm/llvm-1/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 << " " 
@@ -3423,7 +3432,7 @@
     break;
 
   case 256:
-#line 1067 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1076 "/proj/llvm/llvm-1/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";
@@ -3434,7 +3443,7 @@
     break;
 
   case 257:
-#line 1074 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1083 "/proj/llvm/llvm-1/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";
@@ -3444,7 +3453,7 @@
     break;
 
   case 258:
-#line 1081 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1090 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    ";
     if (!(yyvsp[-13].String)->empty())
@@ -3467,7 +3476,7 @@
     break;
 
   case 259:
-#line 1100 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1109 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3476,7 +3485,7 @@
     break;
 
   case 260:
-#line 1105 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1114 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3485,7 +3494,7 @@
     break;
 
   case 261:
-#line 1111 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1120 "/proj/llvm/llvm-1/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();
@@ -3494,7 +3503,7 @@
     break;
 
   case 262:
-#line 1116 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1125 "/proj/llvm/llvm-1/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;
@@ -3504,7 +3513,7 @@
     break;
 
   case 263:
-#line 1124 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1133 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-1].String)->empty())
       *(yyvsp[-1].String) += " = ";
@@ -3515,7 +3524,7 @@
     break;
 
   case 264:
-#line 1133 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1142 "/proj/llvm/llvm-1/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 + "]";
@@ -3526,7 +3535,7 @@
     break;
 
   case 265:
-#line 1140 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1149 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += ", [" + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + "]";
     (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3535,7 +3544,7 @@
     break;
 
   case 266:
-#line 1148 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1157 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.ValList) = new ValueList();
     (yyval.ValList)->push_back((yyvsp[0].Value));
@@ -3543,7 +3552,7 @@
     break;
 
   case 267:
-#line 1152 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1161 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-2].ValList)->push_back((yyvsp[0].Value));
     (yyval.ValList) = (yyvsp[-2].ValList);
@@ -3551,17 +3560,17 @@
     break;
 
   case 268:
-#line 1159 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1168 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
   case 269:
-#line 1160 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1169 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = new ValueList(); ;}
     break;
 
   case 270:
-#line 1164 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1173 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3570,7 +3579,7 @@
     break;
 
   case 272:
-#line 1172 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1181 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); 
     (yyval.String) = new std::string(op);
@@ -3580,7 +3589,7 @@
     break;
 
   case 273:
-#line 1178 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1187 "/proj/llvm/llvm-1/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();
@@ -3589,7 +3598,7 @@
     break;
 
   case 274:
-#line 1183 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1192 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
 #if UPGRADE_SETCOND_OPS
     *(yyvsp[-4].String) = getCompareOp(*(yyvsp[-4].String), (yyvsp[-3].Type));
@@ -3601,7 +3610,7 @@
     break;
 
   case 275:
-#line 1191 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1200 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " " + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3610,7 +3619,7 @@
     break;
 
   case 276:
-#line 1196 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1205 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " " + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3619,7 +3628,7 @@
     break;
 
   case 277:
-#line 1201 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1210 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3628,7 +3637,7 @@
     break;
 
   case 278:
-#line 1206 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1215 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-3].String)->c_str();
     if (*(yyvsp[-3].String) == "shr")
@@ -3640,7 +3649,7 @@
     break;
 
   case 279:
-#line 1214 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1223 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-2].Value).val;
     TypeInfo SrcTy = (yyvsp[-2].Value).type;
@@ -3658,7 +3667,7 @@
     break;
 
   case 280:
-#line 1228 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1237 "/proj/llvm/llvm-1/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();
@@ -3667,7 +3676,7 @@
     break;
 
   case 281:
-#line 1233 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1242 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Type).newTy;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Type).destroy();
@@ -3676,7 +3685,7 @@
     break;
 
   case 282:
-#line 1238 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1247 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3685,7 +3694,7 @@
     break;
 
   case 283:
-#line 1243 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1252 "/proj/llvm/llvm-1/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();
@@ -3694,7 +3703,7 @@
     break;
 
   case 284:
-#line 1248 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1257 "/proj/llvm/llvm-1/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();
@@ -3703,7 +3712,7 @@
     break;
 
   case 285:
-#line 1253 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1262 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3712,7 +3721,7 @@
     break;
 
   case 286:
-#line 1258 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1267 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-6].String) += " " + *(yyvsp[-5].String);
@@ -3733,22 +3742,22 @@
     break;
 
   case 288:
-#line 1280 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1289 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
   case 289:
-#line 1281 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1290 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {  (yyval.ValList) = new ValueList(); ;}
     break;
 
   case 291:
-#line 1286 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1295 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 292:
-#line 1289 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1298 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3759,7 +3768,7 @@
     break;
 
   case 293:
-#line 1296 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1305 "/proj/llvm/llvm-1/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())
@@ -3770,7 +3779,7 @@
     break;
 
   case 294:
-#line 1303 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1312 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3781,7 +3790,7 @@
     break;
 
   case 295:
-#line 1310 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1319 "/proj/llvm/llvm-1/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())
@@ -3792,7 +3801,7 @@
     break;
 
   case 296:
-#line 1317 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1326 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3801,7 +3810,7 @@
     break;
 
   case 297:
-#line 1322 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1331 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty())
       *(yyvsp[-3].String) += " ";
@@ -3812,7 +3821,7 @@
     break;
 
   case 298:
-#line 1329 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1338 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-5].String) += " ";
@@ -3823,7 +3832,7 @@
     break;
 
   case 299:
-#line 1336 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1345 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     // Upgrade the indices
     for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) {
@@ -3854,7 +3863,7 @@
     }
 
 /* Line 1126 of yacc.c.  */
-#line 3858 "UpgradeParser.tab.c"
+#line 3867 "UpgradeParser.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4122,7 +4131,7 @@
 }
 
 
-#line 1360 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1369 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
 
 
 int yyerror(const char *ErrorMsg) {
diff --git a/tools/llvm-upgrade/UpgradeParser.cpp.cvs b/tools/llvm-upgrade/UpgradeParser.cpp.cvs
index 98c3422..c0a76de 100644
--- a/tools/llvm-upgrade/UpgradeParser.cpp.cvs
+++ b/tools/llvm-upgrade/UpgradeParser.cpp.cvs
@@ -397,6 +397,7 @@
 static TypeVector EnumeratedTypes;
 typedef std::map<std::string,TypeInfo> TypeMap;
 static TypeMap NamedTypes;
+static TypeMap Globals;
 
 void destroy(ValueList* VL) {
   while (!VL->empty()) {
@@ -641,7 +642,7 @@
 #endif
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 269 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 270 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
   TypeInfo        Type;
@@ -650,7 +651,7 @@
   ValueList*      ValList;
 } YYSTYPE;
 /* Line 196 of yacc.c.  */
-#line 654 "UpgradeParser.tab.c"
+#line 655 "UpgradeParser.tab.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -662,7 +663,7 @@
 
 
 /* Line 219 of yacc.c.  */
-#line 666 "UpgradeParser.tab.c"
+#line 667 "UpgradeParser.tab.c"
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 # define YYSIZE_T __SIZE_TYPE__
@@ -1016,36 +1017,36 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 {
-       0,   332,   332,   332,   333,   333,   337,   337,   337,   337,
-     337,   337,   337,   338,   338,   338,   338,   339,   339,   339,
-     340,   340,   340,   340,   340,   340,   341,   341,   341,   341,
+       0,   333,   333,   333,   334,   334,   338,   338,   338,   338,
+     338,   338,   338,   339,   339,   339,   339,   340,   340,   340,
      341,   341,   341,   341,   341,   341,   342,   342,   342,   342,
      342,   342,   342,   342,   342,   342,   343,   343,   343,   343,
-     343,   343,   344,   344,   344,   344,   345,   345,   345,   345,
-     345,   345,   345,   346,   346,   346,   346,   346,   346,   351,
-     351,   351,   351,   352,   352,   352,   352,   353,   353,   354,
-     354,   357,   360,   365,   365,   365,   365,   365,   365,   366,
-     367,   370,   370,   370,   370,   370,   371,   372,   377,   382,
-     383,   386,   387,   395,   401,   402,   405,   406,   415,   416,
-     429,   429,   430,   430,   431,   435,   435,   435,   435,   435,
-     435,   435,   436,   436,   436,   436,   436,   438,   442,   446,
-     449,   454,   460,   468,   476,   482,   486,   497,   500,   508,
-     509,   514,   517,   527,   533,   538,   544,   550,   556,   561,
-     567,   573,   579,   585,   591,   597,   603,   609,   615,   623,
-     637,   649,   654,   660,   665,   673,   678,   683,   691,   696,
-     701,   711,   716,   721,   721,   731,   736,   739,   744,   748,
-     752,   754,   754,   757,   769,   774,   779,   786,   793,   800,
-     807,   812,   817,   822,   824,   824,   827,   832,   839,   844,
-     851,   858,   863,   864,   872,   872,   873,   873,   875,   882,
-     886,   890,   893,   898,   901,   903,   923,   924,   926,   935,
-     936,   938,   946,   947,   948,   952,   965,   966,   969,   969,
-     969,   969,   969,   969,   969,   970,   971,   976,   977,   986,
-     986,   990,   996,  1007,  1013,  1016,  1024,  1028,  1033,  1036,
-    1042,  1042,  1044,  1049,  1054,  1059,  1067,  1074,  1080,  1100,
-    1105,  1111,  1116,  1124,  1133,  1140,  1148,  1152,  1159,  1160,
-    1164,  1169,  1172,  1178,  1183,  1191,  1196,  1201,  1206,  1214,
-    1228,  1233,  1238,  1243,  1248,  1253,  1258,  1275,  1280,  1281,
-    1285,  1286,  1289,  1296,  1303,  1310,  1317,  1322,  1329,  1336
+     343,   343,   343,   343,   343,   343,   344,   344,   344,   344,
+     344,   344,   345,   345,   345,   345,   346,   346,   346,   346,
+     346,   346,   346,   347,   347,   347,   347,   347,   347,   352,
+     352,   352,   352,   353,   353,   353,   353,   354,   354,   355,
+     355,   358,   361,   366,   366,   366,   366,   366,   366,   367,
+     368,   371,   371,   371,   371,   371,   372,   373,   378,   383,
+     384,   387,   388,   396,   402,   403,   406,   407,   416,   417,
+     430,   430,   431,   431,   432,   436,   436,   436,   436,   436,
+     436,   436,   437,   437,   437,   437,   437,   439,   443,   447,
+     450,   455,   461,   469,   477,   483,   487,   498,   501,   509,
+     510,   515,   518,   528,   534,   539,   545,   551,   557,   562,
+     568,   574,   580,   586,   592,   598,   604,   610,   616,   624,
+     638,   650,   655,   661,   666,   674,   679,   684,   692,   697,
+     702,   712,   717,   722,   722,   732,   737,   740,   745,   749,
+     753,   755,   755,   758,   770,   775,   780,   789,   798,   807,
+     816,   821,   826,   831,   833,   833,   836,   841,   848,   853,
+     860,   867,   872,   873,   881,   881,   882,   882,   884,   891,
+     895,   899,   902,   907,   910,   912,   932,   933,   935,   944,
+     945,   947,   955,   956,   957,   961,   974,   975,   978,   978,
+     978,   978,   978,   978,   978,   979,   980,   985,   986,   995,
+     995,   999,  1005,  1016,  1022,  1025,  1033,  1037,  1042,  1045,
+    1051,  1051,  1053,  1058,  1063,  1068,  1076,  1083,  1089,  1109,
+    1114,  1120,  1125,  1133,  1142,  1149,  1157,  1161,  1168,  1169,
+    1173,  1178,  1181,  1187,  1192,  1200,  1205,  1210,  1215,  1223,
+    1237,  1242,  1247,  1252,  1257,  1262,  1267,  1284,  1289,  1290,
+    1294,  1295,  1298,  1305,  1312,  1319,  1326,  1331,  1338,  1345
 };
 #endif
 
@@ -2392,26 +2393,26 @@
   switch (yyn)
     {
         case 81:
-#line 357 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 358 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[-1].String);
   ;}
     break;
 
   case 82:
-#line 360 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 361 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string(""); 
   ;}
     break;
 
   case 90:
-#line 367 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 368 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 97:
-#line 372 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 373 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += *(yyvsp[0].String); 
     delete (yyvsp[0].String);
@@ -2420,27 +2421,27 @@
     break;
 
   case 98:
-#line 377 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 378 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 99:
-#line 382 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 383 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 100:
-#line 383 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 384 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;}
     break;
 
   case 101:
-#line 386 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 387 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 102:
-#line 387 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 388 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, ", "); 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
@@ -2450,7 +2451,7 @@
     break;
 
   case 103:
-#line 395 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 396 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -2459,17 +2460,17 @@
     break;
 
   case 104:
-#line 401 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 402 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 106:
-#line 405 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 406 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 107:
-#line 406 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 407 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
       (yyvsp[-1].String)->insert(0, ", ");
       if (!(yyvsp[0].String)->empty())
@@ -2480,7 +2481,7 @@
     break;
 
   case 109:
-#line 416 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 417 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
       *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
       delete (yyvsp[0].String);
@@ -2489,7 +2490,7 @@
     break;
 
   case 127:
-#line 438 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 439 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String); 
     (yyval.Type).oldTy = OpaqueTy; 
@@ -2497,7 +2498,7 @@
     break;
 
   case 128:
-#line 442 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 443 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String);
     (yyval.Type).oldTy = UnresolvedTy;
@@ -2505,14 +2506,14 @@
     break;
 
   case 129:
-#line 446 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 447 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type) = (yyvsp[0].Type); 
   ;}
     break;
 
   case 130:
-#line 449 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 450 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Type UpReference
     (yyvsp[0].String)->insert(0, "\\");
     (yyval.Type).newTy = (yyvsp[0].String);
@@ -2521,7 +2522,7 @@
     break;
 
   case 131:
-#line 454 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 455 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {           // Function derived type?
     *(yyvsp[-3].Type).newTy += "( " + *(yyvsp[-1].String) + " )";
     delete (yyvsp[-1].String);
@@ -2531,7 +2532,7 @@
     break;
 
   case 132:
-#line 460 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 461 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {          // Sized array type?
     (yyvsp[-3].String)->insert(0,"[ ");
     *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " ]";
@@ -2543,7 +2544,7 @@
     break;
 
   case 133:
-#line 468 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 469 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {          // Packed array type?
     (yyvsp[-3].String)->insert(0,"< ");
     *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " >";
@@ -2555,7 +2556,7 @@
     break;
 
   case 134:
-#line 476 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 477 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                        // Structure type?
     (yyvsp[-1].String)->insert(0, "{ ");
     *(yyvsp[-1].String) += " }";
@@ -2565,7 +2566,7 @@
     break;
 
   case 135:
-#line 482 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 483 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                                  // Empty structure type?
     (yyval.Type).newTy = new std::string("{}");
     (yyval.Type).oldTy = StructTy;
@@ -2573,7 +2574,7 @@
     break;
 
   case 136:
-#line 486 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 487 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                             // Pointer type?
     *(yyvsp[-1].Type).newTy += '*';
     (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy;
@@ -2583,14 +2584,14 @@
     break;
 
   case 137:
-#line 497 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 498 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].Type).newTy;
   ;}
     break;
 
   case 138:
-#line 500 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 501 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Type).newTy;
     delete (yyvsp[0].Type).newTy;
@@ -2599,7 +2600,7 @@
     break;
 
   case 140:
-#line 509 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 510 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     delete (yyvsp[0].String);
@@ -2608,21 +2609,21 @@
     break;
 
   case 141:
-#line 514 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 515 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 142:
-#line 517 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 518 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
   case 143:
-#line 527 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 528 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2632,7 +2633,7 @@
     break;
 
   case 144:
-#line 533 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 534 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2641,7 +2642,7 @@
     break;
 
   case 145:
-#line 538 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 539 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2651,7 +2652,7 @@
     break;
 
   case 146:
-#line 544 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 545 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2661,7 +2662,7 @@
     break;
 
   case 147:
-#line 550 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 551 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy);
@@ -2671,7 +2672,7 @@
     break;
 
   case 148:
-#line 556 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 557 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy);
@@ -2680,7 +2681,7 @@
     break;
 
   case 149:
-#line 561 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 562 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2690,7 +2691,7 @@
     break;
 
   case 150:
-#line 567 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 568 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2700,7 +2701,7 @@
     break;
 
   case 151:
-#line 573 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 574 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2710,7 +2711,7 @@
     break;
 
   case 152:
-#line 579 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 580 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2720,7 +2721,7 @@
     break;
 
   case 153:
-#line 585 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 586 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2730,7 +2731,7 @@
     break;
 
   case 154:
-#line 591 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 592 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {      // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2740,7 +2741,7 @@
     break;
 
   case 155:
-#line 597 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 598 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {            // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2750,7 +2751,7 @@
     break;
 
   case 156:
-#line 603 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 604 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                      // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2760,7 +2761,7 @@
     break;
 
   case 157:
-#line 609 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 610 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                     // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2770,7 +2771,7 @@
     break;
 
   case 158:
-#line 615 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 616 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Float & Double constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy);
@@ -2780,7 +2781,7 @@
     break;
 
   case 159:
-#line 623 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 624 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-3].Const).cnst;
     TypeInfo DstTy = (yyvsp[-1].Type);
@@ -2798,7 +2799,7 @@
     break;
 
   case 160:
-#line 637 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 638 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst;
     for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) {
@@ -2814,7 +2815,7 @@
     break;
 
   case 161:
-#line 649 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 650 "/proj/llvm/llvm-1/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();
@@ -2823,7 +2824,7 @@
     break;
 
   case 162:
-#line 654 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 655 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); 
     (yyval.String) = new std::string(op);
@@ -2833,7 +2834,7 @@
     break;
 
   case 163:
-#line 660 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 661 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2842,7 +2843,7 @@
     break;
 
   case 164:
-#line 665 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 666 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
 #if UPGRADE_SETCOND_OPS
     *(yyvsp[-5].String) = getCompareOp(*(yyvsp[-5].String), (yyvsp[-3].Const).type);
@@ -2854,7 +2855,7 @@
     break;
 
   case 165:
-#line 673 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 674 "/proj/llvm/llvm-1/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();
@@ -2863,7 +2864,7 @@
     break;
 
   case 166:
-#line 678 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 679 "/proj/llvm/llvm-1/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();
@@ -2872,7 +2873,7 @@
     break;
 
   case 167:
-#line 683 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 684 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-5].String)->c_str();
     if (*(yyvsp[-5].String) == "shr")
@@ -2884,7 +2885,7 @@
     break;
 
   case 168:
-#line 691 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 692 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2893,7 +2894,7 @@
     break;
 
   case 169:
-#line 696 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 697 "/proj/llvm/llvm-1/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();
@@ -2902,7 +2903,7 @@
     break;
 
   case 170:
-#line 701 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 702 "/proj/llvm/llvm-1/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();
@@ -2911,7 +2912,7 @@
     break;
 
   case 171:
-#line 711 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 712 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst;
     (yyvsp[0].Const).destroy();
@@ -2920,25 +2921,25 @@
     break;
 
   case 172:
-#line 716 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 717 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;}
     break;
 
   case 175:
-#line 731 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 732 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
 ;}
     break;
 
   case 176:
-#line 736 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 737 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 177:
-#line 739 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 740 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -2947,7 +2948,7 @@
     break;
 
   case 178:
-#line 744 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 745 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "module asm " << " " << *(yyvsp[0].String) << "\n";
     (yyval.String) = 0;
@@ -2955,7 +2956,7 @@
     break;
 
   case 179:
-#line 748 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 749 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "implementation\n";
     (yyval.String) = 0;
@@ -2963,17 +2964,17 @@
     break;
 
   case 180:
-#line 752 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 753 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = 0; ;}
     break;
 
   case 182:
-#line 754 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 755 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;}
     break;
 
   case 183:
-#line 757 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 758 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     EnumeratedTypes.push_back((yyvsp[0].Type));
     if (!(yyvsp[-2].String)->empty()) {
@@ -2989,7 +2990,7 @@
     break;
 
   case 184:
-#line 769 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 770 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {       // Function prototypes can be in const pool
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -2998,7 +2999,7 @@
     break;
 
   case 185:
-#line 774 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 775 "/proj/llvm/llvm-1/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); 
@@ -3007,10 +3008,12 @@
     break;
 
   case 186:
-#line 779 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 780 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
-    if (!(yyvsp[-4].String)->empty())
+    if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
+      Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Const).type.clone();
+    }
     *O << *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Const).cnst << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Const).destroy(); delete (yyvsp[0].String); 
     (yyval.String) = 0;
@@ -3018,10 +3021,12 @@
     break;
 
   case 187:
-#line 786 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 789 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
-    if (!(yyvsp[-4].String)->empty())
+    if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
+      Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone();
+    }
     *O <<  *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String);
     (yyval.String) = 0;
@@ -3029,10 +3034,12 @@
     break;
 
   case 188:
-#line 793 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 798 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
-    if (!(yyvsp[-4].String)->empty())
+    if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
+      Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone();
+    }
     *O << *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String);
     (yyval.String) = 0;
@@ -3040,10 +3047,12 @@
     break;
 
   case 189:
-#line 800 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 807 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
-    if (!(yyvsp[-4].String)->empty())
+    if (!(yyvsp[-4].String)->empty()) {
       *O << *(yyvsp[-4].String) << " = ";
+      Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone();
+    }
     *O << *(yyvsp[-3].String) << " " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String);
     (yyval.String) = 0;
@@ -3051,7 +3060,7 @@
     break;
 
   case 190:
-#line 807 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 816 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *O << *(yyvsp[-1].String) << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-1].String); delete (yyvsp[0].String);
@@ -3060,7 +3069,7 @@
     break;
 
   case 191:
-#line 812 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 821 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-2].String); delete (yyvsp[0].String);
@@ -3069,14 +3078,14 @@
     break;
 
   case 192:
-#line 817 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 826 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.String) = 0;
   ;}
     break;
 
   case 196:
-#line 827 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 836 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3085,7 +3094,7 @@
     break;
 
   case 197:
-#line 832 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 841 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     if (*(yyvsp[0].String) == "64")
@@ -3096,7 +3105,7 @@
     break;
 
   case 198:
-#line 839 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 848 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3105,7 +3114,7 @@
     break;
 
   case 199:
-#line 844 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 853 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3114,7 +3123,7 @@
     break;
 
   case 200:
-#line 851 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 860 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-1].String)->insert(0, "[ ");
     *(yyvsp[-1].String) += " ]";
@@ -3123,7 +3132,7 @@
     break;
 
   case 201:
-#line 858 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 867 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3132,19 +3141,19 @@
     break;
 
   case 203:
-#line 864 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 873 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
   case 207:
-#line 873 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 882 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 208:
-#line 875 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 884 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
   (yyval.String) = (yyvsp[-1].Type).newTy;
   if (!(yyvsp[0].String)->empty())
@@ -3154,7 +3163,7 @@
     break;
 
   case 209:
-#line 882 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 891 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3162,21 +3171,21 @@
     break;
 
   case 210:
-#line 886 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 895 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 211:
-#line 890 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 899 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 212:
-#line 893 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 902 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     (yyval.String) = (yyvsp[-2].String);
@@ -3185,19 +3194,19 @@
     break;
 
   case 213:
-#line 898 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 907 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 214:
-#line 901 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 910 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 215:
-#line 904 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 913 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-7].String)->empty()) {
       *(yyvsp[-7].String) += " ";
@@ -3219,17 +3228,17 @@
     break;
 
   case 216:
-#line 923 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 932 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;}
     break;
 
   case 217:
-#line 924 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 933 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string ("{"); ;}
     break;
 
   case 218:
-#line 926 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 935 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
   if (!(yyvsp[-2].String)->empty()) {
     *O << *(yyvsp[-2].String) << " ";
@@ -3241,17 +3250,17 @@
     break;
 
   case 219:
-#line 935 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 944 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;}
     break;
 
   case 220:
-#line 936 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 945 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); ;}
     break;
 
   case 221:
-#line 938 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 947 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
   if ((yyvsp[-1].String))
     *O << *(yyvsp[-1].String);
@@ -3261,12 +3270,12 @@
     break;
 
   case 222:
-#line 946 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 955 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 225:
-#line 952 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 961 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     if (!(yyvsp[-1].String)->empty())
       *(yyvsp[-2].String) += " " + *(yyvsp[-1].String);
@@ -3278,12 +3287,12 @@
     break;
 
   case 226:
-#line 965 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 974 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 236:
-#line 971 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 980 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, "<");
     *(yyvsp[-1].String) += ">";
@@ -3292,7 +3301,7 @@
     break;
 
   case 238:
-#line 977 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 986 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty()) {
       *(yyvsp[-4].String) += " " + *(yyvsp[-3].String);
@@ -3304,7 +3313,7 @@
     break;
 
   case 241:
-#line 990 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 999 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = false;
@@ -3314,7 +3323,7 @@
     break;
 
   case 242:
-#line 996 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1005 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = true;
@@ -3324,7 +3333,7 @@
     break;
 
   case 243:
-#line 1007 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1016 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value) = (yyvsp[0].Value);
     (yyval.Value).type = (yyvsp[-1].Type);
@@ -3333,28 +3342,28 @@
     break;
 
   case 244:
-#line 1013 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1022 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 245:
-#line 1016 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1025 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { // Do not allow functions with 0 basic blocks   
     (yyval.String) = 0;
   ;}
     break;
 
   case 246:
-#line 1024 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1033 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 247:
-#line 1028 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1037 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3363,14 +3372,14 @@
     break;
 
   case 248:
-#line 1033 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1042 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 249:
-#line 1036 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1045 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3379,12 +3388,12 @@
     break;
 
   case 251:
-#line 1042 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1051 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;}
     break;
 
   case 252:
-#line 1044 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1053 "/proj/llvm/llvm-1/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();
@@ -3393,7 +3402,7 @@
     break;
 
   case 253:
-#line 1049 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1058 "/proj/llvm/llvm-1/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();
@@ -3402,7 +3411,7 @@
     break;
 
   case 254:
-#line 1054 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1063 "/proj/llvm/llvm-1/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();
@@ -3411,7 +3420,7 @@
     break;
 
   case 255:
-#line 1059 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1068 "/proj/llvm/llvm-1/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 << " " 
@@ -3423,7 +3432,7 @@
     break;
 
   case 256:
-#line 1067 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1076 "/proj/llvm/llvm-1/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";
@@ -3434,7 +3443,7 @@
     break;
 
   case 257:
-#line 1074 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1083 "/proj/llvm/llvm-1/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";
@@ -3444,7 +3453,7 @@
     break;
 
   case 258:
-#line 1081 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1090 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    ";
     if (!(yyvsp[-13].String)->empty())
@@ -3467,7 +3476,7 @@
     break;
 
   case 259:
-#line 1100 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1109 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3476,7 +3485,7 @@
     break;
 
   case 260:
-#line 1105 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1114 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3485,7 +3494,7 @@
     break;
 
   case 261:
-#line 1111 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1120 "/proj/llvm/llvm-1/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();
@@ -3494,7 +3503,7 @@
     break;
 
   case 262:
-#line 1116 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1125 "/proj/llvm/llvm-1/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;
@@ -3504,7 +3513,7 @@
     break;
 
   case 263:
-#line 1124 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1133 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-1].String)->empty())
       *(yyvsp[-1].String) += " = ";
@@ -3515,7 +3524,7 @@
     break;
 
   case 264:
-#line 1133 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1142 "/proj/llvm/llvm-1/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 + "]";
@@ -3526,7 +3535,7 @@
     break;
 
   case 265:
-#line 1140 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1149 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += ", [" + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + "]";
     (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3535,7 +3544,7 @@
     break;
 
   case 266:
-#line 1148 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1157 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.ValList) = new ValueList();
     (yyval.ValList)->push_back((yyvsp[0].Value));
@@ -3543,7 +3552,7 @@
     break;
 
   case 267:
-#line 1152 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1161 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-2].ValList)->push_back((yyvsp[0].Value));
     (yyval.ValList) = (yyvsp[-2].ValList);
@@ -3551,17 +3560,17 @@
     break;
 
   case 268:
-#line 1159 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1168 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
   case 269:
-#line 1160 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1169 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = new ValueList(); ;}
     break;
 
   case 270:
-#line 1164 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1173 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3570,7 +3579,7 @@
     break;
 
   case 272:
-#line 1172 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1181 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); 
     (yyval.String) = new std::string(op);
@@ -3580,7 +3589,7 @@
     break;
 
   case 273:
-#line 1178 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1187 "/proj/llvm/llvm-1/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();
@@ -3589,7 +3598,7 @@
     break;
 
   case 274:
-#line 1183 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1192 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
 #if UPGRADE_SETCOND_OPS
     *(yyvsp[-4].String) = getCompareOp(*(yyvsp[-4].String), (yyvsp[-3].Type));
@@ -3601,7 +3610,7 @@
     break;
 
   case 275:
-#line 1191 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1200 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " " + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3610,7 +3619,7 @@
     break;
 
   case 276:
-#line 1196 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1205 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " " + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3619,7 +3628,7 @@
     break;
 
   case 277:
-#line 1201 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1210 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3628,7 +3637,7 @@
     break;
 
   case 278:
-#line 1206 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1215 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-3].String)->c_str();
     if (*(yyvsp[-3].String) == "shr")
@@ -3640,7 +3649,7 @@
     break;
 
   case 279:
-#line 1214 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1223 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-2].Value).val;
     TypeInfo SrcTy = (yyvsp[-2].Value).type;
@@ -3658,7 +3667,7 @@
     break;
 
   case 280:
-#line 1228 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1237 "/proj/llvm/llvm-1/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();
@@ -3667,7 +3676,7 @@
     break;
 
   case 281:
-#line 1233 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1242 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Type).newTy;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Type).destroy();
@@ -3676,7 +3685,7 @@
     break;
 
   case 282:
-#line 1238 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1247 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3685,7 +3694,7 @@
     break;
 
   case 283:
-#line 1243 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1252 "/proj/llvm/llvm-1/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();
@@ -3694,7 +3703,7 @@
     break;
 
   case 284:
-#line 1248 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1257 "/proj/llvm/llvm-1/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();
@@ -3703,7 +3712,7 @@
     break;
 
   case 285:
-#line 1253 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1262 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3712,7 +3721,7 @@
     break;
 
   case 286:
-#line 1258 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1267 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-6].String) += " " + *(yyvsp[-5].String);
@@ -3733,22 +3742,22 @@
     break;
 
   case 288:
-#line 1280 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1289 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
   case 289:
-#line 1281 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1290 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {  (yyval.ValList) = new ValueList(); ;}
     break;
 
   case 291:
-#line 1286 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1295 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 292:
-#line 1289 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1298 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3759,7 +3768,7 @@
     break;
 
   case 293:
-#line 1296 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1305 "/proj/llvm/llvm-1/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())
@@ -3770,7 +3779,7 @@
     break;
 
   case 294:
-#line 1303 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1312 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3781,7 +3790,7 @@
     break;
 
   case 295:
-#line 1310 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1319 "/proj/llvm/llvm-1/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())
@@ -3792,7 +3801,7 @@
     break;
 
   case 296:
-#line 1317 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1326 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3801,7 +3810,7 @@
     break;
 
   case 297:
-#line 1322 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1331 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty())
       *(yyvsp[-3].String) += " ";
@@ -3812,7 +3821,7 @@
     break;
 
   case 298:
-#line 1329 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1338 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-5].String) += " ";
@@ -3823,7 +3832,7 @@
     break;
 
   case 299:
-#line 1336 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1345 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
     {
     // Upgrade the indices
     for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) {
@@ -3854,7 +3863,7 @@
     }
 
 /* Line 1126 of yacc.c.  */
-#line 3858 "UpgradeParser.tab.c"
+#line 3867 "UpgradeParser.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4122,7 +4131,7 @@
 }
 
 
-#line 1360 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 1369 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
 
 
 int yyerror(const char *ErrorMsg) {
diff --git a/tools/llvm-upgrade/UpgradeParser.h b/tools/llvm-upgrade/UpgradeParser.h
index eb528e0..17a74c6 100644
--- a/tools/llvm-upgrade/UpgradeParser.h
+++ b/tools/llvm-upgrade/UpgradeParser.h
@@ -333,7 +333,7 @@
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 269 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 270 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
   TypeInfo        Type;
diff --git a/tools/llvm-upgrade/UpgradeParser.h.cvs b/tools/llvm-upgrade/UpgradeParser.h.cvs
index eb528e0..17a74c6 100644
--- a/tools/llvm-upgrade/UpgradeParser.h.cvs
+++ b/tools/llvm-upgrade/UpgradeParser.h.cvs
@@ -333,7 +333,7 @@
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 269 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
+#line 270 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
   TypeInfo        Type;
diff --git a/tools/llvm-upgrade/UpgradeParser.y.cvs b/tools/llvm-upgrade/UpgradeParser.y.cvs
index 8aa2beb..fd1c293 100644
--- a/tools/llvm-upgrade/UpgradeParser.y.cvs
+++ b/tools/llvm-upgrade/UpgradeParser.y.cvs
@@ -39,6 +39,7 @@
 static TypeVector EnumeratedTypes;
 typedef std::map<std::string,TypeInfo> TypeMap;
 static TypeMap NamedTypes;
+static TypeMap Globals;
 
 void destroy(ValueList* VL) {
   while (!VL->empty()) {
@@ -777,29 +778,37 @@
     $$ = 0;
   }
   | ConstPool OptAssign OptLinkage GlobalType ConstVal  GlobalVarAttributes {
-    if (!$2->empty())
+    if (!$2->empty()) {
       *O << *$2 << " = ";
+      Globals[*$2] = $5.type.clone();
+    }
     *O << *$3 << " " << *$4 << " " << *$5.cnst << " " << *$6 << "\n";
     delete $2; delete $3; delete $4; $5.destroy(); delete $6; 
     $$ = 0;
   }
   | ConstPool OptAssign External GlobalType Types  GlobalVarAttributes {
-    if (!$2->empty())
+    if (!$2->empty()) {
       *O << *$2 << " = ";
+      Globals[*$2] = $5.clone();
+    }
     *O <<  *$3 << " " << *$4 << " " << *$5.newTy << " " << *$6 << "\n";
     delete $2; delete $3; delete $4; $5.destroy(); delete $6;
     $$ = 0;
   }
   | ConstPool OptAssign DLLIMPORT GlobalType Types  GlobalVarAttributes {
-    if (!$2->empty())
+    if (!$2->empty()) {
       *O << *$2 << " = ";
+      Globals[*$2] = $5.clone();
+    }
     *O << *$3 << " " << *$4 << " " << *$5.newTy << " " << *$6 << "\n";
     delete $2; delete $3; delete $4; $5.destroy(); delete $6;
     $$ = 0;
   }
   | ConstPool OptAssign EXTERN_WEAK GlobalType Types  GlobalVarAttributes {
-    if (!$2->empty())
+    if (!$2->empty()) {
       *O << *$2 << " = ";
+      Globals[*$2] = $5.clone();
+    }
     *O << *$3 << " " << *$4 << " " << *$5.newTy << " " << *$6 << "\n";
     delete $2; delete $3; delete $4; $5.destroy(); delete $6;
     $$ = 0;