diff options
Diffstat (limited to 'lib/AsmParser')
-rw-r--r-- | lib/AsmParser/Lexer.cpp.cvs | 1349 | ||||
-rw-r--r-- | lib/AsmParser/Lexer.l | 14 | ||||
-rw-r--r-- | lib/AsmParser/Lexer.l.cvs | 55 | ||||
-rw-r--r-- | lib/AsmParser/ParserInternals.h | 9 | ||||
-rw-r--r-- | lib/AsmParser/llvmAsmParser.cpp.cvs | 2611 | ||||
-rw-r--r-- | lib/AsmParser/llvmAsmParser.h.cvs | 84 | ||||
-rw-r--r-- | lib/AsmParser/llvmAsmParser.y | 92 | ||||
-rw-r--r-- | lib/AsmParser/llvmAsmParser.y.cvs | 507 |
8 files changed, 2569 insertions, 2152 deletions
diff --git a/lib/AsmParser/Lexer.cpp.cvs b/lib/AsmParser/Lexer.cpp.cvs index 9d6db66..1ff6e5a 100644 --- a/lib/AsmParser/Lexer.cpp.cvs +++ b/lib/AsmParser/Lexer.cpp.cvs @@ -17,7 +17,7 @@ #define yylineno llvmAsmlineno #line 20 "Lexer.cpp" -/* A lexical scanner generated by flex */ +/* A lexical scanner generated by flex*/ /* Scanner skeleton version: * $Header$ @@ -28,6 +28,7 @@ #define YY_FLEX_MINOR_VERSION 5 #include <stdio.h> +#include <unistd.h> /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ @@ -41,7 +42,6 @@ #ifdef __cplusplus #include <stdlib.h> -#include <unistd.h> /* Use prototypes in function declarations. */ #define YY_USE_PROTOS @@ -153,6 +153,15 @@ extern FILE *yyin, *yyout; #define unput(c) yyunput( c, yytext_ptr ) +/* Some routines like yy_flex_realloc() are emitted as static but are + not called by all lexers. This generates warnings in some compilers, + notably GCC. Arrange to suppress these. */ +#ifdef __GNUC__ +#define YY_MAY_BE_UNUSED __attribute__((unused)) +#else +#define YY_MAY_BE_UNUSED +#endif + /* The following is because we cannot portably get our hands on size_t * (without autoconf's help, which isn't available because we want * flex-generated scanners to compile on their own). @@ -259,7 +268,7 @@ YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); +static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED; static void yy_flex_free YY_PROTO(( void * )); #define yy_new_buffer yy_create_buffer @@ -308,35 +317,37 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 120 -#define YY_END_OF_BUFFER 121 -static yyconst short int yy_acclist[198] = +#define YY_NUM_RULES 134 +#define YY_END_OF_BUFFER 135 +static yyconst short int yy_acclist[212] = { 0, - 121, 119, 120, 118, 119, 120, 118, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 111, 119, 120, 111, 119, 120, 1, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 110, 108, 107, 107, 114, 112, 116, 111, 1, - 93, 41, 75, 23, 110, 107, 107, 115, 116, 20, - 116, 117, 63, 74, 39, 34, 42, 66, 3, 54, - - 65, 25, 83, 70, 92, 87, 88, 64, 76, 109, - 116, 116, 49, 84, 85, 69, 100, 73, 101, 56, - 22, 113, 68, 72, 26, 4, 61, 67, 55, 71, - 48, 11, 116, 36, 2, 5, 58, 60, 50, 78, - 82, 80, 81, 79, 77, 52, 102, 51, 57, 21, - 90, 99, 45, 59, 30, 24, 44, 7, 95, 33, - 98, 38, 62, 86, 94, 27, 28, 96, 53, 91, - 89, 43, 6, 29, 37, 8, 17, 9, 10, 35, - 12, 14, 13, 32, 40, 15, 31, 97, 103, 105, - 106, 16, 46, 104, 18, 47, 19 - + 135, 133, 134, 132, 133, 134, 132, 134, 133, 134, + 133, 134, 133, 134, 133, 134, 133, 134, 133, 134, + 125, 133, 134, 125, 133, 134, 1, 133, 134, 133, + 134, 133, 134, 133, 134, 133, 134, 133, 134, 133, + 134, 133, 134, 133, 134, 133, 134, 133, 134, 133, + 134, 133, 134, 133, 134, 133, 134, 133, 134, 133, + 134, 133, 134, 133, 134, 133, 134, 133, 134, 133, + 134, 124, 122, 121, 121, 128, 126, 130, 125, 1, + 107, 41, 75, 23, 124, 121, 121, 129, 130, 20, + 130, 131, 63, 74, 39, 34, 42, 66, 3, 54, + + 65, 25, 83, 70, 106, 99, 100, 64, 76, 123, + 130, 130, 102, 49, 84, 85, 69, 114, 73, 115, + 56, 101, 22, 127, 68, 88, 72, 26, 4, 61, + 67, 55, 71, 48, 11, 87, 130, 36, 2, 5, + 58, 90, 60, 50, 78, 82, 80, 81, 79, 77, + 52, 116, 86, 51, 57, 21, 104, 113, 45, 59, + 30, 24, 44, 94, 93, 7, 109, 33, 112, 38, + 62, 98, 92, 108, 27, 28, 91, 110, 53, 105, + 103, 97, 43, 6, 29, 89, 37, 8, 17, 9, + 95, 10, 96, 35, 12, 14, 13, 32, 40, 15, + + 31, 111, 117, 119, 120, 16, 46, 118, 18, 47, + 19 } ; -static yyconst short int yy_accept[527] = +static yyconst short int yy_accept[577] = { 0, 1, 1, 1, 2, 4, 7, 9, 11, 13, 15, 17, 19, 21, 24, 27, 30, 32, 34, 36, 38, @@ -346,56 +357,61 @@ static yyconst short int yy_accept[527] = 81, 81, 81, 81, 81, 81, 81, 81, 81, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 84, 84, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 86, - 87, 89, 90, 91, 92, 92, 93, 94, 94, 94, - 95, 95, 96, 96, 97, 97, 97, 97, 98, 98, - 98, 98, 98, 98, 98, 99, 99, 99, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 102, - 103, 103, 103, 104, 104, 105, 106, 106, 106, 106, + 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 86, 87, 89, 90, 91, 92, 92, 93, + 94, 94, 94, 95, 95, 95, 96, 96, 97, 97, + 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, + 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 102, 103, 103, + 103, 104, 104, 104, 105, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 108, 108, 108, 108, 108, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 110, 110, 111, 112, 112, 112, - 112, 113, 113, 113, 113, 113, 114, 115, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 117, 117, 118, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 120, 121, 121, - 121, 122, 122, 122, 123, 123, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 125, 125, 125, 126, - 126, 126, 127, 128, 128, 129, 130, 130, 130, 130, - 130, 130, 131, 131, 131, 131, 131, 132, 132, 133, - - 133, 133, 134, 135, 135, 135, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - 137, 137, 138, 138, 138, 138, 138, 138, 138, 139, - 139, 139, 139, 139, 139, 139, 140, 140, 140, 141, - 142, 143, 144, 145, 146, 147, 147, 147, 148, 148, - 148, 148, 149, 150, 151, 151, 151, 151, 151, 151, - 152, 152, 152, 152, 152, 152, 153, 153, 154, 154, - 154, 154, 154, 154, 154, 154, 155, 156, 157, 157, - 157, 158, 158, 159, 159, 159, 159, 160, 160, 161, - 162, 163, 164, 164, 164, 165, 165, 165, 166, 167, - - 168, 168, 168, 169, 170, 171, 172, 172, 172, 172, - 172, 172, 172, 173, 173, 174, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 177, 177, - 177, 177, 177, 178, 178, 178, 178, 178, 179, 180, - 180, 180, 180, 180, 180, 181, 181, 181, 181, 182, - 182, 183, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 185, 185, 185, 185, - 185, 185, 185, 185, 186, 186, 186, 186, 186, 186, - 187, 187, 187, 187, 187, 188, 188, 188, 189, 189, - - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 190, 190, 191, 192, 193, 193, 194, 194, - 195, 196, 197, 197, 198, 198 + 109, 109, 109, 109, 109, 109, 110, 110, 110, 111, + 112, 112, 112, 112, 113, 113, 113, 113, 114, 114, + 114, 115, 116, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 118, + 118, 118, 118, 118, 119, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 121, 122, 123, 123, + 123, 124, 124, 124, 124, 125, 125, 126, 126, 126, + 126, 126, 126, 126, 127, 127, 127, 127, 127, 128, + + 128, 128, 129, 129, 129, 130, 130, 131, 131, 132, + 133, 133, 133, 133, 133, 133, 133, 134, 134, 134, + 134, 134, 135, 135, 136, 136, 136, 137, 138, 139, + 139, 139, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 141, 141, 142, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 144, 144, 144, 144, 144, 144, 144, 144, 145, + 145, 145, 146, 147, 148, 149, 150, 151, 152, 152, + 152, 152, 153, 153, 153, 153, 154, 155, 155, 156, + 157, 157, 157, 157, 157, 157, 158, 158, 158, 158, + + 158, 158, 159, 159, 159, 160, 160, 160, 160, 160, + 160, 160, 160, 161, 162, 163, 163, 163, 164, 165, + 166, 166, 166, 167, 167, 167, 167, 167, 168, 168, + 169, 170, 171, 172, 172, 172, 172, 173, 173, 173, + 174, 175, 176, 177, 178, 178, 178, 179, 180, 181, + 182, 182, 182, 182, 182, 182, 183, 183, 184, 184, + 185, 186, 186, 186, 186, 186, 186, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 189, 189, 189, 189, + 189, 190, 190, 190, 190, 190, 191, 192, 193, 193, + + 194, 194, 194, 194, 194, 195, 195, 195, 195, 196, + 196, 197, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 199, 199, 199, 199, + 199, 199, 199, 199, 200, 200, 200, 200, 200, 200, + 201, 201, 201, 201, 201, 202, 202, 202, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 204, 204, 205, 206, 207, 207, 208, 208, + 209, 210, 211, 211, 212, 212 } ; static yyconst int yy_ec[256] = @@ -439,248 +455,269 @@ static yyconst int yy_meta[44] = 3, 3, 3 } ; -static yyconst short int yy_base[531] = +static yyconst short int yy_base[581] = { 0, - 0, 0, 1140, 1141, 1141, 1141, 1135, 1124, 36, 40, + 0, 0, 1240, 1241, 1241, 1241, 1235, 1224, 36, 40, 44, 50, 56, 62, 0, 63, 66, 81, 89, 47, 100, 97, 76, 96, 111, 49, 113, 110, 68, 140, - 126, 171, 119, 118, 139, 133, 1133, 1141, 1122, 1141, - 0, 176, 184, 199, 204, 70, 209, 224, 229, 0, - 117, 130, 150, 72, 160, 151, 159, 123, 1121, 230, - 178, 31, 69, 168, 240, 95, 233, 165, 241, 243, - 242, 156, 244, 246, 187, 251, 253, 254, 211, 258, - 256, 263, 260, 265, 190, 267, 283, 1120, 271, 274, - 270, 285, 289, 290, 291, 292, 294, 295, 297, 299, - - 296, 308, 1119, 311, 300, 318, 320, 322, 323, 330, - 325, 328, 327, 337, 342, 216, 336, 345, 1118, 0, - 362, 366, 1117, 380, 397, 0, 1116, 370, 349, 1115, - 373, 1114, 355, 1113, 371, 372, 384, 1112, 392, 326, - 399, 398, 401, 402, 1111, 405, 404, 406, 411, 412, - 409, 413, 415, 422, 423, 425, 424, 426, 428, 429, - 435, 442, 374, 443, 444, 445, 446, 447, 1110, 1109, - 448, 449, 1108, 450, 1107, 1106, 476, 454, 455, 464, - 459, 488, 1105, 470, 1104, 490, 489, 460, 492, 1103, - 493, 494, 495, 496, 501, 502, 504, 507, 508, 512, - - 514, 517, 519, 520, 521, 518, 457, 522, 526, 530, - 539, 540, 541, 1102, 524, 1141, 550, 564, 568, 572, - 577, 578, 458, 579, 580, 1101, 1100, 1099, 581, 582, - 583, 584, 550, 585, 525, 586, 589, 551, 590, 587, - 607, 591, 594, 1098, 592, 1097, 1096, 603, 611, 610, - 593, 613, 617, 620, 621, 622, 1095, 1094, 623, 625, - 1093, 624, 626, 0, 627, 1092, 629, 638, 630, 643, - 644, 646, 628, 647, 654, 1091, 656, 661, 1090, 660, - 658, 1089, 1088, 662, 1087, 1086, 659, 664, 672, 675, - 676, 1085, 677, 678, 679, 681, 1084, 682, 1083, 684, - - 683, 690, 1082, 692, 695, 1081, 700, 704, 710, 711, - 691, 713, 701, 702, 714, 715, 718, 722, 724, 1080, - 726, 1079, 725, 727, 728, 729, 730, 736, 1078, 737, - 740, 743, 746, 748, 751, 1077, 735, 738, 1076, 1075, - 1074, 1073, 1072, 1071, 1070, 756, 758, 1069, 762, 759, - 763, 1068, 1067, 1066, 764, 766, 767, 765, 769, 1065, - 770, 776, 778, 777, 779, 1064, 781, 1063, 784, 785, - 786, 790, 791, 797, 798, 1062, 1061, 1060, 802, 795, - 1059, 803, 1058, 808, 811, 804, 1057, 805, 1056, 1055, - 1054, 1053, 810, 821, 1052, 823, 824, 1051, 1050, 1049, - - 822, 825, 1048, 1047, 1046, 1045, 826, 827, 828, 829, - 830, 833, 1044, 839, 1043, 1042, 840, 843, 844, 845, - 846, 850, 848, 851, 852, 853, 854, 1041, 858, 863, - 868, 869, 871, 875, 877, 878, 879, 1040, 881, 885, - 886, 882, 1037, 887, 889, 888, 894, 1028, 1026, 897, - 895, 892, 900, 907, 1025, 912, 916, 914, 1024, 917, - 1023, 1021, 918, 920, 922, 925, 926, 924, 928, 931, - 933, 932, 934, 936, 938, 1020, 941, 944, 937, 948, - 949, 950, 952, 1019, 957, 961, 962, 963, 964, 1018, - 965, 966, 967, 968, 1013, 969, 972, 1010, 973, 976, - - 982, 984, 990, 991, 992, 993, 994, 996, 997, 998, - 999, 1006, 1000, 896, 893, 633, 1005, 632, 1007, 385, - 354, 353, 1008, 301, 1141, 1043, 1045, 226, 1049, 166 + 126, 171, 120, 130, 124, 141, 1233, 1241, 1222, 1241, + 0, 159, 176, 199, 204, 70, 209, 224, 229, 0, + 137, 165, 143, 72, 169, 159, 230, 215, 1221, 168, + 182, 31, 69, 187, 240, 191, 242, 243, 244, 248, + 246, 245, 251, 254, 256, 249, 260, 262, 264, 211, + 273, 274, 270, 280, 275, 284, 285, 288, 292, 1220, + 293, 294, 298, 300, 301, 276, 302, 310, 311, 313, + + 305, 309, 312, 330, 331, 1219, 334, 320, 322, 338, + 340, 324, 341, 346, 348, 361, 356, 359, 162, 353, + 368, 1218, 0, 383, 387, 1217, 401, 418, 0, 1216, + 376, 370, 1215, 393, 373, 1214, 392, 1213, 406, 407, + 408, 403, 1212, 419, 95, 420, 372, 409, 421, 1211, + 425, 431, 428, 430, 433, 435, 432, 440, 443, 444, + 445, 451, 447, 446, 449, 450, 453, 461, 468, 458, + 469, 470, 473, 474, 475, 480, 1210, 1209, 481, 482, + 1208, 483, 485, 1207, 1206, 513, 491, 488, 494, 489, + 524, 503, 1205, 486, 1204, 487, 525, 527, 250, 528, + + 1203, 506, 531, 532, 536, 542, 538, 530, 537, 540, + 548, 544, 556, 550, 560, 557, 375, 554, 568, 558, + 571, 493, 576, 564, 582, 1202, 574, 552, 1241, 591, + 605, 609, 613, 618, 619, 577, 620, 1201, 621, 591, + 1200, 1199, 1198, 622, 623, 624, 625, 626, 628, 627, + 632, 630, 634, 633, 635, 644, 642, 643, 1197, 653, + 655, 657, 658, 1196, 1195, 659, 660, 661, 662, 663, + 667, 583, 671, 669, 673, 1194, 1193, 1192, 672, 677, + 1191, 675, 666, 680, 0, 691, 1190, 693, 694, 695, + 696, 702, 703, 1189, 697, 585, 704, 707, 1188, 709, + + 714, 1187, 722, 708, 1186, 726, 1185, 727, 1184, 1183, + 724, 728, 730, 716, 732, 735, 1182, 738, 741, 742, + 743, 1181, 744, 1180, 746, 745, 1179, 751, 1178, 755, + 757, 1177, 751, 754, 764, 771, 772, 763, 499, 766, + 774, 779, 775, 776, 780, 782, 1176, 783, 1175, 1174, + 781, 787, 786, 795, 791, 796, 798, 801, 805, 802, + 1173, 808, 807, 810, 813, 814, 819, 820, 1172, 809, + 815, 1171, 1170, 1169, 1168, 1167, 1166, 1165, 826, 829, + 830, 1164, 831, 832, 835, 1163, 1162, 834, 1161, 1160, + 836, 840, 837, 842, 846, 1159, 848, 850, 851, 852, + + 860, 1158, 854, 858, 1157, 861, 862, 864, 870, 866, + 868, 872, 1156, 1155, 1154, 880, 873, 1153, 1152, 1151, + 876, 882, 1150, 891, 893, 889, 874, 1149, 899, 1148, + 1147, 1146, 1145, 887, 895, 901, 1144, 904, 905, 1143, + 1142, 1141, 1140, 1139, 903, 907, 1138, 1137, 1136, 1135, + 909, 910, 914, 917, 911, 1134, 920, 1133, 921, 1132, + 1131, 923, 925, 926, 927, 929, 1130, 931, 933, 934, + 936, 935, 945, 937, 941, 1129, 947, 948, 953, 955, + 961, 962, 966, 963, 965, 1128, 967, 969, 971, 968, + 1127, 974, 978, 975, 979, 1126, 1123, 1113, 980, 1112, + + 981, 996, 982, 999, 1111, 1000, 1001, 1002, 1109, 987, + 1108, 1107, 1004, 1008, 1011, 1013, 1012, 1014, 1016, 1019, + 1020, 1021, 1022, 1024, 1025, 1104, 1026, 1029, 1031, 1032, + 1035, 1037, 1038, 1101, 1041, 1047, 1048, 1049, 1051, 1100, + 1053, 1052, 1054, 1057, 1098, 1058, 1059, 1096, 1065, 1071, + 1060, 1069, 1072, 1077, 1079, 1082, 1081, 1083, 1084, 1085, + 1087, 984, 1088, 983, 710, 668, 1092, 664, 1097, 593, + 345, 214, 1094, 213, 1241, 1129, 1131, 187, 1135, 138 } ; -static yyconst short int yy_def[531] = +static yyconst short int yy_def[581] = { 0, - 525, 1, 525, 525, 525, 525, 526, 527, 528, 525, - 527, 527, 527, 527, 529, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 526, 525, 527, 525, - 530, 530, 525, 525, 527, 527, 527, 527, 527, 529, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 525, 530, - 530, 525, 527, 527, 527, 49, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 49, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 525, 525, 525, 525, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 177, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - - 527, 525, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 0, 525, 525, 525, 525, 525 + 575, 1, 575, 575, 575, 575, 576, 577, 578, 575, + 577, 577, 577, 577, 579, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 576, 575, 577, 575, + 580, 580, 575, 575, 577, 577, 577, 577, 577, 579, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 575, 580, 580, 575, 577, 577, 577, 49, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 49, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 575, 575, + 575, 575, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 186, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 575, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 0, 575, 575, 575, 575, 575 } ; -static yyconst short int yy_nxt[1185] = +static yyconst short int yy_nxt[1285] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 14, 4, 15, 8, 8, 8, 16, 17, 18, 19, 20, 21, 22, 8, 23, 8, 24, 25, 26, 27, 28, 8, 29, 30, 31, 32, 33, 34, 35, 8, 36, 42, 40, 43, 43, 43, 43, 44, - 44, 44, 44, 45, 45, 45, 45, 40, 46, 139, - 40, 140, 40, 40, 47, 48, 48, 48, 48, 40, - 47, 48, 48, 48, 48, 40, 40, 69, 123, 40, - 85, 40, 40, 40, 51, 40, 86, 70, 56, 40, - 91, 52, 57, 53, 40, 54, 49, 58, 55, 60, - - 59, 61, 40, 141, 131, 77, 78, 64, 40, 40, - 40, 65, 62, 40, 79, 66, 63, 67, 71, 75, - 68, 72, 80, 40, 40, 76, 40, 81, 73, 82, - 40, 40, 40, 145, 74, 89, 40, 113, 127, 40, - 115, 90, 83, 40, 102, 87, 40, 88, 84, 92, - 114, 116, 40, 40, 135, 118, 128, 103, 129, 93, - 104, 94, 95, 40, 40, 96, 97, 105, 120, 40, - 117, 130, 40, 40, 98, 133, 99, 100, 40, 101, - 92, 40, 153, 134, 40, 121, 121, 121, 121, 132, - 106, 40, 107, 43, 43, 43, 43, 108, 138, 109, - - 40, 110, 147, 40, 142, 111, 112, 122, 44, 44, - 44, 44, 47, 45, 45, 45, 45, 40, 124, 124, - 124, 124, 40, 156, 40, 125, 170, 213, 41, 40, - 162, 125, 47, 48, 48, 48, 48, 40, 126, 126, - 126, 126, 40, 40, 126, 126, 40, 126, 126, 126, - 126, 126, 126, 40, 40, 40, 40, 40, 136, 40, - 143, 146, 148, 149, 40, 137, 40, 40, 155, 40, - 151, 40, 144, 40, 165, 154, 40, 152, 40, 150, - 40, 168, 157, 40, 40, 158, 166, 40, 163, 159, - 160, 167, 161, 169, 164, 171, 40, 173, 40, 175, - - 174, 172, 40, 40, 40, 40, 176, 40, 40, 40, - 40, 180, 40, 40, 40, 187, 179, 188, 190, 181, - 183, 40, 191, 184, 40, 177, 185, 182, 189, 186, - 178, 40, 196, 40, 192, 40, 40, 194, 40, 40, - 40, 40, 193, 40, 207, 208, 198, 205, 195, 40, - 40, 201, 199, 206, 200, 40, 202, 209, 40, 197, - 212, 230, 40, 210, 203, 211, 40, 40, 40, 204, - 214, 121, 121, 121, 121, 217, 217, 217, 217, 215, - 223, 225, 218, 40, 40, 40, 40, 40, 218, 124, - 124, 124, 124, 40, 222, 224, 125, 40, 40, 226, - - 227, 255, 125, 219, 220, 40, 221, 221, 221, 221, - 40, 40, 40, 229, 40, 40, 232, 40, 40, 40, - 228, 231, 40, 237, 40, 40, 40, 235, 40, 233, - 234, 236, 238, 239, 240, 40, 40, 40, 40, 40, - 245, 40, 40, 249, 242, 246, 241, 248, 40, 243, - 251, 252, 247, 244, 250, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 254, 257, 253, 40, 40, 258, - 40, 40, 40, 40, 259, 294, 261, 40, 304, 256, - 263, 268, 262, 40, 260, 264, 264, 264, 264, 276, - 265, 264, 264, 266, 264, 264, 264, 264, 264, 264, - - 267, 40, 40, 40, 273, 40, 40, 40, 40, 40, - 269, 275, 270, 274, 40, 40, 271, 40, 272, 280, - 40, 40, 279, 282, 283, 40, 277, 40, 281, 278, - 40, 40, 40, 40, 40, 40, 288, 40, 40, 40, - 284, 290, 287, 40, 286, 285, 291, 289, 296, 293, - 292, 297, 40, 40, 40, 301, 295, 298, 300, 217, - 217, 217, 217, 40, 40, 313, 218, 299, 311, 316, - 219, 219, 218, 302, 302, 302, 302, 302, 302, 302, - 302, 221, 221, 221, 221, 40, 221, 221, 221, 221, + 44, 44, 44, 45, 45, 45, 45, 40, 46, 144, + 40, 145, 40, 40, 47, 48, 48, 48, 48, 40, + 47, 48, 48, 48, 48, 40, 40, 69, 126, 40, + 87, 40, 40, 40, 51, 40, 88, 70, 56, 40, + 94, 52, 57, 53, 40, 54, 49, 58, 55, 60, + + 59, 61, 40, 146, 134, 78, 79, 64, 40, 40, + 40, 65, 62, 40, 80, 66, 63, 67, 71, 76, + 68, 72, 81, 40, 40, 77, 40, 82, 73, 84, + 245, 83, 74, 40, 75, 91, 119, 40, 116, 40, + 123, 92, 85, 40, 105, 89, 93, 90, 86, 95, + 40, 117, 118, 40, 40, 120, 40, 106, 130, 96, + 107, 97, 98, 121, 133, 99, 100, 108, 124, 124, + 124, 124, 40, 225, 101, 40, 102, 103, 40, 104, + 95, 40, 40, 137, 40, 43, 43, 43, 43, 41, + 109, 131, 110, 132, 135, 40, 141, 111, 136, 112, + + 40, 113, 143, 142, 40, 114, 115, 125, 44, 44, + 44, 44, 47, 45, 45, 45, 45, 40, 127, 127, + 127, 127, 40, 147, 40, 128, 40, 40, 40, 150, + 169, 128, 47, 48, 48, 48, 48, 40, 129, 129, + 129, 129, 40, 40, 129, 129, 140, 129, 129, 129, + 129, 129, 129, 40, 138, 40, 40, 40, 40, 40, + 148, 40, 40, 40, 40, 153, 139, 40, 154, 40, + 151, 158, 149, 40, 156, 40, 160, 40, 162, 299, + 152, 157, 159, 40, 155, 163, 40, 40, 40, 40, + 161, 164, 172, 40, 165, 174, 176, 40, 40, 166, + + 167, 40, 168, 170, 173, 40, 40, 40, 175, 171, + 180, 40, 177, 40, 40, 40, 179, 187, 40, 181, + 182, 178, 40, 40, 40, 40, 40, 199, 188, 184, + 189, 201, 183, 40, 197, 40, 185, 40, 190, 193, + 200, 186, 194, 40, 40, 195, 191, 40, 196, 198, + 192, 40, 207, 40, 40, 212, 202, 203, 40, 40, + 205, 40, 213, 208, 209, 204, 40, 214, 217, 40, + 210, 206, 40, 218, 40, 215, 211, 224, 219, 220, + 216, 40, 222, 40, 223, 40, 40, 226, 40, 40, + 247, 221, 124, 124, 124, 124, 230, 230, 230, 230, + + 235, 236, 227, 231, 317, 40, 40, 238, 228, 231, + 127, 127, 127, 127, 40, 237, 40, 128, 239, 40, + 40, 40, 40, 128, 232, 233, 240, 234, 234, 234, + 234, 40, 40, 40, 40, 241, 242, 248, 40, 243, + 244, 40, 246, 40, 40, 40, 40, 250, 40, 249, + 252, 251, 254, 40, 253, 255, 40, 40, 40, 40, + 40, 260, 40, 40, 40, 267, 40, 256, 258, 266, + 257, 40, 269, 264, 40, 270, 262, 268, 259, 263, + 265, 40, 40, 40, 261, 274, 40, 40, 40, 271, + 273, 276, 272, 40, 40, 40, 40, 277, 40, 40, + + 40, 40, 40, 279, 40, 275, 40, 40, 278, 281, + 296, 289, 40, 283, 322, 282, 40, 280, 410, 40, + 295, 284, 285, 285, 285, 285, 287, 286, 285, 285, + 288, 285, 285, 285, 285, 285, 285, 40, 40, 294, + 40, 40, 301, 40, 40, 40, 290, 297, 291, 40, + 40, 40, 292, 40, 293, 40, 303, 40, 298, 302, + 307, 40, 300, 40, 305, 40, 308, 40, 304, 40, + 40, 40, 306, 40, 312, 309, 310, 40, 313, 311, + 314, 40, 315, 316, 40, 318, 319, 40, 327, 40, + 40, 324, 320, 321, 323, 40, 40, 330, 40, 325, + + 230, 230, 230, 230, 40, 326, 40, 231, 379, 333, + 360, 232, 232, 231, 328, 328, 328, 328, 328, 328, + 328, 328, 234, 234, 234, 234, 40, 234, 234, 234, + 234, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 334, 40, 338, 40, 40, 40, 40, 329, + 331, 332, 343, 337, 339, 40, 40, 40, 342, 335, + 336, 341, 346, 348, 347, 344, 40, 340, 40, 345, + 40, 40, 40, 40, 40, 40, 40, 40, 355, 40, + 40, 40, 40, 356, 40, 40, 40, 354, 40, 349, + 40, 350, 351, 40, 352, 353, 357, 358, 359, 361, + + 362, 363, 367, 364, 40, 365, 40, 40, 40, 40, + 40, 368, 366, 369, 371, 40, 40, 40, 373, 370, + 40, 40, 40, 40, 375, 377, 380, 40, 372, 40, + 381, 382, 374, 378, 383, 40, 385, 40, 376, 40, + 40, 40, 391, 40, 384, 40, 386, 388, 40, 387, + 392, 40, 389, 390, 40, 40, 40, 40, 40, 40, + 328, 328, 328, 328, 40, 393, 396, 40, 40, 399, + 40, 401, 394, 402, 405, 395, 40, 40, 403, 40, + 398, 400, 406, 397, 40, 40, 404, 40, 40, 40, + 408, 407, 40, 40, 40, 40, 40, 409, 411, 40, + + 40, 413, 417, 418, 40, 414, 412, 419, 40, 40, + 416, 40, 415, 420, 40, 40, 421, 422, 40, 423, + 40, 40, 40, 40, 428, 424, 40, 40, 40, 430, + 431, 426, 40, 40, 425, 432, 433, 427, 429, 40, + 436, 434, 40, 40, 40, 40, 435, 40, 40, 40, + 40, 437, 439, 40, 438, 40, 441, 443, 447, 40, + 446, 40, 440, 40, 40, 40, 444, 40, 442, 452, + 449, 40, 445, 40, 40, 40, 451, 40, 448, 40, + 455, 40, 458, 40, 450, 40, 40, 40, 453, 40, + 454, 457, 460, 40, 456, 40, 467, 464, 465, 462, + + 40, 461, 40, 463, 40, 459, 40, 471, 40, 466, + 472, 468, 40, 469, 40, 470, 40, 40, 40, 473, + 40, 474, 40, 40, 40, 475, 477, 40, 478, 479, + 40, 476, 480, 40, 40, 483, 40, 481, 40, 40, + 40, 485, 40, 484, 40, 482, 40, 40, 40, 40, + 40, 492, 487, 493, 40, 491, 486, 488, 40, 489, + 40, 40, 495, 494, 496, 490, 40, 498, 40, 497, + 502, 503, 499, 504, 40, 40, 40, 500, 40, 40, + 40, 40, 40, 505, 40, 501, 507, 40, 40, 509, + 513, 40, 40, 40, 40, 40, 40, 40, 506, 508, + + 40, 517, 514, 519, 510, 511, 518, 512, 515, 40, + 521, 516, 40, 40, 40, 40, 520, 40, 522, 524, + 523, 40, 527, 526, 40, 40, 40, 40, 525, 40, + 528, 530, 40, 40, 40, 40, 533, 40, 40, 40, + 537, 531, 40, 539, 40, 40, 535, 529, 40, 536, + 40, 40, 538, 540, 40, 534, 532, 544, 541, 545, + 40, 40, 40, 542, 40, 40, 40, 40, 543, 548, + 40, 40, 40, 40, 546, 552, 549, 550, 40, 551, + 554, 557, 40, 547, 40, 40, 560, 555, 553, 556, + 40, 559, 40, 558, 40, 40, 40, 40, 40, 561, + + 40, 40, 566, 567, 568, 40, 562, 40, 563, 40, + 40, 40, 572, 40, 40, 564, 565, 40, 571, 573, + 40, 40, 40, 570, 40, 40, 40, 569, 574, 37, + 37, 37, 37, 39, 39, 50, 40, 50, 50, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - - 40, 307, 40, 40, 40, 40, 40, 40, 303, 305, - 306, 312, 310, 320, 321, 314, 40, 315, 308, 309, - 40, 318, 317, 40, 40, 319, 40, 326, 322, 324, - 40, 323, 325, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 328, 40, 40, 327, 329, 336, - 331, 40, 330, 333, 332, 337, 40, 40, 338, 40, - 40, 334, 335, 339, 345, 340, 342, 40, 344, 40, - 346, 40, 40, 40, 40, 40, 347, 40, 348, 341, - 343, 349, 350, 353, 352, 40, 351, 354, 40, 40, - 40, 40, 40, 356, 40, 40, 40, 40, 355, 302, - - 302, 302, 302, 360, 40, 40, 357, 363, 40, 365, - 366, 358, 359, 40, 40, 40, 367, 40, 362, 364, - 368, 361, 369, 40, 40, 372, 40, 40, 40, 371, - 370, 40, 373, 374, 375, 40, 376, 40, 40, 40, - 40, 40, 40, 40, 380, 377, 381, 382, 40, 40, - 40, 40, 379, 40, 378, 383, 40, 384, 387, 40, - 386, 40, 389, 390, 40, 385, 394, 388, 391, 40, - 392, 40, 40, 393, 395, 40, 40, 40, 40, 40, - 40, 397, 40, 40, 396, 400, 402, 398, 403, 40, - 40, 40, 40, 405, 40, 399, 408, 40, 40, 40, - - 401, 404, 407, 40, 40, 413, 406, 411, 40, 410, - 40, 40, 415, 409, 412, 40, 40, 40, 40, 419, - 420, 40, 425, 40, 40, 426, 416, 414, 417, 418, - 423, 421, 422, 424, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 427, 429, 40, 430, 431, 435, - 432, 428, 40, 40, 433, 436, 40, 40, 40, 40, - 437, 40, 434, 40, 40, 40, 40, 40, 444, 438, - 439, 40, 445, 443, 440, 449, 40, 441, 446, 447, - 448, 40, 40, 442, 40, 452, 453, 454, 40, 450, - 40, 40, 40, 455, 40, 40, 451, 457, 40, 40, - - 40, 40, 40, 459, 463, 40, 40, 40, 40, 40, - 40, 456, 470, 40, 458, 464, 467, 469, 460, 465, - 40, 461, 462, 468, 466, 40, 472, 40, 471, 40, - 40, 40, 473, 40, 474, 40, 477, 40, 40, 40, - 475, 40, 478, 480, 40, 40, 40, 40, 483, 40, - 40, 40, 487, 476, 40, 481, 489, 40, 479, 485, - 486, 40, 40, 40, 488, 40, 482, 484, 490, 492, - 40, 494, 495, 491, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 498, 493, 40, 40, 502, 496, 40, - 499, 500, 501, 504, 507, 40, 509, 40, 505, 497, - - 506, 508, 503, 40, 40, 40, 40, 40, 510, 40, - 40, 40, 40, 40, 511, 516, 517, 518, 40, 40, - 40, 40, 513, 40, 512, 522, 40, 515, 514, 523, - 521, 40, 40, 40, 40, 520, 40, 40, 40, 40, - 519, 40, 524, 37, 37, 37, 37, 39, 39, 50, - 40, 50, 50, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, @@ -689,15 +726,15 @@ static yyconst short int yy_nxt[1185] = 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 216, 40, 40, 40, 40, 119, 40, 38, 525, - 3, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525 + 40, 229, 40, 40, 40, 40, 122, 40, 38, 575, + 3, 575, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 575 } ; -static yyconst short int yy_chk[1185] = +static yyconst short int yy_chk[1285] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -710,125 +747,136 @@ static yyconst short int yy_chk[1185] = 26, 29, 63, 46, 16, 54, 26, 20, 17, 23, 29, 16, 17, 16, 18, 16, 13, 17, 16, 18, - 17, 18, 19, 63, 54, 23, 23, 19, 66, 24, + 17, 18, 19, 63, 54, 23, 23, 19, 145, 24, 22, 19, 18, 21, 24, 19, 18, 19, 21, 22, 19, 21, 24, 28, 25, 22, 27, 24, 21, 25, - 51, 34, 33, 66, 21, 28, 58, 33, 51, 31, - 34, 28, 25, 52, 31, 27, 36, 27, 25, 30, - 33, 35, 35, 30, 58, 36, 52, 31, 52, 30, - 31, 30, 30, 53, 56, 30, 30, 31, 530, 72, - 35, 53, 57, 55, 30, 56, 30, 30, 68, 30, - 32, 64, 72, 57, 32, 42, 42, 42, 42, 55, - 32, 61, 32, 43, 43, 43, 43, 32, 61, 32, - - 75, 32, 68, 85, 64, 32, 32, 44, 44, 44, + 145, 24, 21, 33, 21, 28, 35, 35, 33, 31, + 580, 28, 25, 34, 31, 27, 28, 27, 25, 30, + 51, 33, 34, 30, 36, 35, 53, 31, 51, 30, + 31, 30, 30, 36, 53, 30, 30, 31, 42, 42, + 42, 42, 56, 119, 30, 119, 30, 30, 52, 30, + 32, 60, 55, 56, 32, 43, 43, 43, 43, 578, + 32, 52, 32, 52, 55, 61, 60, 32, 55, 32, + + 64, 32, 61, 60, 66, 32, 32, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 47, 47, - 47, 47, 47, 75, 79, 47, 85, 116, 528, 116, - 79, 47, 48, 48, 48, 48, 48, 48, 49, 49, - 49, 49, 49, 60, 49, 49, 67, 49, 49, 49, - 49, 49, 49, 65, 69, 71, 70, 73, 60, 74, - 65, 67, 69, 70, 76, 60, 77, 78, 74, 81, - 71, 80, 65, 83, 81, 73, 82, 71, 84, 70, - 86, 83, 76, 91, 89, 77, 81, 90, 80, 78, - 78, 82, 78, 84, 80, 86, 87, 89, 92, 91, - - 90, 87, 93, 94, 95, 96, 91, 97, 98, 101, - 99, 95, 100, 105, 524, 97, 94, 98, 100, 95, - 96, 102, 101, 96, 104, 92, 96, 95, 99, 96, - 93, 106, 105, 107, 102, 108, 109, 104, 111, 140, - 113, 112, 102, 110, 113, 113, 107, 111, 104, 117, - 114, 110, 108, 112, 109, 115, 110, 113, 118, 106, - 115, 140, 129, 114, 110, 114, 522, 521, 133, 110, - 117, 121, 121, 121, 121, 122, 122, 122, 122, 118, - 129, 133, 122, 128, 135, 136, 131, 163, 122, 124, - 124, 124, 124, 124, 128, 131, 124, 137, 520, 135, - - 136, 163, 124, 125, 125, 139, 125, 125, 125, 125, - 125, 142, 141, 139, 143, 144, 142, 147, 146, 148, - 137, 141, 151, 147, 149, 150, 152, 146, 153, 143, - 144, 146, 148, 149, 150, 154, 155, 157, 156, 158, - 154, 159, 160, 157, 151, 155, 150, 156, 161, 152, - 159, 160, 155, 153, 158, 162, 164, 165, 166, 167, - 168, 171, 172, 174, 162, 165, 161, 178, 179, 166, - 207, 223, 181, 188, 167, 207, 171, 180, 223, 164, - 174, 181, 172, 184, 168, 177, 177, 177, 177, 188, - 178, 177, 177, 179, 177, 177, 177, 177, 177, 177, - - 180, 182, 187, 186, 184, 189, 191, 192, 193, 194, - 182, 187, 182, 186, 195, 196, 182, 197, 182, 193, - 198, 199, 192, 195, 196, 200, 189, 201, 194, 191, - 202, 206, 203, 204, 205, 208, 201, 215, 235, 209, - 197, 203, 200, 210, 199, 198, 204, 202, 209, 206, - 205, 210, 211, 212, 213, 215, 208, 211, 213, 217, - 217, 217, 217, 233, 238, 235, 217, 212, 233, 238, - 218, 218, 217, 218, 218, 218, 218, 219, 219, 219, - 219, 220, 220, 220, 220, 220, 221, 221, 221, 221, - 221, 222, 224, 225, 229, 230, 231, 232, 234, 236, - - 240, 229, 237, 239, 242, 245, 251, 243, 222, 224, - 225, 234, 232, 242, 243, 236, 248, 237, 230, 231, - 241, 240, 239, 250, 249, 241, 252, 251, 245, 249, - 253, 248, 250, 254, 255, 256, 259, 262, 260, 263, - 265, 273, 267, 269, 253, 518, 516, 252, 254, 265, - 256, 268, 255, 260, 259, 267, 270, 271, 268, 272, - 274, 262, 263, 269, 273, 270, 271, 275, 272, 277, - 274, 281, 287, 280, 278, 284, 275, 288, 277, 270, - 271, 278, 280, 287, 284, 289, 281, 288, 290, 291, - 293, 294, 295, 290, 296, 298, 301, 300, 289, 302, - - 302, 302, 302, 295, 311, 304, 291, 300, 305, 301, - 304, 293, 294, 307, 313, 314, 305, 308, 298, 300, - 307, 296, 308, 309, 310, 311, 312, 315, 316, 310, - 309, 317, 312, 313, 314, 318, 315, 319, 323, 321, - 324, 325, 326, 327, 319, 316, 321, 323, 337, 328, - 330, 338, 318, 331, 317, 324, 332, 325, 328, 333, - 327, 334, 331, 332, 335, 326, 337, 330, 333, 346, - 334, 347, 350, 335, 338, 349, 351, 355, 358, 356, - 357, 347, 359, 361, 346, 351, 356, 349, 357, 362, - 364, 363, 365, 359, 367, 350, 363, 369, 370, 371, - - 355, 358, 362, 372, 373, 370, 361, 367, 380, 365, - 374, 375, 372, 364, 369, 379, 382, 386, 388, 379, - 379, 384, 386, 393, 385, 388, 373, 371, 374, 375, - 384, 380, 382, 385, 394, 401, 396, 397, 402, 407, - 408, 409, 410, 411, 393, 396, 412, 397, 401, 409, - 402, 394, 414, 417, 407, 410, 418, 419, 420, 421, - 411, 423, 408, 422, 424, 425, 426, 427, 421, 412, - 414, 429, 422, 420, 417, 426, 430, 418, 423, 424, - 425, 431, 432, 419, 433, 430, 431, 432, 434, 427, - 435, 436, 437, 433, 439, 442, 429, 435, 440, 441, - - 444, 446, 445, 437, 442, 452, 515, 447, 451, 514, - 450, 434, 452, 453, 436, 444, 447, 451, 439, 445, - 454, 440, 441, 450, 446, 456, 454, 458, 453, 457, - 460, 463, 456, 464, 457, 465, 463, 468, 466, 467, - 458, 469, 464, 466, 470, 472, 471, 473, 469, 474, - 479, 475, 473, 460, 477, 467, 475, 478, 465, 471, - 472, 480, 481, 482, 474, 483, 468, 470, 477, 479, - 485, 481, 482, 478, 486, 487, 488, 489, 491, 492, - 493, 494, 496, 486, 480, 497, 499, 491, 483, 500, - 487, 488, 489, 493, 497, 501, 500, 502, 494, 485, - - 496, 499, 492, 503, 504, 505, 506, 507, 501, 508, - 509, 510, 511, 513, 502, 507, 508, 509, 517, 512, - 519, 523, 504, 498, 503, 517, 495, 506, 505, 519, - 513, 490, 484, 476, 462, 511, 461, 459, 455, 449, - 510, 448, 523, 526, 526, 526, 526, 527, 527, 529, - 443, 529, 529, 438, 428, 416, 415, 413, 406, 405, - 404, 403, 400, 399, 398, 395, 392, 391, 390, 389, - 387, 383, 381, 378, 377, 376, 368, 366, 360, 354, - 353, 352, 348, 345, 344, 343, 342, 341, 340, 339, - 336, 329, 322, 320, 306, 303, 299, 297, 292, 286, - - 285, 283, 282, 279, 276, 266, 261, 258, 257, 247, - 246, 244, 228, 227, 226, 214, 190, 185, 183, 176, - 175, 173, 170, 169, 145, 138, 134, 132, 130, 127, - 123, 119, 103, 88, 59, 39, 37, 8, 7, 3, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525 + 47, 47, 47, 64, 80, 47, 574, 572, 58, 66, + 80, 47, 48, 48, 48, 48, 48, 48, 49, 49, + 49, 49, 49, 57, 49, 49, 58, 49, 49, 49, + 49, 49, 49, 65, 57, 67, 68, 69, 72, 71, + 65, 70, 76, 199, 73, 69, 57, 74, 70, 75, + 67, 72, 65, 77, 71, 78, 74, 79, 75, 199, + 68, 71, 73, 83, 70, 76, 81, 82, 85, 96, + 74, 77, 82, 84, 78, 83, 85, 86, 87, 79, + + 79, 88, 79, 81, 82, 89, 91, 92, 84, 81, + 89, 93, 86, 94, 95, 97, 88, 96, 101, 91, + 92, 87, 102, 98, 99, 103, 100, 101, 97, 94, + 98, 103, 93, 108, 100, 109, 94, 112, 98, 99, + 102, 95, 99, 104, 105, 99, 98, 107, 99, 100, + 98, 110, 108, 111, 113, 112, 104, 105, 571, 114, + 107, 115, 113, 109, 110, 105, 120, 113, 114, 117, + 111, 107, 118, 115, 116, 113, 111, 118, 116, 116, + 113, 121, 117, 132, 117, 147, 135, 120, 217, 131, + 147, 116, 124, 124, 124, 124, 125, 125, 125, 125, + + 131, 132, 121, 125, 217, 137, 134, 135, 121, 125, + 127, 127, 127, 127, 127, 134, 142, 127, 137, 139, + 140, 141, 148, 127, 128, 128, 139, 128, 128, 128, + 128, 128, 144, 146, 149, 140, 141, 148, 151, 142, + 144, 153, 146, 154, 152, 157, 155, 151, 156, 149, + 152, 151, 154, 158, 153, 155, 159, 160, 161, 164, + 163, 159, 165, 166, 162, 164, 167, 155, 157, 163, + 156, 170, 166, 162, 168, 167, 161, 165, 158, 161, + 162, 169, 171, 172, 160, 170, 173, 174, 175, 167, + 169, 172, 168, 176, 179, 180, 182, 173, 183, 194, + + 196, 188, 190, 175, 187, 171, 222, 189, 174, 179, + 196, 190, 339, 182, 222, 180, 192, 176, 339, 202, + 194, 183, 186, 186, 186, 186, 188, 187, 186, 186, + 189, 186, 186, 186, 186, 186, 186, 191, 197, 192, + 198, 200, 202, 208, 203, 204, 191, 197, 191, 205, + 209, 207, 191, 210, 191, 206, 204, 212, 198, 203, + 207, 211, 200, 214, 206, 228, 208, 218, 205, 213, + 216, 220, 206, 215, 212, 209, 210, 224, 213, 211, + 214, 219, 215, 216, 221, 218, 219, 227, 228, 223, + 236, 224, 220, 221, 223, 225, 272, 236, 296, 225, + + 230, 230, 230, 230, 240, 227, 570, 230, 296, 240, + 272, 231, 231, 230, 231, 231, 231, 231, 232, 232, + 232, 232, 233, 233, 233, 233, 233, 234, 234, 234, + 234, 234, 235, 237, 239, 244, 245, 246, 247, 248, + 250, 249, 244, 252, 248, 251, 254, 253, 255, 235, + 237, 239, 253, 247, 249, 257, 258, 256, 252, 245, + 246, 251, 256, 258, 257, 254, 260, 250, 261, 255, + 262, 263, 266, 267, 268, 269, 270, 568, 267, 283, + 271, 566, 274, 268, 273, 279, 275, 266, 282, 260, + 280, 261, 262, 284, 262, 263, 269, 270, 271, 273, + + 274, 275, 283, 279, 286, 280, 288, 289, 290, 291, + 295, 284, 282, 286, 289, 292, 293, 297, 291, 288, + 298, 304, 300, 565, 292, 293, 297, 301, 290, 314, + 298, 300, 291, 295, 301, 303, 304, 311, 292, 306, + 308, 312, 314, 313, 303, 315, 306, 311, 316, 308, + 315, 318, 312, 313, 319, 320, 321, 323, 326, 325, + 328, 328, 328, 328, 333, 316, 320, 334, 330, 325, + 331, 326, 318, 330, 334, 319, 338, 335, 331, 340, + 323, 325, 335, 321, 336, 337, 333, 341, 343, 344, + 337, 336, 342, 345, 351, 346, 348, 338, 340, 353, + + 352, 342, 346, 348, 355, 343, 341, 351, 354, 356, + 345, 357, 344, 352, 358, 360, 353, 354, 359, 355, + 363, 362, 370, 364, 360, 356, 365, 366, 371, 363, + 364, 358, 367, 368, 357, 365, 366, 359, 362, 379, + 370, 367, 380, 381, 383, 384, 368, 388, 385, 391, + 393, 371, 380, 392, 379, 394, 383, 385, 393, 395, + 392, 397, 381, 398, 399, 400, 388, 403, 384, 399, + 395, 404, 391, 401, 406, 407, 398, 408, 394, 410, + 403, 411, 407, 409, 397, 412, 417, 427, 400, 421, + 401, 406, 409, 416, 404, 422, 421, 416, 416, 411, + + 434, 410, 426, 412, 424, 408, 425, 426, 435, 417, + 427, 422, 429, 424, 436, 425, 445, 438, 439, 429, + 446, 434, 451, 452, 455, 435, 438, 453, 439, 445, + 454, 436, 446, 457, 459, 453, 462, 451, 463, 464, + 465, 455, 466, 454, 468, 452, 469, 470, 472, 471, + 474, 466, 459, 468, 475, 465, 457, 462, 473, 463, + 477, 478, 470, 469, 471, 464, 479, 473, 480, 472, + 478, 479, 474, 480, 481, 482, 484, 475, 485, 483, + 487, 490, 488, 481, 489, 477, 483, 492, 494, 485, + 490, 493, 495, 499, 501, 503, 564, 562, 482, 484, + + 510, 495, 492, 501, 487, 488, 499, 489, 493, 502, + 503, 494, 504, 506, 507, 508, 502, 513, 504, 507, + 506, 514, 513, 510, 515, 517, 516, 518, 508, 519, + 514, 516, 520, 521, 522, 523, 519, 524, 525, 527, + 523, 517, 528, 525, 529, 530, 521, 515, 531, 522, + 532, 533, 524, 527, 535, 520, 518, 531, 528, 532, + 536, 537, 538, 529, 539, 542, 541, 543, 530, 536, + 544, 546, 547, 551, 533, 541, 537, 538, 549, 539, + 543, 547, 552, 535, 550, 553, 551, 544, 542, 546, + 554, 550, 555, 549, 557, 556, 558, 559, 560, 552, + + 561, 563, 557, 558, 559, 567, 553, 573, 554, 548, + 569, 545, 567, 540, 534, 555, 556, 526, 563, 569, + 512, 511, 509, 561, 505, 500, 498, 560, 573, 576, + 576, 576, 576, 577, 577, 579, 497, 579, 579, 496, + 491, 486, 476, 467, 461, 460, 458, 456, 450, 449, + 448, 447, 444, 443, 442, 441, 440, 437, 433, 432, + 431, 430, 428, 423, 420, 419, 418, 415, 414, 413, + 405, 402, 396, 390, 389, 387, 386, 382, 378, 377, + 376, 375, 374, 373, 372, 369, 361, 350, 349, 347, + 332, 329, 327, 324, 322, 317, 310, 309, 307, 305, + + 302, 299, 294, 287, 281, 278, 277, 276, 265, 264, + 259, 243, 242, 241, 238, 226, 201, 195, 193, 185, + 184, 181, 178, 177, 150, 143, 138, 136, 133, 130, + 126, 122, 106, 90, 59, 39, 37, 8, 7, 3, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 575 } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -845,7 +893,7 @@ goto find_rule; \ #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; -#line 1 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 1 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" #define INITIAL 0 /*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===// // @@ -860,7 +908,7 @@ char *yytext; // //===----------------------------------------------------------------------===*/ #define YY_NEVER_INTERACTIVE 1 -#line 28 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 28 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" #include "ParserInternals.h" #include "llvm/Module.h" #include <list> @@ -887,6 +935,17 @@ void set_scan_string (const char * str) { llvmAsmlval.type.obsolete = true; \ return sym +// Construct a token value for a non-obsolete type +#define RET_TY(CType, sym) \ + llvmAsmlval.TypeVal.type = new PATypeHolder(CType); \ + llvmAsmlval.TypeVal.signedness = isSignless; \ + return sym + +// Construct a token value for an obsolete token +#define RET_TY_OBSOLETE(CType, sign, sym) \ + llvmAsmlval.TypeVal.type = new PATypeHolder(CType); \ + llvmAsmlval.TypeVal.signedness = sign; \ + return sym namespace llvm { @@ -996,7 +1055,7 @@ using namespace llvm; /* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing * it to deal with 64 bit numbers. */ -#line 1000 "Lexer.cpp" +#line 1059 "Lexer.cpp" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1144,13 +1203,13 @@ YY_MALLOC_DECL YY_DECL { register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; + register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; -#line 189 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 200 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" -#line 1154 "Lexer.cpp" +#line 1213 "Lexer.cpp" if ( yy_init ) { @@ -1198,14 +1257,14 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 526 ) + if ( yy_current_state >= 576 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *yy_state_ptr++ = yy_current_state; ++yy_cp; } - while ( yy_current_state != 525 ); + while ( yy_current_state != 575 ); yy_find_action: yy_current_state = *--yy_state_ptr; @@ -1243,546 +1302,616 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 191 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 202 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { /* Ignore comments for now */ } YY_BREAK case 2: YY_RULE_SETUP -#line 193 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 204 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return BEGINTOK; } YY_BREAK case 3: YY_RULE_SETUP -#line 194 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 205 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return ENDTOK; } YY_BREAK case 4: YY_RULE_SETUP -#line 195 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 206 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return TRUETOK; } YY_BREAK case 5: YY_RULE_SETUP -#line 196 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 207 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return FALSETOK; } YY_BREAK case 6: YY_RULE_SETUP -#line 197 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 208 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return DECLARE; } YY_BREAK case 7: YY_RULE_SETUP -#line 198 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 209 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return GLOBAL; } YY_BREAK case 8: YY_RULE_SETUP -#line 199 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 210 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return CONSTANT; } YY_BREAK case 9: YY_RULE_SETUP -#line 200 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 211 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return INTERNAL; } YY_BREAK case 10: YY_RULE_SETUP -#line 201 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 212 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return LINKONCE; } YY_BREAK case 11: YY_RULE_SETUP -#line 202 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 213 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return WEAK; } YY_BREAK case 12: YY_RULE_SETUP -#line 203 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 214 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return APPENDING; } YY_BREAK case 13: YY_RULE_SETUP -#line 204 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 215 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return DLLIMPORT; } YY_BREAK case 14: YY_RULE_SETUP -#line 205 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 216 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return DLLEXPORT; } YY_BREAK case 15: YY_RULE_SETUP -#line 206 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 217 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return EXTERN_WEAK; } YY_BREAK case 16: YY_RULE_SETUP -#line 207 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 218 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return EXTERNAL; } /* Deprecated, turn into external */ YY_BREAK case 17: YY_RULE_SETUP -#line 208 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 219 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return EXTERNAL; } YY_BREAK case 18: YY_RULE_SETUP -#line 209 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 220 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return IMPLEMENTATION; } YY_BREAK case 19: YY_RULE_SETUP -#line 210 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 221 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return ZEROINITIALIZER; } YY_BREAK case 20: YY_RULE_SETUP -#line 211 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 222 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return DOTDOTDOT; } YY_BREAK case 21: YY_RULE_SETUP -#line 212 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 223 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return UNDEF; } YY_BREAK case 22: YY_RULE_SETUP -#line 213 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 224 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return NULL_TOK; } YY_BREAK case 23: YY_RULE_SETUP -#line 214 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 225 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return TO; } YY_BREAK case 24: YY_RULE_SETUP -#line 215 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 226 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Unwind, UNWIND); } YY_BREAK case 25: YY_RULE_SETUP -#line 216 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 227 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return NOT; } /* Deprecated, turned into XOR */ YY_BREAK case 26: YY_RULE_SETUP -#line 217 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 228 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return TAIL; } YY_BREAK case 27: YY_RULE_SETUP -#line 218 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 229 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return TARGET; } YY_BREAK case 28: YY_RULE_SETUP -#line 219 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 230 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return TRIPLE; } YY_BREAK case 29: YY_RULE_SETUP -#line 220 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 231 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return DEPLIBS; } YY_BREAK case 30: YY_RULE_SETUP -#line 221 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 232 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return ENDIAN; } YY_BREAK case 31: YY_RULE_SETUP -#line 222 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 233 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return POINTERSIZE; } YY_BREAK case 32: YY_RULE_SETUP -#line 223 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 234 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return DATALAYOUT; } YY_BREAK case 33: YY_RULE_SETUP -#line 224 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 235 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return LITTLE; } YY_BREAK case 34: YY_RULE_SETUP -#line 225 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 236 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return BIG; } YY_BREAK case 35: YY_RULE_SETUP -#line 226 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 237 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return VOLATILE; } YY_BREAK case 36: YY_RULE_SETUP -#line 227 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 238 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return ALIGN; } YY_BREAK case 37: YY_RULE_SETUP -#line 228 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 239 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return SECTION; } YY_BREAK case 38: YY_RULE_SETUP -#line 229 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 240 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return MODULE; } YY_BREAK case 39: YY_RULE_SETUP -#line 230 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 241 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return ASM_TOK; } YY_BREAK case 40: YY_RULE_SETUP -#line 231 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 242 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return SIDEEFFECT; } YY_BREAK case 41: YY_RULE_SETUP -#line 233 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 244 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return CC_TOK; } YY_BREAK case 42: YY_RULE_SETUP -#line 234 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 245 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return CCC_TOK; } YY_BREAK case 43: YY_RULE_SETUP -#line 235 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 246 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return CSRETCC_TOK; } YY_BREAK case 44: YY_RULE_SETUP -#line 236 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 247 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return FASTCC_TOK; } YY_BREAK case 45: YY_RULE_SETUP -#line 237 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 248 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return COLDCC_TOK; } YY_BREAK case 46: YY_RULE_SETUP -#line 238 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 249 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return X86_STDCALLCC_TOK; } YY_BREAK case 47: YY_RULE_SETUP -#line 239 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 250 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return X86_FASTCALLCC_TOK; } YY_BREAK case 48: YY_RULE_SETUP -#line 241 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::VoidTy ; return VOID; } +#line 252 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY(Type::VoidTy, VOID); } YY_BREAK case 49: YY_RULE_SETUP -#line 242 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::BoolTy ; return BOOL; } +#line 253 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY(Type::BoolTy, BOOL); } YY_BREAK case 50: YY_RULE_SETUP -#line 243 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::SByteTy ; return SBYTE; } +#line 254 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY_OBSOLETE(Type::SByteTy, isSigned, SBYTE); } YY_BREAK case 51: YY_RULE_SETUP -#line 244 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::UByteTy ; return UBYTE; } +#line 255 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY_OBSOLETE(Type::UByteTy, isUnsigned, UBYTE); } YY_BREAK case 52: YY_RULE_SETUP -#line 245 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::ShortTy ; return SHORT; } +#line 256 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY_OBSOLETE(Type::ShortTy, isSigned, SHORT); } YY_BREAK case 53: YY_RULE_SETUP -#line 246 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::UShortTy; return USHORT; } +#line 257 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY_OBSOLETE(Type::UShortTy,isUnsigned, USHORT); } YY_BREAK case 54: YY_RULE_SETUP -#line 247 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::IntTy ; return INT; } +#line 258 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY_OBSOLETE(Type::IntTy, isSigned, INT); } YY_BREAK case 55: YY_RULE_SETUP -#line 248 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::UIntTy ; return UINT; } +#line 259 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY_OBSOLETE(Type::UIntTy, isUnsigned, UINT); } YY_BREAK case 56: YY_RULE_SETUP -#line 249 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::LongTy ; return LONG; } +#line 260 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY_OBSOLETE(Type::LongTy, isSigned, LONG); } YY_BREAK case 57: YY_RULE_SETUP -#line 250 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::ULongTy ; return ULONG; } +#line 261 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY_OBSOLETE(Type::ULongTy, isUnsigned, ULONG); } YY_BREAK case 58: YY_RULE_SETUP -#line 251 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::FloatTy ; return FLOAT; } +#line 262 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY(Type::FloatTy, FLOAT); } YY_BREAK case 59: YY_RULE_SETUP -#line 252 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::DoubleTy; return DOUBLE; } +#line 263 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY(Type::DoubleTy, DOUBLE); } YY_BREAK case 60: YY_RULE_SETUP -#line 253 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ llvmAsmlval.PrimType = Type::LabelTy ; return LABEL; } +#line 264 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TY(Type::LabelTy, LABEL); } YY_BREAK case 61: YY_RULE_SETUP -#line 254 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 265 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return TYPE; } YY_BREAK case 62: YY_RULE_SETUP -#line 255 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 266 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return OPAQUE; } YY_BREAK case 63: YY_RULE_SETUP -#line 257 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 268 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, Add, ADD); } YY_BREAK case 64: YY_RULE_SETUP -#line 258 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 269 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, Sub, SUB); } YY_BREAK case 65: YY_RULE_SETUP -#line 259 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 270 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, Mul, MUL); } YY_BREAK case 66: YY_RULE_SETUP -#line 260 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 271 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK_OBSOLETE(BinaryOpVal, UDiv, UDIV); } YY_BREAK case 67: YY_RULE_SETUP -#line 261 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 272 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, UDiv, UDIV); } YY_BREAK case 68: YY_RULE_SETUP -#line 262 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 273 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, SDiv, SDIV); } YY_BREAK case 69: YY_RULE_SETUP -#line 263 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 274 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, FDiv, FDIV); } YY_BREAK case 70: YY_RULE_SETUP -#line 264 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 275 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK_OBSOLETE(BinaryOpVal, URem, UREM); } YY_BREAK case 71: YY_RULE_SETUP -#line 265 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 276 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, URem, UREM); } YY_BREAK case 72: YY_RULE_SETUP -#line 266 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 277 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, SRem, SREM); } YY_BREAK case 73: YY_RULE_SETUP -#line 267 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 278 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, FRem, FREM); } YY_BREAK case 74: YY_RULE_SETUP -#line 268 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 279 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, And, AND); } YY_BREAK case 75: YY_RULE_SETUP -#line 269 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 280 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, Or , OR ); } YY_BREAK case 76: YY_RULE_SETUP -#line 270 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 281 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, Xor, XOR); } YY_BREAK case 77: YY_RULE_SETUP -#line 271 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 282 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, SetNE, SETNE); } YY_BREAK case 78: YY_RULE_SETUP -#line 272 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 283 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, SetEQ, SETEQ); } YY_BREAK case 79: YY_RULE_SETUP -#line 273 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 284 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, SetLT, SETLT); } YY_BREAK case 80: YY_RULE_SETUP -#line 274 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 285 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, SetGT, SETGT); } YY_BREAK case 81: YY_RULE_SETUP -#line 275 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 286 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, SetLE, SETLE); } YY_BREAK case 82: YY_RULE_SETUP -#line 276 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 287 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, SetGE, SETGE); } YY_BREAK case 83: YY_RULE_SETUP -#line 278 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 289 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, PHI, PHI_TOK); } YY_BREAK case 84: YY_RULE_SETUP -#line 279 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 290 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, Call, CALL); } YY_BREAK case 85: YY_RULE_SETUP -#line 280 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, Cast, CAST); } +#line 291 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK_OBSOLETE(CastOpVal, Trunc, TRUNC); } YY_BREAK case 86: YY_RULE_SETUP -#line 281 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, Select, SELECT); } +#line 292 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, Trunc, TRUNC); } YY_BREAK case 87: YY_RULE_SETUP -#line 282 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, Shl, SHL); } +#line 293 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, ZExt, ZEXT); } YY_BREAK case 88: YY_RULE_SETUP -#line 283 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, Shr, SHR); } +#line 294 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, SExt, SEXT); } YY_BREAK case 89: YY_RULE_SETUP -#line 284 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ return VANEXT_old; } +#line 295 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); } YY_BREAK case 90: YY_RULE_SETUP -#line 285 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ return VAARG_old; } +#line 296 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, FPExt, FPEXT); } YY_BREAK case 91: YY_RULE_SETUP -#line 286 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, VAArg , VAARG); } +#line 297 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, UIToFP, UITOFP); } YY_BREAK case 92: YY_RULE_SETUP -#line 287 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(TermOpVal, Ret, RET); } +#line 298 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, SIToFP, SITOFP); } YY_BREAK case 93: YY_RULE_SETUP -#line 288 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(TermOpVal, Br, BR); } +#line 299 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, FPToUI, FPTOUI); } YY_BREAK case 94: YY_RULE_SETUP -#line 289 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(TermOpVal, Switch, SWITCH); } +#line 300 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, FPToSI, FPTOSI); } YY_BREAK case 95: YY_RULE_SETUP -#line 290 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(TermOpVal, Invoke, INVOKE); } +#line 301 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); } YY_BREAK case 96: YY_RULE_SETUP -#line 291 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(TermOpVal, Unwind, UNWIND); } +#line 302 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); } YY_BREAK case 97: YY_RULE_SETUP -#line 292 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); } +#line 303 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, BitCast, BITCAST); } YY_BREAK case 98: YY_RULE_SETUP -#line 294 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(MemOpVal, Malloc, MALLOC); } +#line 304 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, Select, SELECT); } YY_BREAK case 99: YY_RULE_SETUP -#line 295 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(MemOpVal, Alloca, ALLOCA); } +#line 305 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, Shl, SHL); } YY_BREAK case 100: YY_RULE_SETUP -#line 296 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(MemOpVal, Free, FREE); } +#line 306 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK_OBSOLETE(OtherOpVal, LShr, LSHR); } YY_BREAK case 101: YY_RULE_SETUP -#line 297 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(MemOpVal, Load, LOAD); } +#line 307 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, LShr, LSHR); } YY_BREAK case 102: YY_RULE_SETUP -#line 298 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(MemOpVal, Store, STORE); } +#line 308 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, AShr, ASHR); } YY_BREAK case 103: YY_RULE_SETUP -#line 299 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); } +#line 309 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ return VANEXT_old; } YY_BREAK case 104: YY_RULE_SETUP -#line 301 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); } +#line 310 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ return VAARG_old; } YY_BREAK case 105: YY_RULE_SETUP -#line 302 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); } +#line 311 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, VAArg , VAARG); } YY_BREAK case 106: YY_RULE_SETUP -#line 303 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); } +#line 312 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(TermOpVal, Ret, RET); } YY_BREAK case 107: YY_RULE_SETUP -#line 306 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 313 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(TermOpVal, Br, BR); } + YY_BREAK +case 108: +YY_RULE_SETUP +#line 314 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(TermOpVal, Switch, SWITCH); } + YY_BREAK +case 109: +YY_RULE_SETUP +#line 315 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(TermOpVal, Invoke, INVOKE); } + YY_BREAK +case 110: +YY_RULE_SETUP +#line 316 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(TermOpVal, Unwind, UNWIND); } + YY_BREAK +case 111: +YY_RULE_SETUP +#line 317 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); } + YY_BREAK +case 112: +YY_RULE_SETUP +#line 319 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(MemOpVal, Malloc, MALLOC); } + YY_BREAK +case 113: +YY_RULE_SETUP +#line 320 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(MemOpVal, Alloca, ALLOCA); } + YY_BREAK +case 114: +YY_RULE_SETUP +#line 321 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(MemOpVal, Free, FREE); } + YY_BREAK +case 115: +YY_RULE_SETUP +#line 322 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(MemOpVal, Load, LOAD); } + YY_BREAK +case 116: +YY_RULE_SETUP +#line 323 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(MemOpVal, Store, STORE); } + YY_BREAK +case 117: +YY_RULE_SETUP +#line 324 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); } + YY_BREAK +case 118: +YY_RULE_SETUP +#line 326 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); } + YY_BREAK +case 119: +YY_RULE_SETUP +#line 327 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); } + YY_BREAK +case 120: +YY_RULE_SETUP +#line 328 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); } + YY_BREAK +case 121: +YY_RULE_SETUP +#line 331 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { UnEscapeLexed(yytext+1); llvmAsmlval.StrVal = strdup(yytext+1); // Skip % return VAR_ID; } YY_BREAK -case 108: +case 122: YY_RULE_SETUP -#line 311 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 336 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { yytext[strlen(yytext)-1] = 0; // nuke colon UnEscapeLexed(yytext); @@ -1790,9 +1919,9 @@ YY_RULE_SETUP return LABELSTR; } YY_BREAK -case 109: +case 123: YY_RULE_SETUP -#line 317 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 342 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { yytext[strlen(yytext)-2] = 0; // nuke colon, end quote UnEscapeLexed(yytext+1); @@ -1800,9 +1929,9 @@ YY_RULE_SETUP return LABELSTR; } YY_BREAK -case 110: +case 124: YY_RULE_SETUP -#line 324 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 349 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { // Note that we cannot unescape a string constant here! The // string constant might contain a \00 which would not be // understood by the string stuff. It is valid to make a @@ -1813,14 +1942,14 @@ YY_RULE_SETUP return STRINGCONSTANT; } YY_BREAK -case 111: +case 125: YY_RULE_SETUP -#line 335 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 360 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; } YY_BREAK -case 112: +case 126: YY_RULE_SETUP -#line 336 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 361 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { uint64_t Val = atoull(yytext+1); // +1: we have bigger negative range @@ -1830,17 +1959,17 @@ YY_RULE_SETUP return ESINT64VAL; } YY_BREAK -case 113: +case 127: YY_RULE_SETUP -#line 344 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 369 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { llvmAsmlval.UInt64Val = HexIntToVal(yytext+3); return yytext[0] == 's' ? ESINT64VAL : EUINT64VAL; } YY_BREAK -case 114: +case 128: YY_RULE_SETUP -#line 349 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 374 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { uint64_t Val = atoull(yytext+1); if ((unsigned)Val != Val) @@ -1849,9 +1978,9 @@ YY_RULE_SETUP return UINTVAL; } YY_BREAK -case 115: +case 129: YY_RULE_SETUP -#line 356 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 381 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { uint64_t Val = atoull(yytext+2); // +1: we have bigger negative range @@ -1861,18 +1990,18 @@ YY_RULE_SETUP return SINTVAL; } YY_BREAK -case 116: +case 130: YY_RULE_SETUP -#line 365 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 390 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { llvmAsmlval.FPVal = atof(yytext); return FPVAL; } YY_BREAK -case 117: +case 131: YY_RULE_SETUP -#line 366 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 391 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { llvmAsmlval.FPVal = HexToFP(yytext); return FPVAL; } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 368 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 393 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { /* Make sure to free the internal buffers for flex when we are * done reading our input! @@ -1881,22 +2010,22 @@ case YY_STATE_EOF(INITIAL): return EOF; } YY_BREAK -case 118: +case 132: YY_RULE_SETUP -#line 376 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 401 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { /* Ignore whitespace */ } YY_BREAK -case 119: +case 133: YY_RULE_SETUP -#line 377 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 402 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" { return yytext[0]; } YY_BREAK -case 120: +case 134: YY_RULE_SETUP -#line 379 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 404 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1900 "Lexer.cpp" +#line 2029 "Lexer.cpp" case YY_END_OF_BUFFER: { @@ -2183,7 +2312,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 526 ) + if ( yy_current_state >= 576 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2213,11 +2342,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 526 ) + if ( yy_current_state >= 576 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 525); + yy_is_jam = (yy_current_state == 575); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -2272,6 +2401,7 @@ register char *yy_bp; #endif /* ifndef YY_NO_UNPUT */ +#ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput() #else @@ -2345,7 +2475,7 @@ static int input() return c; } - +#endif /* YY_NO_INPUT */ #ifdef YY_USE_PROTOS void yyrestart( FILE *input_file ) @@ -2456,11 +2586,6 @@ YY_BUFFER_STATE b; } -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif #ifdef YY_USE_PROTOS void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) @@ -2778,5 +2903,5 @@ int main() return 0; } #endif -#line 379 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l" +#line 404 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" diff --git a/lib/AsmParser/Lexer.l b/lib/AsmParser/Lexer.l index 717e583..b47ae91 100644 --- a/lib/AsmParser/Lexer.l +++ b/lib/AsmParser/Lexer.l @@ -288,7 +288,19 @@ setge { RET_TOK(BinaryOpVal, SetGE, SETGE); } phi { RET_TOK(OtherOpVal, PHI, PHI_TOK); } call { RET_TOK(OtherOpVal, Call, CALL); } -cast { RET_TOK(OtherOpVal, Cast, CAST); } +cast { RET_TOK_OBSOLETE(CastOpVal, Trunc, TRUNC); } +trunc { RET_TOK(CastOpVal, Trunc, TRUNC); } +zext { RET_TOK(CastOpVal, ZExt, ZEXT); } +sext { RET_TOK(CastOpVal, SExt, SEXT); } +fptrunc { RET_TOK(CastOpVal, FPTrunc, FPTRUNC); } +fpext { RET_TOK(CastOpVal, FPExt, FPEXT); } +uitofp { RET_TOK(CastOpVal, UIToFP, UITOFP); } +sitofp { RET_TOK(CastOpVal, SIToFP, SITOFP); } +fptoui { RET_TOK(CastOpVal, FPToUI, FPTOUI); } +fptosi { RET_TOK(CastOpVal, FPToSI, FPTOSI); } +inttoptr { RET_TOK(CastOpVal, IntToPtr, INTTOPTR); } +ptrtoint { RET_TOK(CastOpVal, PtrToInt, PTRTOINT); } +bitcast { RET_TOK(CastOpVal, BitCast, BITCAST); } select { RET_TOK(OtherOpVal, Select, SELECT); } shl { RET_TOK(OtherOpVal, Shl, SHL); } shr { RET_TOK_OBSOLETE(OtherOpVal, LShr, LSHR); } diff --git a/lib/AsmParser/Lexer.l.cvs b/lib/AsmParser/Lexer.l.cvs index 4df84f6..b47ae91 100644 --- a/lib/AsmParser/Lexer.l.cvs +++ b/lib/AsmParser/Lexer.l.cvs @@ -51,6 +51,17 @@ void set_scan_string (const char * str) { llvmAsmlval.type.obsolete = true; \ return sym +// Construct a token value for a non-obsolete type +#define RET_TY(CType, sym) \ + llvmAsmlval.TypeVal.type = new PATypeHolder(CType); \ + llvmAsmlval.TypeVal.signedness = isSignless; \ + return sym + +// Construct a token value for an obsolete token +#define RET_TY_OBSOLETE(CType, sign, sym) \ + llvmAsmlval.TypeVal.type = new PATypeHolder(CType); \ + llvmAsmlval.TypeVal.signedness = sign; \ + return sym namespace llvm { @@ -238,19 +249,19 @@ coldcc { return COLDCC_TOK; } x86_stdcallcc { return X86_STDCALLCC_TOK; } x86_fastcallcc { return X86_FASTCALLCC_TOK; } -void { llvmAsmlval.PrimType = Type::VoidTy ; return VOID; } -bool { llvmAsmlval.PrimType = Type::BoolTy ; return BOOL; } -sbyte { llvmAsmlval.PrimType = Type::SByteTy ; return SBYTE; } -ubyte { llvmAsmlval.PrimType = Type::UByteTy ; return UBYTE; } -short { llvmAsmlval.PrimType = Type::ShortTy ; return SHORT; } -ushort { llvmAsmlval.PrimType = Type::UShortTy; return USHORT; } -int { llvmAsmlval.PrimType = Type::IntTy ; return INT; } -uint { llvmAsmlval.PrimType = Type::UIntTy ; return UINT; } -long { llvmAsmlval.PrimType = Type::LongTy ; return LONG; } -ulong { llvmAsmlval.PrimType = Type::ULongTy ; return ULONG; } -float { llvmAsmlval.PrimType = Type::FloatTy ; return FLOAT; } -double { llvmAsmlval.PrimType = Type::DoubleTy; return DOUBLE; } -label { llvmAsmlval.PrimType = Type::LabelTy ; return LABEL; } +void { RET_TY(Type::VoidTy, VOID); } +bool { RET_TY(Type::BoolTy, BOOL); } +sbyte { RET_TY_OBSOLETE(Type::SByteTy, isSigned, SBYTE); } +ubyte { RET_TY_OBSOLETE(Type::UByteTy, isUnsigned, UBYTE); } +short { RET_TY_OBSOLETE(Type::ShortTy, isSigned, SHORT); } +ushort { RET_TY_OBSOLETE(Type::UShortTy,isUnsigned, USHORT); } +int { RET_TY_OBSOLETE(Type::IntTy, isSigned, INT); } +uint { RET_TY_OBSOLETE(Type::UIntTy, isUnsigned, UINT); } +long { RET_TY_OBSOLETE(Type::LongTy, isSigned, LONG); } +ulong { RET_TY_OBSOLETE(Type::ULongTy, isUnsigned, ULONG); } +float { RET_TY(Type::FloatTy, FLOAT); } +double { RET_TY(Type::DoubleTy, DOUBLE); } +label { RET_TY(Type::LabelTy, LABEL); } type { return TYPE; } opaque { return OPAQUE; } @@ -277,10 +288,24 @@ setge { RET_TOK(BinaryOpVal, SetGE, SETGE); } phi { RET_TOK(OtherOpVal, PHI, PHI_TOK); } call { RET_TOK(OtherOpVal, Call, CALL); } -cast { RET_TOK(OtherOpVal, Cast, CAST); } +cast { RET_TOK_OBSOLETE(CastOpVal, Trunc, TRUNC); } +trunc { RET_TOK(CastOpVal, Trunc, TRUNC); } +zext { RET_TOK(CastOpVal, ZExt, ZEXT); } +sext { RET_TOK(CastOpVal, SExt, SEXT); } +fptrunc { RET_TOK(CastOpVal, FPTrunc, FPTRUNC); } +fpext { RET_TOK(CastOpVal, FPExt, FPEXT); } +uitofp { RET_TOK(CastOpVal, UIToFP, UITOFP); } +sitofp { RET_TOK(CastOpVal, SIToFP, SITOFP); } +fptoui { RET_TOK(CastOpVal, FPToUI, FPTOUI); } +fptosi { RET_TOK(CastOpVal, FPToSI, FPTOSI); } +inttoptr { RET_TOK(CastOpVal, IntToPtr, INTTOPTR); } +ptrtoint { RET_TOK(CastOpVal, PtrToInt, PTRTOINT); } +bitcast { RET_TOK(CastOpVal, BitCast, BITCAST); } select { RET_TOK(OtherOpVal, Select, SELECT); } shl { RET_TOK(OtherOpVal, Shl, SHL); } -shr { RET_TOK(OtherOpVal, Shr, SHR); } +shr { RET_TOK_OBSOLETE(OtherOpVal, LShr, LSHR); } +lshr { RET_TOK(OtherOpVal, LShr, LSHR); } +ashr { RET_TOK(OtherOpVal, AShr, ASHR); } vanext { return VANEXT_old; } vaarg { return VAARG_old; } va_arg { RET_TOK(OtherOpVal, VAArg , VAARG); } diff --git a/lib/AsmParser/ParserInternals.h b/lib/AsmParser/ParserInternals.h index c26c5f4..87c6af7 100644 --- a/lib/AsmParser/ParserInternals.h +++ b/lib/AsmParser/ParserInternals.h @@ -212,10 +212,11 @@ struct OpcodeInfo { Enum opcode; bool obsolete; }; -typedef OpcodeInfo<llvm::Instruction::BinaryOps> BinaryOpInfo; -typedef OpcodeInfo<llvm::Instruction::TermOps> TermOpInfo; -typedef OpcodeInfo<llvm::Instruction::MemoryOps> MemOpInfo; -typedef OpcodeInfo<llvm::Instruction::OtherOps> OtherOpInfo; +typedef OpcodeInfo<llvm::Instruction::BinaryOps> BinaryOpInfo; +typedef OpcodeInfo<llvm::Instruction::TermOps> TermOpInfo; +typedef OpcodeInfo<llvm::Instruction::MemoryOps> MemOpInfo; +typedef OpcodeInfo<llvm::Instruction::CastOps> CastOpInfo; +typedef OpcodeInfo<llvm::Instruction::OtherOps> OtherOpInfo; /// This enumeration is used to indicate if a type is signed, signless or /// unsigned. It is used for backwards compatibility with assembly code that diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs index c2742e7..c5774e1 100644 --- a/lib/AsmParser/llvmAsmParser.cpp.cvs +++ b/lib/AsmParser/llvmAsmParser.cpp.cvs @@ -163,18 +163,29 @@ LOAD = 354, STORE = 355, GETELEMENTPTR = 356, - PHI_TOK = 357, - CAST = 358, - SELECT = 359, - SHL = 360, - LSHR = 361, - ASHR = 362, - VAARG = 363, - EXTRACTELEMENT = 364, - INSERTELEMENT = 365, - SHUFFLEVECTOR = 366, - VAARG_old = 367, - VANEXT_old = 368 + TRUNC = 357, + ZEXT = 358, + SEXT = 359, + FPTRUNC = 360, + FPEXT = 361, + BITCAST = 362, + UITOFP = 363, + SITOFP = 364, + FPTOUI = 365, + FPTOSI = 366, + INTTOPTR = 367, + PTRTOINT = 368, + PHI_TOK = 369, + SELECT = 370, + SHL = 371, + LSHR = 372, + ASHR = 373, + VAARG = 374, + EXTRACTELEMENT = 375, + INSERTELEMENT = 376, + SHUFFLEVECTOR = 377, + VAARG_old = 378, + VANEXT_old = 379 }; #endif /* Tokens. */ @@ -277,24 +288,35 @@ #define LOAD 354 #define STORE 355 #define GETELEMENTPTR 356 -#define PHI_TOK 357 -#define CAST 358 -#define SELECT 359 -#define SHL 360 -#define LSHR 361 -#define ASHR 362 -#define VAARG 363 -#define EXTRACTELEMENT 364 -#define INSERTELEMENT 365 -#define SHUFFLEVECTOR 366 -#define VAARG_old 367 -#define VANEXT_old 368 +#define TRUNC 357 +#define ZEXT 358 +#define SEXT 359 +#define FPTRUNC 360 +#define FPEXT 361 +#define BITCAST 362 +#define UITOFP 363 +#define SITOFP 364 +#define FPTOUI 365 +#define FPTOSI 366 +#define INTTOPTR 367 +#define PTRTOINT 368 +#define PHI_TOK 369 +#define SELECT 370 +#define SHL 371 +#define LSHR 372 +#define ASHR 373 +#define VAARG 374 +#define EXTRACTELEMENT 375 +#define INSERTELEMENT 376 +#define SHUFFLEVECTOR 377 +#define VAARG_old 378 +#define VANEXT_old 379 /* Copy the first part of user declarations. */ -#line 14 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 14 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" #include "ParserInternals.h" #include "llvm/CallingConv.h" @@ -367,8 +389,8 @@ static struct PerModuleInfo { Module *CurrentModule; std::map<const Type *, ValueList> Values; // Module level numbered definitions std::map<const Type *,ValueList> LateResolveValues; - std::vector<PATypeHolder> Types; - std::map<ValID, PATypeHolder> LateResolveTypes; + std::vector<TypeInfo> Types; + std::map<ValID, TypeInfo> LateResolveTypes; /// PlaceHolderInfo - When temporary placeholder objects are created, remember /// how they were referenced and on which line of the input they came from so @@ -501,7 +523,7 @@ static const Type *getTypeVal(const ValID &D, bool DoNotImprovise = false) { case ValID::NumberVal: // Is it a numbered definition? // Module constants occupy the lowest numbered slots... if ((unsigned)D.Num < CurModule.Types.size()) - return CurModule.Types[(unsigned)D.Num]; + return CurModule.Types[(unsigned)D.Num].type->get(); break; case ValID::NameVal: // Is it a named definition? if (const Type *N = CurModule.CurrentModule->getTypeByName(D.Name)) { @@ -531,13 +553,15 @@ static const Type *getTypeVal(const ValID &D, bool DoNotImprovise = false) { } } - std::map<ValID, PATypeHolder>::iterator I =CurModule.LateResolveTypes.find(D); + std::map<ValID, TypeInfo>::iterator I =CurModule.LateResolveTypes.find(D); if (I != CurModule.LateResolveTypes.end()) - return I->second; + return I->second.type->get(); - Type *Typ = OpaqueType::get(); - CurModule.LateResolveTypes.insert(std::make_pair(D, Typ)); - return Typ; + TypeInfo TI; + TI.type = new PATypeHolder(OpaqueType::get()); + TI.signedness = isSignless; + CurModule.LateResolveTypes.insert(std::make_pair(D, TI)); + return TI.type->get(); } static Value *lookupInSymbolTable(const Type *Ty, const std::string &Name) { @@ -841,10 +865,10 @@ static void ResolveTypeTo(char *Name, const Type *ToTy) { if (Name) D = ValID::create(Name); else D = ValID::create((int)CurModule.Types.size()); - std::map<ValID, PATypeHolder>::iterator I = + std::map<ValID, TypeInfo>::iterator I = CurModule.LateResolveTypes.find(D); if (I != CurModule.LateResolveTypes.end()) { - ((DerivedType*)I->second.get())->refineAbstractTypeTo(ToTy); + ((DerivedType*)I->second.type->get())->refineAbstractTypeTo(ToTy); CurModule.LateResolveTypes.erase(I); } } @@ -1106,15 +1130,14 @@ static PATypeHolder HandleUpRefs(const Type *ty) { /// instruction. This function handles converting div -> [usf]div appropriately. /// @brief Convert obsolete BinaryOps opcodes to new values static void -sanitizeOpCode(OpcodeInfo<Instruction::BinaryOps> &OI, const PATypeHolder& PATy) +sanitizeOpcode(OpcodeInfo<Instruction::BinaryOps> &OI, const Type *Ty) { // If its not obsolete, don't do anything if (!OI.obsolete) return; // If its a packed type we want to use the element type - const Type* Ty = PATy; - if (const PackedType* PTy = dyn_cast<PackedType>(Ty)) + if (const PackedType *PTy = dyn_cast<PackedType>(Ty)) Ty = PTy->getElementType(); // Depending on the opcode .. @@ -1140,17 +1163,16 @@ sanitizeOpCode(OpcodeInfo<Instruction::BinaryOps> &OI, const PATypeHolder& PATy) OI.obsolete = false; } -/// This function is similar to the previous overload of sanitizeOpCode but +/// This function is similar to the previous overload of sanitizeOpcode but /// operates on Instruction::OtherOps instead of Instruction::BinaryOps. /// @brief Convert obsolete OtherOps opcodes to new values static void -sanitizeOpCode(OpcodeInfo<Instruction::OtherOps> &OI, const PATypeHolder& PATy) +sanitizeOpcode(OpcodeInfo<Instruction::OtherOps> &OI, const Type *Ty) { // If its not obsolete, don't do anything if (!OI.obsolete) return; - const Type* Ty = PATy; // type conversion switch (OI.opcode) { default: GenerateError("Invalid obsolete opcode (check Lexer.l)"); @@ -1340,23 +1362,22 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 1040 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1040 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; - std::pair<llvm::PATypeHolder*, char*> *ArgVal; + std::pair<TypeInfo, char*> *ArgVal; llvm::BasicBlock *BasicBlockVal; llvm::TerminatorInst *TermInstVal; llvm::Instruction *InstVal; llvm::Constant *ConstVal; - const llvm::Type *PrimType; - llvm::PATypeHolder *TypeVal; + TypeInfo TypeVal; llvm::Value *ValueVal; - std::vector<std::pair<llvm::PATypeHolder*,char*> > *ArgList; + std::vector<std::pair<TypeInfo,char*> >*ArgList; std::vector<llvm::Value*> *ValueList; - std::list<llvm::PATypeHolder> *TypeList; + std::list<TypeInfo> *TypeList; // Represent the RHS of PHI node std::list<std::pair<llvm::Value*, llvm::BasicBlock*> > *PHIList; @@ -1377,11 +1398,12 @@ typedef union YYSTYPE { BinaryOpInfo BinaryOpVal; TermOpInfo TermOpVal; MemOpInfo MemOpVal; + CastOpInfo CastOpVal; OtherOpInfo OtherOpVal; llvm::Module::Endianness Endianness; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 1385 "llvmAsmParser.tab.c" +#line 1407 "llvmAsmParser.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -1393,7 +1415,7 @@ typedef union YYSTYPE { /* Line 219 of yacc.c. */ -#line 1397 "llvmAsmParser.tab.c" +#line 1419 "llvmAsmParser.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -1544,20 +1566,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 4 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1310 +#define YYLAST 1410 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 128 +#define YYNTOKENS 139 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 75 +#define YYNNTS 76 /* YYNRULES -- Number of rules. */ -#define YYNRULES 257 +#define YYNRULES 269 /* YYNRULES -- Number of states. */ -#define YYNSTATES 522 +#define YYNSTATES 534 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 368 +#define YYMAXUTOK 379 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1569,15 +1591,15 @@ static const unsigned char yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 117, 118, 126, 2, 115, 2, 2, 2, 2, 2, + 128, 129, 137, 2, 126, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 122, 114, 123, 2, 2, 2, 2, 2, 2, 2, + 133, 125, 134, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 119, 116, 121, 2, 2, 2, 2, 2, 127, + 2, 130, 127, 132, 2, 2, 2, 2, 2, 138, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 120, 2, 2, 124, 2, 125, 2, 2, 2, 2, + 131, 2, 2, 135, 2, 136, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1601,7 +1623,8 @@ static const unsigned char yytranslate[] = 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113 + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124 }; #if YYDEBUG @@ -1613,147 +1636,152 @@ static const unsigned short int yyprhs[] = 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, - 80, 81, 83, 85, 87, 89, 91, 93, 95, 96, - 97, 99, 101, 103, 105, 107, 109, 112, 113, 116, - 117, 121, 124, 125, 127, 128, 132, 134, 137, 139, - 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, + 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, + 99, 101, 104, 105, 107, 109, 111, 113, 115, 117, + 119, 120, 121, 123, 125, 127, 129, 131, 133, 136, + 137, 140, 141, 145, 148, 149, 151, 152, 156, 158, 161, 163, 165, 167, 169, 171, 173, 175, 177, 179, - 182, 187, 193, 199, 203, 206, 209, 211, 215, 217, - 221, 223, 224, 229, 233, 237, 242, 247, 251, 254, - 257, 260, 263, 266, 269, 272, 275, 278, 281, 288, - 294, 303, 310, 317, 324, 331, 338, 347, 356, 360, - 362, 364, 366, 368, 371, 374, 379, 382, 384, 389, - 392, 397, 398, 406, 407, 415, 416, 424, 425, 433, - 437, 442, 443, 445, 447, 449, 453, 457, 461, 465, - 469, 473, 475, 476, 478, 480, 482, 483, 486, 490, - 492, 494, 498, 500, 501, 510, 512, 514, 518, 520, - 522, 525, 526, 528, 530, 531, 536, 537, 539, 541, - 543, 545, 547, 549, 551, 553, 555, 559, 561, 567, - 569, 571, 573, 575, 578, 581, 584, 588, 591, 592, - 594, 597, 600, 604, 614, 624, 633, 647, 649, 651, - 658, 664, 667, 674, 682, 684, 688, 690, 691, 694, - 696, 702, 708, 714, 717, 722, 727, 734, 739, 744, - 749, 754, 761, 768, 771, 779, 781, 784, 785, 787, - 788, 792, 799, 803, 810, 813, 818, 825 + 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, + 201, 203, 206, 211, 217, 223, 227, 230, 233, 235, + 239, 241, 245, 247, 248, 253, 257, 261, 266, 271, + 275, 278, 281, 284, 287, 290, 293, 296, 299, 302, + 305, 312, 318, 327, 334, 341, 348, 355, 362, 371, + 380, 384, 386, 388, 390, 392, 395, 398, 403, 406, + 408, 413, 416, 421, 422, 430, 431, 439, 440, 448, + 449, 457, 461, 466, 467, 469, 471, 473, 477, 481, + 485, 489, 493, 497, 499, 500, 502, 504, 506, 507, + 510, 514, 516, 518, 522, 524, 525, 534, 536, 538, + 542, 544, 546, 549, 550, 552, 554, 555, 560, 561, + 563, 565, 567, 569, 571, 573, 575, 577, 579, 583, + 585, 591, 593, 595, 597, 599, 602, 605, 608, 612, + 615, 616, 618, 621, 624, 628, 638, 648, 657, 671, + 673, 675, 682, 688, 691, 698, 706, 708, 712, 714, + 715, 718, 720, 726, 732, 738, 741, 746, 751, 758, + 763, 768, 773, 778, 785, 792, 795, 803, 805, 808, + 809, 811, 812, 816, 823, 827, 834, 837, 842, 849 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const short int yyrhs[] = { - 159, 0, -1, 5, -1, 6, -1, 3, -1, 4, + 171, 0, -1, 5, -1, 6, -1, 3, -1, 4, -1, 78, -1, 79, -1, 80, -1, 81, -1, 82, -1, 83, -1, 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, - -1, 93, -1, 94, -1, 95, -1, 105, -1, 106, - -1, 107, -1, 16, -1, 14, -1, 12, -1, 10, - -1, 17, -1, 15, -1, 13, -1, 11, -1, 135, - -1, 136, -1, 18, -1, 19, -1, 171, 114, -1, - -1, 41, -1, 42, -1, 43, -1, 44, -1, 45, - -1, 46, -1, 47, -1, -1, -1, 65, -1, 66, - -1, 67, -1, 68, -1, 69, -1, 70, -1, 64, - 4, -1, -1, 57, 4, -1, -1, 115, 57, 4, - -1, 34, 24, -1, -1, 144, -1, -1, 115, 147, - 146, -1, 144, -1, 57, 4, -1, 150, -1, 8, - -1, 152, -1, 8, -1, 152, -1, 9, -1, 10, - -1, 11, -1, 12, -1, 13, -1, 14, -1, 15, - -1, 16, -1, 17, -1, 18, -1, 19, -1, 20, - -1, 21, -1, 48, -1, 151, -1, 186, -1, 116, - 4, -1, 149, 117, 154, 118, -1, 119, 4, 120, - 152, 121, -1, 122, 4, 120, 152, 123, -1, 124, - 153, 125, -1, 124, 125, -1, 152, 126, -1, 152, - -1, 153, 115, 152, -1, 153, -1, 153, 115, 37, - -1, 37, -1, -1, 150, 119, 157, 121, -1, 150, - 119, 121, -1, 150, 127, 24, -1, 150, 122, 157, - 123, -1, 150, 124, 157, 125, -1, 150, 124, 125, - -1, 150, 38, -1, 150, 39, -1, 150, 186, -1, - 150, 156, -1, 150, 26, -1, 135, 130, -1, 136, - 4, -1, 9, 27, -1, 9, 28, -1, 138, 7, - -1, 103, 117, 155, 36, 150, 118, -1, 101, 117, - 155, 200, 118, -1, 104, 117, 155, 115, 155, 115, - 155, 118, -1, 131, 117, 155, 115, 155, 118, -1, - 132, 117, 155, 115, 155, 118, -1, 133, 117, 155, - 115, 155, 118, -1, 134, 117, 155, 115, 155, 118, - -1, 109, 117, 155, 115, 155, 118, -1, 110, 117, - 155, 115, 155, 115, 155, 118, -1, 111, 117, 155, - 115, 155, 115, 155, 118, -1, 157, 115, 155, -1, - 155, -1, 32, -1, 33, -1, 160, -1, 160, 180, - -1, 160, 182, -1, 160, 62, 61, 166, -1, 160, - 25, -1, 161, -1, 161, 139, 20, 148, -1, 161, - 182, -1, 161, 62, 61, 166, -1, -1, 161, 139, - 140, 158, 155, 162, 146, -1, -1, 161, 139, 50, - 158, 150, 163, 146, -1, -1, 161, 139, 45, 158, - 150, 164, 146, -1, -1, 161, 139, 47, 158, 150, - 165, 146, -1, 161, 51, 168, -1, 161, 58, 114, - 169, -1, -1, 24, -1, 56, -1, 55, -1, 53, - 114, 167, -1, 54, 114, 4, -1, 52, 114, 24, - -1, 71, 114, 24, -1, 119, 170, 121, -1, 170, - 115, 24, -1, 24, -1, -1, 22, -1, 24, -1, - 171, -1, -1, 150, 172, -1, 174, 115, 173, -1, - 173, -1, 174, -1, 174, 115, 37, -1, 37, -1, - -1, 141, 148, 171, 117, 175, 118, 145, 142, -1, - 29, -1, 124, -1, 140, 176, 177, -1, 30, -1, - 125, -1, 189, 179, -1, -1, 45, -1, 47, -1, - -1, 31, 183, 181, 176, -1, -1, 63, -1, 3, - -1, 4, -1, 7, -1, 27, -1, 28, -1, 38, - -1, 39, -1, 26, -1, 122, 157, 123, -1, 156, - -1, 61, 184, 24, 115, 24, -1, 129, -1, 171, - -1, 186, -1, 185, -1, 150, 187, -1, 189, 190, - -1, 178, 190, -1, 191, 139, 192, -1, 191, 194, - -1, -1, 23, -1, 72, 188, -1, 72, 8, -1, - 73, 21, 187, -1, 73, 9, 187, 115, 21, 187, - 115, 21, 187, -1, 74, 137, 187, 115, 21, 187, - 119, 193, 121, -1, 74, 137, 187, 115, 21, 187, - 119, 121, -1, 75, 141, 148, 187, 117, 197, 118, - 36, 21, 187, 76, 21, 187, -1, 76, -1, 77, - -1, 193, 137, 185, 115, 21, 187, -1, 137, 185, - 115, 21, 187, -1, 139, 199, -1, 150, 119, 187, - 115, 187, 121, -1, 195, 115, 119, 187, 115, 187, - 121, -1, 188, -1, 196, 115, 188, -1, 196, -1, - -1, 60, 59, -1, 59, -1, 131, 150, 187, 115, - 187, -1, 132, 150, 187, 115, 187, -1, 133, 150, - 187, 115, 187, -1, 49, 188, -1, 134, 188, 115, - 188, -1, 103, 188, 36, 150, -1, 104, 188, 115, - 188, 115, 188, -1, 108, 188, 115, 150, -1, 112, - 188, 115, 150, -1, 113, 188, 115, 150, -1, 109, - 188, 115, 188, -1, 110, 188, 115, 188, 115, 188, - -1, 111, 188, 115, 188, 115, 188, -1, 102, 195, - -1, 198, 141, 148, 187, 117, 197, 118, -1, 202, - -1, 115, 196, -1, -1, 35, -1, -1, 96, 150, - 143, -1, 96, 150, 115, 15, 187, 143, -1, 97, - 150, 143, -1, 97, 150, 115, 15, 187, 143, -1, - 98, 188, -1, 201, 99, 150, 187, -1, 201, 100, - 188, 115, 150, 187, -1, 101, 150, 187, 200, -1 + -1, 93, -1, 94, -1, 95, -1, 102, -1, 103, + -1, 104, -1, 105, -1, 106, -1, 107, -1, 108, + -1, 109, -1, 110, -1, 111, -1, 112, -1, 113, + -1, 116, -1, 117, -1, 118, -1, 16, -1, 14, + -1, 12, -1, 10, -1, 17, -1, 15, -1, 13, + -1, 11, -1, 147, -1, 148, -1, 18, -1, 19, + -1, 183, 125, -1, -1, 41, -1, 42, -1, 43, + -1, 44, -1, 45, -1, 46, -1, 47, -1, -1, + -1, 65, -1, 66, -1, 67, -1, 68, -1, 69, + -1, 70, -1, 64, 4, -1, -1, 57, 4, -1, + -1, 126, 57, 4, -1, 34, 24, -1, -1, 156, + -1, -1, 126, 159, 158, -1, 156, -1, 57, 4, + -1, 162, -1, 8, -1, 164, -1, 8, -1, 164, + -1, 9, -1, 10, -1, 11, -1, 12, -1, 13, + -1, 14, -1, 15, -1, 16, -1, 17, -1, 18, + -1, 19, -1, 20, -1, 21, -1, 48, -1, 163, + -1, 198, -1, 127, 4, -1, 161, 128, 166, 129, + -1, 130, 4, 131, 164, 132, -1, 133, 4, 131, + 164, 134, -1, 135, 165, 136, -1, 135, 136, -1, + 164, 137, -1, 164, -1, 165, 126, 164, -1, 165, + -1, 165, 126, 37, -1, 37, -1, -1, 162, 130, + 169, 132, -1, 162, 130, 132, -1, 162, 138, 24, + -1, 162, 133, 169, 134, -1, 162, 135, 169, 136, + -1, 162, 135, 136, -1, 162, 38, -1, 162, 39, + -1, 162, 198, -1, 162, 168, -1, 162, 26, -1, + 147, 141, -1, 148, 4, -1, 9, 27, -1, 9, + 28, -1, 150, 7, -1, 145, 128, 167, 36, 162, + 129, -1, 101, 128, 167, 212, 129, -1, 115, 128, + 167, 126, 167, 126, 167, 129, -1, 142, 128, 167, + 126, 167, 129, -1, 143, 128, 167, 126, 167, 129, + -1, 144, 128, 167, 126, 167, 129, -1, 146, 128, + 167, 126, 167, 129, -1, 120, 128, 167, 126, 167, + 129, -1, 121, 128, 167, 126, 167, 126, 167, 129, + -1, 122, 128, 167, 126, 167, 126, 167, 129, -1, + 169, 126, 167, -1, 167, -1, 32, -1, 33, -1, + 172, -1, 172, 192, -1, 172, 194, -1, 172, 62, + 61, 178, -1, 172, 25, -1, 173, -1, 173, 151, + 20, 160, -1, 173, 194, -1, 173, 62, 61, 178, + -1, -1, 173, 151, 152, 170, 167, 174, 158, -1, + -1, 173, 151, 50, 170, 162, 175, 158, -1, -1, + 173, 151, 45, 170, 162, 176, 158, -1, -1, 173, + 151, 47, 170, 162, 177, 158, -1, 173, 51, 180, + -1, 173, 58, 125, 181, -1, -1, 24, -1, 56, + -1, 55, -1, 53, 125, 179, -1, 54, 125, 4, + -1, 52, 125, 24, -1, 71, 125, 24, -1, 130, + 182, 132, -1, 182, 126, 24, -1, 24, -1, -1, + 22, -1, 24, -1, 183, -1, -1, 162, 184, -1, + 186, 126, 185, -1, 185, -1, 186, -1, 186, 126, + 37, -1, 37, -1, -1, 153, 160, 183, 128, 187, + 129, 157, 154, -1, 29, -1, 135, -1, 152, 188, + 189, -1, 30, -1, 136, -1, 201, 191, -1, -1, + 45, -1, 47, -1, -1, 31, 195, 193, 188, -1, + -1, 63, -1, 3, -1, 4, -1, 7, -1, 27, + -1, 28, -1, 38, -1, 39, -1, 26, -1, 133, + 169, 134, -1, 168, -1, 61, 196, 24, 126, 24, + -1, 140, -1, 183, -1, 198, -1, 197, -1, 162, + 199, -1, 201, 202, -1, 190, 202, -1, 203, 151, + 204, -1, 203, 206, -1, -1, 23, -1, 72, 200, + -1, 72, 8, -1, 73, 21, 199, -1, 73, 9, + 199, 126, 21, 199, 126, 21, 199, -1, 74, 149, + 199, 126, 21, 199, 130, 205, 132, -1, 74, 149, + 199, 126, 21, 199, 130, 132, -1, 75, 153, 160, + 199, 128, 209, 129, 36, 21, 199, 76, 21, 199, + -1, 76, -1, 77, -1, 205, 149, 197, 126, 21, + 199, -1, 149, 197, 126, 21, 199, -1, 151, 211, + -1, 162, 130, 199, 126, 199, 132, -1, 207, 126, + 130, 199, 126, 199, 132, -1, 200, -1, 208, 126, + 200, -1, 208, -1, -1, 60, 59, -1, 59, -1, + 142, 162, 199, 126, 199, -1, 143, 162, 199, 126, + 199, -1, 144, 162, 199, 126, 199, -1, 49, 200, + -1, 146, 200, 126, 200, -1, 145, 200, 36, 162, + -1, 115, 200, 126, 200, 126, 200, -1, 119, 200, + 126, 162, -1, 123, 200, 126, 162, -1, 124, 200, + 126, 162, -1, 120, 200, 126, 200, -1, 121, 200, + 126, 200, 126, 200, -1, 122, 200, 126, 200, 126, + 200, -1, 114, 207, -1, 210, 153, 160, 199, 128, + 209, 129, -1, 214, -1, 126, 208, -1, -1, 35, + -1, -1, 96, 162, 155, -1, 96, 162, 126, 15, + 199, 155, -1, 97, 162, 155, -1, 97, 162, 126, + 15, 199, 155, -1, 98, 200, -1, 213, 99, 162, + 199, -1, 213, 100, 200, 126, 162, 199, -1, 101, + 162, 199, 212, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 1163, 1163, 1164, 1172, 1173, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1184, 1184, 1184, 1185, 1185, - 1185, 1185, 1185, 1185, 1187, 1187, 1187, 1191, 1191, 1191, - 1191, 1192, 1192, 1192, 1192, 1193, 1193, 1194, 1194, 1197, - 1201, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1215, - 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1231, 1232, 1238, - 1239, 1247, 1255, 1256, 1261, 1262, 1263, 1268, 1282, 1282, - 1283, 1283, 1285, 1295, 1295, 1295, 1295, 1295, 1295, 1295, - 1296, 1296, 1296, 1296, 1296, 1296, 1297, 1301, 1305, 1313, - 1321, 1334, 1339, 1351, 1361, 1365, 1376, 1381, 1387, 1388, - 1392, 1396, 1407, 1433, 1447, 1477, 1503, 1524, 1537, 1547, - 1552, 1613, 1620, 1629, 1635, 1641, 1645, 1649, 1657, 1668, - 1700, 1708, 1735, 1746, 1752, 1763, 1769, 1775, 1784, 1788, - 1796, 1796, 1806, 1814, 1819, 1823, 1827, 1831, 1846, 1868, - 1871, 1874, 1874, 1882, 1882, 1890, 1890, 1898, 1898, 1907, - 1910, 1913, 1917, 1930, 1931, 1933, 1937, 1946, 1950, 1955, - 1957, 1962, 1967, 1976, 1976, 1977, 1977, 1979, 1986, 1992, - 1999, 2003, 2009, 2014, 2019, 2114, 2114, 2116, 2124, 2124, - 2126, 2131, 2132, 2133, 2135, 2135, 2145, 2149, 2154, 2158, - 2162, 2166, 2170, 2174, 2178, 2182, 2186, 2211, 2215, 2229, - 2233, 2239, 2239, 2245, 2250, 2254, 2263, 2274, 2279, 2291, - 2304, 2308, 2312, 2317, 2326, 2345, 2354, 2410, 2414, 2421, - 2432, 2445, 2454, 2463, 2473, 2477, 2484, 2484, 2486, 2490, - 2495, 2517, 2532, 2546, 2559, 2570, 2578, 2586, 2592, 2612, - 2635, 2641, 2647, 2653, 2668, 2727, 2734, 2737, 2742, 2746, - 2753, 2758, 2764, 2769, 2775, 2783, 2795, 2810 + 0, 1168, 1168, 1169, 1177, 1178, 1188, 1188, 1188, 1188, + 1188, 1188, 1188, 1188, 1188, 1189, 1189, 1189, 1190, 1190, + 1190, 1190, 1190, 1190, 1191, 1191, 1191, 1191, 1191, 1191, + 1192, 1192, 1192, 1192, 1192, 1192, 1193, 1193, 1193, 1197, + 1197, 1197, 1197, 1198, 1198, 1198, 1198, 1199, 1199, 1200, + 1200, 1203, 1207, 1212, 1213, 1214, 1215, 1216, 1217, 1218, + 1219, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1237, + 1238, 1244, 1245, 1253, 1261, 1262, 1267, 1268, 1269, 1274, + 1288, 1288, 1292, 1292, 1297, 1308, 1308, 1308, 1308, 1308, + 1308, 1308, 1309, 1309, 1309, 1309, 1309, 1309, 1310, 1315, + 1319, 1328, 1337, 1352, 1359, 1373, 1384, 1389, 1401, 1406, + 1412, 1413, 1419, 1425, 1436, 1462, 1476, 1506, 1532, 1553, + 1566, 1576, 1581, 1642, 1649, 1658, 1664, 1670, 1674, 1678, + 1686, 1712, 1744, 1752, 1779, 1790, 1796, 1807, 1813, 1819, + 1828, 1832, 1840, 1840, 1850, 1858, 1863, 1867, 1871, 1875, + 1890, 1912, 1915, 1918, 1918, 1926, 1926, 1935, 1935, 1944, + 1944, 1954, 1957, 1960, 1964, 1977, 1978, 1980, 1984, 1993, + 1997, 2002, 2004, 2009, 2014, 2023, 2023, 2024, 2024, 2026, + 2033, 2039, 2046, 2050, 2058, 2066, 2071, 2165, 2165, 2167, + 2175, 2175, 2177, 2182, 2183, 2184, 2186, 2186, 2196, 2200, + 2205, 2209, 2213, 2217, 2221, 2225, 2229, 2233, 2237, 2257, + 2261, 2275, 2279, 2285, 2285, 2291, 2296, 2300, 2309, 2320, + 2329, 2341, 2354, 2358, 2362, 2367, 2376, 2395, 2404, 2460, + 2464, 2471, 2482, 2495, 2504, 2513, 2523, 2527, 2534, 2534, + 2536, 2540, 2545, 2567, 2582, 2596, 2609, 2620, 2646, 2654, + 2660, 2680, 2703, 2709, 2715, 2721, 2736, 2796, 2803, 2806, + 2811, 2815, 2822, 2827, 2833, 2838, 2844, 2852, 2864, 2879 }; #endif @@ -1777,22 +1805,24 @@ static const char *const yytname[] = "RET", "BR", "SWITCH", "INVOKE", "UNWIND", "UNREACHABLE", "ADD", "SUB", "MUL", "UDIV", "SDIV", "FDIV", "UREM", "SREM", "FREM", "AND", "OR", "XOR", "SETLE", "SETGE", "SETLT", "SETGT", "SETEQ", "SETNE", "MALLOC", - "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR", "PHI_TOK", "CAST", - "SELECT", "SHL", "LSHR", "ASHR", "VAARG", "EXTRACTELEMENT", - "INSERTELEMENT", "SHUFFLEVECTOR", "VAARG_old", "VANEXT_old", "'='", - "','", "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", - "'}'", "'*'", "'c'", "$accept", "INTVAL", "EINT64VAL", "ArithmeticOps", - "LogicalOps", "SetCondOps", "ShiftOps", "SIntType", "UIntType", - "IntType", "FPType", "OptAssign", "OptLinkage", "OptCallingConv", - "OptAlign", "OptCAlign", "SectionString", "OptSection", - "GlobalVarAttributes", "GlobalVarAttribute", "TypesV", "UpRTypesV", - "Types", "PrimType", "UpRTypes", "TypeListI", "ArgTypeListI", "ConstVal", - "ConstExpr", "ConstVector", "GlobalType", "Module", "FunctionList", - "ConstPool", "@1", "@2", "@3", "@4", "AsmBlock", "BigOrLittle", - "TargetDefinition", "LibrariesDefinition", "LibList", "Name", "OptName", - "ArgVal", "ArgListH", "ArgList", "FunctionHeaderH", "BEGIN", - "FunctionHeader", "END", "Function", "FnDeclareLinkage", "FunctionProto", - "@5", "OptSideEffect", "ConstValueRef", "SymbolicValueRef", "ValueRef", + "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR", "TRUNC", "ZEXT", + "SEXT", "FPTRUNC", "FPEXT", "BITCAST", "UITOFP", "SITOFP", "FPTOUI", + "FPTOSI", "INTTOPTR", "PTRTOINT", "PHI_TOK", "SELECT", "SHL", "LSHR", + "ASHR", "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR", + "VAARG_old", "VANEXT_old", "'='", "','", "'\\\\'", "'('", "')'", "'['", + "'x'", "']'", "'<'", "'>'", "'{'", "'}'", "'*'", "'c'", "$accept", + "INTVAL", "EINT64VAL", "ArithmeticOps", "LogicalOps", "SetCondOps", + "CastOps", "ShiftOps", "SIntType", "UIntType", "IntType", "FPType", + "OptAssign", "OptLinkage", "OptCallingConv", "OptAlign", "OptCAlign", + "SectionString", "OptSection", "GlobalVarAttributes", + "GlobalVarAttribute", "TypesV", "UpRTypesV", "Types", "PrimType", + "UpRTypes", "TypeListI", "ArgTypeListI", "ConstVal", "ConstExpr", + "ConstVector", "GlobalType", "Module", "FunctionList", "ConstPool", "@1", + "@2", "@3", "@4", "AsmBlock", "BigOrLittle", "TargetDefinition", + "LibrariesDefinition", "LibList", "Name", "OptName", "ArgVal", + "ArgListH", "ArgList", "FunctionHeaderH", "BEGIN", "FunctionHeader", + "END", "Function", "FnDeclareLinkage", "FunctionProto", "@5", + "OptSideEffect", "ConstValueRef", "SymbolicValueRef", "ValueRef", "ResolvedVal", "BasicBlockList", "BasicBlock", "InstructionList", "BBTerminatorInst", "JumpTable", "Inst", "PHIList", "ValueRefList", "ValueRefListE", "OptTailCall", "InstVal", "IndexList", "OptVolatile", @@ -1816,40 +1846,42 @@ static const unsigned short int yytoknum[] = 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 61, 44, 92, 40, 41, 91, - 120, 93, 60, 62, 123, 125, 42, 99 + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 61, 44, 92, 40, 41, + 91, 120, 93, 60, 62, 123, 125, 42, 99 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const unsigned char yyr1[] = { - 0, 128, 129, 129, 130, 130, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 132, 132, 132, 133, 133, - 133, 133, 133, 133, 134, 134, 134, 135, 135, 135, - 135, 136, 136, 136, 136, 137, 137, 138, 138, 139, - 139, 140, 140, 140, 140, 140, 140, 140, 140, 141, - 141, 141, 141, 141, 141, 141, 141, 142, 142, 143, - 143, 144, 145, 145, 146, 146, 147, 147, 148, 148, - 149, 149, 150, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 153, 153, 154, 154, - 154, 154, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 157, 157, - 158, 158, 159, 160, 160, 160, 160, 160, 161, 161, - 161, 162, 161, 163, 161, 164, 161, 165, 161, 161, - 161, 161, 166, 167, 167, 168, 168, 168, 168, 169, - 170, 170, 170, 171, 171, 172, 172, 173, 174, 174, - 175, 175, 175, 175, 176, 177, 177, 178, 179, 179, - 180, 181, 181, 181, 183, 182, 184, 184, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 186, - 186, 187, 187, 188, 189, 189, 190, 191, 191, 191, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 193, - 193, 194, 195, 195, 196, 196, 197, 197, 198, 198, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 200, 200, 201, 201, - 202, 202, 202, 202, 202, 202, 202, 202 + 0, 139, 140, 140, 141, 141, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 143, 143, 143, 144, 144, + 144, 144, 144, 144, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 146, 146, 146, 147, + 147, 147, 147, 148, 148, 148, 148, 149, 149, 150, + 150, 151, 151, 152, 152, 152, 152, 152, 152, 152, + 152, 153, 153, 153, 153, 153, 153, 153, 153, 154, + 154, 155, 155, 156, 157, 157, 158, 158, 159, 159, + 160, 160, 161, 161, 162, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, 165, 165, + 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 169, 169, 170, 170, 171, 172, 172, 172, 172, 172, + 173, 173, 173, 174, 173, 175, 173, 176, 173, 177, + 173, 173, 173, 173, 178, 179, 179, 180, 180, 180, + 180, 181, 182, 182, 182, 183, 183, 184, 184, 185, + 186, 186, 187, 187, 187, 187, 188, 189, 189, 190, + 191, 191, 192, 193, 193, 193, 195, 194, 196, 196, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 198, 198, 199, 199, 200, 201, 201, 202, 203, + 203, 203, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 205, 205, 206, 207, 207, 208, 208, 209, 209, + 210, 210, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 212, 212, + 213, 213, 214, 214, 214, 214, 214, 214, 214, 214 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1858,29 +1890,30 @@ static const unsigned char yyr2[] = 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, - 1, 1, 1, 1, 1, 1, 2, 0, 2, 0, - 3, 2, 0, 1, 0, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 4, 5, 5, 3, 2, 2, 1, 3, 1, 3, - 1, 0, 4, 3, 3, 4, 4, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 6, 5, - 8, 6, 6, 6, 6, 6, 8, 8, 3, 1, - 1, 1, 1, 2, 2, 4, 2, 1, 4, 2, - 4, 0, 7, 0, 7, 0, 7, 0, 7, 3, - 4, 0, 1, 1, 1, 3, 3, 3, 3, 3, - 3, 1, 0, 1, 1, 1, 0, 2, 3, 1, - 1, 3, 1, 0, 8, 1, 1, 3, 1, 1, - 2, 0, 1, 1, 0, 4, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 5, 1, - 1, 1, 1, 2, 2, 2, 3, 2, 0, 1, - 2, 2, 3, 9, 9, 8, 13, 1, 1, 6, - 5, 2, 6, 7, 1, 3, 1, 0, 2, 1, - 5, 5, 5, 2, 4, 4, 6, 4, 4, 4, - 4, 6, 6, 2, 7, 1, 2, 0, 1, 0, - 3, 6, 3, 6, 2, 4, 6, 4 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, 1, 1, 2, 0, + 2, 0, 3, 2, 0, 1, 0, 3, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 5, 3, 2, 2, 1, 3, + 1, 3, 1, 0, 4, 3, 3, 4, 4, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 6, 5, 8, 6, 6, 6, 6, 6, 8, 8, + 3, 1, 1, 1, 1, 2, 2, 4, 2, 1, + 4, 2, 4, 0, 7, 0, 7, 0, 7, 0, + 7, 3, 4, 0, 1, 1, 1, 3, 3, 3, + 3, 3, 3, 1, 0, 1, 1, 1, 0, 2, + 3, 1, 1, 3, 1, 0, 8, 1, 1, 3, + 1, 1, 2, 0, 1, 1, 0, 4, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, + 5, 1, 1, 1, 1, 2, 2, 2, 3, 2, + 0, 1, 2, 2, 3, 9, 9, 8, 13, 1, + 1, 6, 5, 2, 6, 7, 1, 3, 1, 0, + 2, 1, 5, 5, 5, 2, 4, 4, 6, 4, + 4, 4, 4, 6, 6, 2, 7, 1, 2, 0, + 1, 0, 3, 6, 3, 6, 2, 4, 6, 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -1888,481 +1921,504 @@ static const unsigned char yyr2[] = means the default is an error. */ static const unsigned short int yydefact[] = { - 151, 0, 48, 137, 1, 136, 184, 41, 42, 43, - 44, 45, 46, 47, 0, 49, 208, 133, 134, 208, - 163, 164, 0, 0, 0, 48, 0, 139, 181, 0, - 0, 50, 51, 52, 53, 54, 55, 0, 0, 209, - 205, 40, 178, 179, 180, 204, 0, 0, 0, 0, - 149, 0, 0, 0, 0, 0, 0, 0, 39, 182, - 183, 49, 152, 135, 56, 2, 3, 69, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 0, 0, 0, 0, 199, 0, 0, 68, - 87, 72, 200, 88, 175, 176, 177, 249, 207, 0, - 0, 0, 0, 162, 150, 140, 138, 130, 131, 0, - 0, 0, 0, 185, 89, 0, 0, 71, 94, 96, - 0, 0, 101, 95, 248, 0, 229, 0, 0, 0, - 0, 49, 217, 218, 6, 7, 8, 9, 10, 11, + 163, 0, 60, 149, 1, 148, 196, 53, 54, 55, + 56, 57, 58, 59, 0, 61, 220, 145, 146, 220, + 175, 176, 0, 0, 0, 60, 0, 151, 193, 0, + 0, 62, 63, 64, 65, 66, 67, 0, 0, 221, + 217, 52, 190, 191, 192, 216, 0, 0, 0, 0, + 161, 0, 0, 0, 0, 0, 0, 0, 51, 194, + 195, 61, 164, 147, 68, 2, 3, 81, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 0, 0, 0, 0, 211, 0, 0, 80, + 99, 84, 212, 100, 187, 188, 189, 261, 219, 0, + 0, 0, 0, 174, 162, 152, 150, 142, 143, 0, + 0, 0, 0, 197, 101, 0, 0, 83, 106, 108, + 0, 0, 113, 107, 260, 0, 241, 0, 0, 0, + 0, 61, 229, 230, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 0, 0, 0, 0, 0, 0, 0, 24, - 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 206, 49, 221, 0, 245, 157, 154, 153, - 155, 156, 158, 161, 0, 145, 147, 143, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 0, - 0, 0, 0, 141, 0, 0, 0, 93, 173, 100, - 98, 0, 0, 233, 228, 211, 210, 0, 0, 30, - 34, 29, 33, 28, 32, 27, 31, 35, 36, 0, - 0, 59, 59, 254, 0, 0, 243, 0, 0, 0, + 22, 23, 0, 0, 0, 0, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 0, 0, + 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 218, 61, 233, 0, 257, 169, + 166, 165, 167, 168, 170, 173, 0, 157, 159, 155, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 0, 0, 0, 0, 153, 0, 0, 0, 105, + 185, 112, 110, 0, 0, 245, 240, 223, 222, 0, + 0, 42, 46, 41, 45, 40, 44, 39, 43, 47, + 48, 0, 0, 71, 71, 266, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 159, 64, 64, 64, 115, 116, 4, - 5, 113, 114, 117, 112, 108, 109, 0, 0, 0, + 0, 0, 0, 0, 0, 171, 76, 76, 76, 127, + 128, 4, 5, 125, 126, 129, 124, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 110, 64, 70, 70, 97, 172, 166, 169, - 170, 0, 0, 90, 188, 189, 190, 195, 191, 192, - 193, 194, 186, 0, 197, 202, 201, 203, 0, 212, - 0, 0, 0, 250, 0, 252, 247, 0, 0, 0, + 0, 0, 0, 123, 122, 76, 82, 82, 109, 184, + 178, 181, 182, 0, 0, 102, 200, 201, 202, 207, + 203, 204, 205, 206, 198, 0, 209, 214, 213, 215, + 0, 224, 0, 0, 0, 262, 0, 264, 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 160, 0, 146, 148, 144, 0, - 0, 0, 0, 0, 0, 103, 129, 0, 0, 107, - 0, 104, 0, 0, 0, 0, 142, 91, 92, 165, - 167, 0, 62, 99, 187, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 257, 0, 0, 235, 0, 237, - 240, 0, 0, 238, 239, 0, 0, 0, 234, 0, - 255, 0, 0, 0, 66, 64, 247, 0, 0, 0, - 0, 0, 0, 102, 105, 106, 0, 0, 0, 0, - 171, 168, 63, 57, 0, 196, 0, 0, 227, 59, - 60, 59, 224, 246, 0, 0, 0, 0, 0, 230, - 231, 232, 227, 0, 61, 67, 65, 0, 0, 0, - 0, 0, 0, 128, 0, 0, 0, 0, 0, 174, - 0, 0, 0, 226, 0, 0, 251, 253, 0, 0, - 0, 236, 241, 242, 0, 256, 119, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 58, 198, 0, 0, - 0, 225, 222, 0, 244, 118, 0, 125, 0, 0, - 121, 122, 123, 124, 0, 215, 0, 0, 0, 223, - 0, 0, 0, 213, 0, 214, 0, 0, 120, 126, - 127, 0, 0, 0, 0, 0, 0, 220, 0, 0, - 219, 216 + 0, 0, 0, 0, 0, 0, 172, 0, 158, 160, + 156, 0, 0, 0, 0, 0, 115, 141, 0, 0, + 119, 0, 116, 0, 0, 0, 0, 0, 154, 103, + 104, 177, 179, 0, 74, 111, 199, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, + 249, 252, 0, 0, 250, 251, 0, 0, 0, 247, + 246, 0, 267, 0, 0, 0, 78, 76, 259, 0, + 0, 0, 0, 0, 114, 117, 118, 0, 0, 0, + 0, 0, 183, 180, 75, 69, 0, 208, 0, 0, + 239, 71, 72, 71, 236, 258, 0, 0, 0, 0, + 0, 242, 243, 244, 239, 0, 73, 79, 77, 0, + 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, + 0, 186, 0, 0, 0, 238, 0, 0, 263, 265, + 0, 0, 0, 248, 253, 254, 0, 268, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 70, 210, + 0, 0, 0, 237, 234, 0, 256, 0, 137, 0, + 0, 133, 134, 135, 130, 136, 0, 227, 0, 0, + 0, 235, 0, 0, 0, 225, 0, 226, 0, 0, + 132, 138, 139, 0, 0, 0, 0, 0, 0, 232, + 0, 0, 231, 228 }; /* YYDEFGOTO[NTERM-NUM]. */ static const short int yydefgoto[] = { - -1, 86, 261, 277, 278, 279, 280, 199, 200, 229, - 201, 25, 15, 37, 449, 313, 394, 413, 336, 395, - 87, 88, 202, 90, 91, 120, 211, 346, 304, 347, - 109, 1, 2, 3, 283, 256, 254, 255, 63, 180, - 50, 104, 184, 92, 360, 289, 290, 291, 38, 96, - 16, 44, 17, 61, 18, 28, 365, 305, 93, 307, - 422, 19, 40, 41, 172, 497, 98, 236, 453, 454, - 173, 174, 374, 175, 176 + -1, 86, 273, 288, 289, 290, 291, 292, 211, 212, + 241, 213, 25, 15, 37, 461, 325, 406, 425, 348, + 407, 87, 88, 214, 90, 91, 120, 223, 357, 316, + 358, 109, 1, 2, 3, 295, 268, 266, 267, 63, + 192, 50, 104, 196, 92, 372, 301, 302, 303, 38, + 96, 16, 44, 17, 61, 18, 28, 377, 317, 93, + 319, 434, 19, 40, 41, 184, 509, 98, 248, 465, + 466, 185, 186, 386, 187, 188 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -463 +#define YYPACT_NINF -472 static const short int yypact[] = { - -463, 19, 202, 739, -463, -463, -463, -463, -463, -463, - -463, -463, -463, -463, -23, 340, 60, -463, -463, -12, - -463, -463, -8, 40, 115, 123, 66, -463, 67, 158, - 179, -463, -463, -463, -463, -463, -463, 1021, -14, -463, - -463, 120, -463, -463, -463, -463, 70, 71, 73, 77, - -463, 76, 158, 1021, 36, 36, 36, 36, -463, -463, - -463, 340, -463, -463, -463, -463, -463, 75, -463, -463, - -463, -463, -463, -463, -463, -463, -463, -463, -463, -463, - -463, -463, 193, 194, 195, 577, -463, 120, 84, -463, - -463, -84, -463, -463, -463, -463, -463, 1197, -463, 180, - 31, 201, 183, 192, -463, -463, -463, -463, -463, 1062, - 1062, 1062, 1103, -463, -463, 100, 101, -463, -463, -84, - -91, 105, 853, -463, -463, 1062, -463, 164, 1144, 30, - 255, 340, -463, -463, -463, -463, -463, -463, -463, -463, - -463, -463, -463, -463, -463, -463, -463, -463, -463, -463, - -463, -463, 1062, 1062, 1062, 1062, 1062, 1062, 1062, -463, - -463, -463, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, - 1062, 1062, -463, 340, -463, 51, -463, -463, -463, -463, - -463, -463, -463, -463, -74, -463, -463, -463, 125, 153, - 220, 155, 222, 159, 224, 171, 225, 223, 227, 175, - 228, 229, 420, -463, 1062, 1062, 1062, -463, 894, -463, - 116, 117, 645, -463, -463, 75, -463, 645, 645, -463, - -463, -463, -463, -463, -463, -463, -463, -463, -463, 645, - 1021, 140, 141, -463, 645, 138, 143, 226, 144, 146, - 148, 161, 162, 163, 166, 645, 645, 645, 177, 1021, - 1062, 1062, 249, -463, 182, 182, 182, -463, -463, -463, - -463, -463, -463, -463, -463, -463, -463, 178, 181, 184, - 185, 186, 187, 87, 1103, 597, 270, 188, 189, 197, - 199, -463, -463, 182, -36, -56, -84, -463, 120, -463, - 196, 200, 939, -463, -463, -463, -463, -463, -463, -463, - -463, -463, 236, 1103, -463, -463, -463, -463, 205, -463, - 210, 645, -9, -463, -3, -463, 211, 645, 191, 1062, - 1062, 1062, 1062, 1062, 1062, 1062, 1062, 212, 216, 217, - 1062, 645, 645, 218, -463, -20, -463, -463, -463, 1103, - 1103, 1103, 1103, 1103, 1103, -463, -463, -50, -59, -463, - -31, -463, 1103, 1103, 1103, 1103, -463, -463, -463, -463, - -463, 980, 278, -463, -463, 293, 26, 313, 314, 230, - 645, 337, 645, 1062, -463, 231, 645, -463, 233, -463, - -463, 234, 237, -463, -463, 645, 645, 645, -463, 238, - -463, 1062, 332, 353, -463, 182, 211, 322, 246, 247, - 248, 250, 1103, -463, -463, -463, 251, 256, 257, 259, - -463, -463, -463, 307, 260, -463, 645, 645, 1062, 262, - -463, 262, -463, 263, 645, 265, 1062, 1062, 1062, -463, - -463, -463, 1062, 645, -463, -463, -463, 252, 1062, 1103, - 1103, 1103, 1103, -463, 1103, 1103, 1103, 1103, 378, -463, - 359, 273, 266, 263, 274, 339, -463, -463, 1062, 276, - 645, -463, -463, -463, 280, -463, -463, 281, 285, 284, - 296, 297, 295, 298, 299, 300, -463, -463, 393, 15, - 379, -463, -463, 301, -463, -463, 1103, -463, 1103, 1103, - -463, -463, -463, -463, 645, -463, 738, 65, 398, -463, - 302, 305, 306, -463, 312, -463, 738, 645, -463, -463, - -463, 407, 315, 355, 645, 408, 412, -463, 645, 645, - -463, -463 + -472, 24, 395, 501, -472, -472, -472, -472, -472, -472, + -472, -472, -472, -472, -13, 112, 46, -472, -472, -11, + -472, -472, -18, -41, 45, 51, -1, -472, 40, 106, + 131, -472, -472, -472, -472, -472, -472, 1136, -23, -472, + -472, 81, -472, -472, -472, -472, 30, 33, 49, 61, + -472, 57, 106, 1136, 78, 78, 78, 78, -472, -472, + -472, 112, -472, -472, -472, -472, -472, 62, -472, -472, + -472, -472, -472, -472, -472, -472, -472, -472, -472, -472, + -472, -472, 185, 187, 188, 619, -472, 81, 67, -472, + -472, -71, -472, -472, -472, -472, -472, 1286, -472, 174, + 58, 196, 177, 178, -472, -472, -472, -472, -472, 1177, + 1177, 1177, 1197, -472, -472, 72, 73, -472, -472, -71, + -89, 79, 151, -472, -472, 1177, -472, 147, 1222, 12, + 218, 112, -472, -472, -472, -472, -472, -472, -472, -472, + -472, -472, -472, -472, -472, -472, -472, -472, -472, -472, + -472, -472, 1177, 1177, 1177, 1177, -472, -472, -472, -472, + -472, -472, -472, -472, -472, -472, -472, -472, 1177, 1177, + -472, -472, -472, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, -472, 112, -472, -55, -472, -472, + -472, -472, -472, -472, -472, -472, -62, -472, -472, -472, + 95, 123, 204, 125, 205, 130, 206, 149, 207, 208, + 210, 181, 209, 214, 488, -472, 1177, 1177, 1177, -472, + 944, -472, 88, 93, 698, -472, -472, 62, -472, 698, + 698, -472, -472, -472, -472, -472, -472, -472, -472, -472, + -472, 698, 1136, 97, 110, -472, 698, 108, 113, 114, + 120, 121, 124, 126, 133, 136, 698, 698, 698, 213, + 139, 1136, 1177, 1177, 227, -472, 140, 140, 140, -472, + -472, -472, -472, -472, -472, -472, -472, -472, -472, 141, + 142, 143, 145, 146, 985, 1197, 639, 243, 148, 154, + 155, 157, 165, -472, -472, 140, -28, -51, -71, -472, + 81, -472, 153, 172, 1005, -472, -472, -472, -472, -472, + -472, -472, -472, -472, 244, 1197, -472, -472, -472, -472, + 180, -472, 182, 698, -7, -472, -6, -472, 183, 698, + 138, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 184, 186, + 189, 1177, 1177, 698, 698, 190, -472, -17, -472, -472, + -472, 1197, 1197, 1197, 1197, 1197, -472, -472, -24, -85, + -472, -80, -472, 1197, 1197, 1197, 1197, 1197, -472, -472, + -472, -472, -472, 1046, 277, -472, -472, 289, -27, 293, + 296, 191, 698, 314, 698, 1177, -472, 194, 698, 195, + -472, -472, 200, 201, -472, -472, 698, 698, 698, -472, + -472, 202, -472, 1177, 298, 324, -472, 140, 183, 203, + 211, 212, 224, 1197, -472, -472, -472, 225, 226, 230, + 295, 232, -472, -472, -472, 275, 233, -472, 698, 698, + 1177, 235, -472, 235, -472, 239, 698, 241, 1177, 1177, + 1177, -472, -472, -472, 1177, 698, -472, -472, -472, 215, + 1197, 1197, 1197, 1197, -472, 1197, 1197, 1197, 1177, 1197, + 329, -472, 310, 242, 223, 239, 240, 278, -472, -472, + 1177, 238, 698, -472, -472, -472, 247, -472, -472, 245, + 250, 246, 255, 254, 256, 257, 259, 262, -472, -472, + 318, 15, 337, -472, -472, 252, -472, 1197, -472, 1197, + 1197, -472, -472, -472, -472, -472, 698, -472, 818, 65, + 371, -472, 265, 267, 268, -472, 272, -472, 818, 698, + -472, -472, -472, 378, 274, 328, 698, 384, 385, -472, + 698, 698, -472, -472 }; /* YYPGOTO[NTERM-NUM]. */ static const short int yypgoto[] = { - -463, -463, -463, 338, 342, 343, 344, -129, -128, -462, - -463, 395, 418, -118, -463, -225, 89, -463, -247, -463, - -49, -463, -37, -463, -82, 323, -463, -102, 253, -253, - 83, -463, -463, -463, -463, -463, -463, -463, 400, -463, - -463, -463, -463, 2, -463, 92, -463, -463, 399, -463, - -463, -463, -463, -463, 451, -463, -463, -359, -57, 62, - -105, -463, 437, -463, -463, -463, -463, -463, 90, 32, - -463, -463, 69, -463, -463 + -472, -472, -472, 311, 312, 313, 315, 317, -129, -127, + -471, -472, 370, 392, -120, -472, -237, 50, -472, -253, + -472, -49, -472, -37, -472, -67, 301, -472, -110, 220, + -263, 64, -472, -472, -472, -472, -472, -472, -472, 373, + -472, -472, -472, -472, 2, -472, 70, -472, -472, 374, + -472, -472, -472, -472, -472, 441, -472, -472, -418, 34, + 31, -115, -472, 426, -472, -472, -472, -472, -472, 63, + 3, -472, -472, 38, -472, -472 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -133 +#define YYTABLE_NINF -145 static const short int yytable[] = { - 89, 227, 228, 119, 106, 26, 370, 315, 337, 338, - 203, 39, 372, 230, 392, 94, 89, 496, 42, 4, - 213, 348, 350, 216, 206, 219, 220, 221, 222, 223, - 224, 225, 226, -70, 207, 506, 356, 393, 29, 217, - 119, 252, 123, 26, 46, 47, 48, 253, 371, 233, - 366, 218, 237, 238, 371, 249, 402, 239, 240, 241, - 242, 243, 244, 49, 404, 402, 248, 358, 107, 108, - 123, 403, 185, 186, 187, 219, 220, 221, 222, 223, - 224, 225, 226, 39, 402, 357, 178, 179, 212, 121, - 123, 212, 65, 66, 405, 117, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 79, 80, 20, - 95, 21, 59, 43, 60, 231, 232, 212, 234, 235, - 212, 212, 284, 285, 286, 212, 212, 212, 212, 212, - 212, 245, 246, 247, 212, 81, 495, 504, 110, 111, - 112, 402, 20, 53, 21, 282, 333, 512, 436, 415, - 250, 251, 257, 258, 51, 306, -30, -30, -29, -29, - 306, 306, -28, -28, 7, 8, 9, 10, 54, 12, - 55, 288, 306, 56, -27, -27, 52, 306, 259, 260, - 58, 311, 62, 64, 99, 100, 505, 101, 306, 306, - 306, 102, -71, 89, 456, 103, 457, 114, 115, 116, - 331, 122, -132, 82, 177, 181, 83, 182, 345, 84, - 286, 85, 89, 332, 212, 378, 183, 380, 381, 382, - 204, 205, 208, 214, -34, 388, -33, 5, -32, -31, - -37, 292, 262, 6, -38, 293, 263, 396, 397, 398, - 399, 400, 401, 7, 8, 9, 10, 11, 12, 13, - 406, 407, 408, 409, 306, 312, 314, 317, 318, 320, - 306, 321, 319, 322, 14, 219, 220, 221, 222, 223, - 224, 225, 226, 334, 306, 306, 323, 324, 325, 308, - 309, 326, 377, 212, 379, 212, 212, 212, 383, 384, - 359, 310, 330, 212, 351, 339, 316, 335, 340, 364, - 443, 341, 342, 343, 344, 352, 353, 327, 328, 329, - 376, 361, 392, 306, 354, 306, 355, 414, 362, 306, - 367, 461, 462, 463, 288, 368, 373, 385, 306, 306, - 306, 386, 387, 391, 416, 417, 212, 468, 469, 470, - 471, 420, 472, 473, 474, 475, 424, 418, 426, 427, - 227, 228, 428, 481, 433, 432, 434, 435, 438, 306, - 306, 439, 440, 441, 448, 442, 444, 306, 227, 228, - 466, 445, 446, 369, 447, 450, 306, 455, 458, 375, - 460, 212, 476, 477, 500, 479, 501, 502, 478, 212, - 212, 212, 480, 389, 390, 212, 371, 482, 484, 485, - 486, 467, 487, 306, 30, 31, 32, 33, 34, 35, - 36, 488, 489, 490, 494, 498, 491, 492, 493, 507, - 508, 212, 499, 509, 510, 65, 66, 511, 514, 518, - 515, 516, 419, 519, 421, 168, 97, 306, 425, 169, - 170, 171, 20, 57, 21, 210, 264, 429, 430, 431, - 306, 412, 105, 411, 27, 281, 45, 306, 265, 266, - 113, 306, 306, 423, 464, 437, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 451, 452, - 0, 0, 0, 0, 0, 0, 459, 0, 0, 0, - 0, 0, 0, 0, 0, 465, 0, 0, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 0, 0, 0, 0, - 0, 267, 483, 268, 269, 159, 160, 161, 0, 270, - 271, 272, 0, 0, 0, 0, 0, 0, 0, 273, - 0, 0, 274, 0, 275, 0, 0, 276, 0, 0, - 0, 0, 0, 0, 0, 0, 503, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, - 0, 0, 0, 0, 0, 0, 517, 0, 0, 0, - 520, 521, 65, 66, 0, 117, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 20, - 0, 21, 65, 66, 0, 117, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 79, 80, 20, - 0, 21, 0, 0, 0, 81, 0, 0, 0, 0, + 89, 239, 215, 240, 106, 26, 94, 327, 382, 384, + 225, 242, 39, 228, 349, 350, 89, 404, 119, 42, + 508, 229, 359, 361, 4, 231, 232, 233, 234, 235, + 236, 237, 238, 230, 46, 47, 48, 218, 518, 245, + 405, 413, 368, 26, 262, 263, 413, 219, 29, 415, + 383, 383, 378, 49, 249, 119, 416, -82, 250, 251, + 252, 253, 254, 255, 264, 261, 123, 259, 260, 39, + 265, 53, 197, 198, 199, 231, 232, 233, 234, 235, + 236, 237, 238, 370, 51, 59, 123, 60, 224, 121, + 516, 224, 7, 8, 9, 10, 54, 12, 55, 413, + 524, 56, 413, 20, 369, 21, 52, 427, 414, 123, + 107, 108, 95, 190, 191, 243, 244, 224, 246, 110, + 111, 112, 269, 270, 58, 43, -42, -42, -41, -41, + 62, 247, 224, -40, -40, 64, 224, 224, 224, 224, + 224, 224, 256, 257, 258, 224, 224, 507, 345, 296, + 297, 298, -39, -39, 448, 99, 65, 66, 100, 117, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 20, 101, 21, 30, 31, 32, 33, + 34, 35, 36, 300, 271, 272, 102, 103, 221, 114, + -83, 115, 116, 323, 468, 122, 469, 517, 189, 81, + 193, 194, 195, 216, 217, 89, 226, 220, -46, -45, + -44, -43, 343, 274, 304, -49, 389, -50, 391, 392, + 393, 275, 305, 324, 89, 344, 224, 400, 231, 232, + 233, 234, 235, 236, 237, 238, 326, 298, 329, 330, + 331, 408, 409, 410, 411, 412, 332, 333, 294, 341, + 334, 346, 335, 417, 418, 419, 420, 421, 318, 336, + 320, 321, 337, 318, 318, 342, 347, 362, 388, 351, + 352, 353, 322, 354, 355, 318, 363, 328, 82, 373, + 318, 83, 364, 365, 84, 366, 85, 338, 339, 340, + 318, 318, 318, 367, 224, 390, 224, 224, 224, 394, + 395, 374, 371, 454, 399, 224, 379, 376, 380, 385, + 396, 404, 397, 426, 428, 398, 403, 429, 432, 430, + 436, 438, 446, 473, 474, 475, 439, 440, 447, 450, + 444, 458, 460, 488, 489, 383, 300, 451, 452, 506, + 479, 480, 481, 482, 478, 483, 484, 485, 224, 487, + 453, 455, 456, 491, 381, 493, 457, 318, 459, 462, + 387, 467, 239, 318, 240, 470, 445, 472, 490, 492, + 494, 497, 499, 510, 401, 402, 496, 318, 318, 498, + 239, 500, 240, 501, 511, 502, 503, 512, 504, 513, + 514, 505, 519, 224, 520, -144, 521, 522, 523, 526, + 527, 224, 224, 224, 528, 530, 531, 224, 179, 180, + 181, 97, 182, 431, 183, 433, 318, 57, 318, 437, + 5, 486, 318, 222, 424, 105, 6, 441, 442, 443, + 318, 318, 318, 224, 293, 113, 7, 8, 9, 10, + 11, 12, 13, 423, 27, 45, 449, 476, 435, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 463, + 464, 0, 318, 318, 0, 0, 0, 471, 0, 0, + 318, 0, 0, 0, 0, 0, 477, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 81, 0, 0, 294, 295, - 65, 66, 296, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, - 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 301, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 0, 0, 83, 0, 0, 84, - 0, 85, 118, 0, 0, 0, 302, 0, 0, 0, - 0, 0, 0, 82, 0, 0, 83, 0, 0, 84, - 0, 85, 349, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 294, 295, 0, 0, 296, 267, 0, 268, 269, - 159, 160, 161, 0, 270, 271, 272, 0, 0, -40, - 0, 20, 0, 21, 297, 298, 299, 303, 0, 0, - 6, -40, -40, 0, 0, 0, 300, 301, 0, 0, - -40, -40, -40, -40, -40, -40, -40, 0, 0, -40, - 22, 0, 0, 0, 0, 0, 0, 23, 0, 302, - 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 134, 135, 136, 137, + 0, 0, 0, 65, 66, 0, 0, 0, 0, 0, + 0, 0, 0, 495, 0, 0, 318, 0, 0, 0, + 20, 0, 21, 0, 276, 0, 0, 0, 0, 0, + 0, -52, 0, 20, 0, 21, 277, 278, 0, 0, + 0, 0, 6, -52, -52, 0, 0, 515, 0, 0, + 318, 0, -52, -52, -52, -52, -52, -52, -52, 0, + 525, -52, 22, 318, 0, 0, 0, 529, 0, 23, + 318, 532, 533, 24, 318, 318, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 0, 0, 0, 0, 0, 267, - 0, 268, 269, 159, 160, 161, 0, 270, 271, 272, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, - 303, 117, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 20, 0, 21, 0, 0, + 148, 149, 150, 151, 0, 0, 0, 0, 0, 279, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 0, 280, 170, 171, 172, 0, 281, 282, + 283, 0, 0, 0, 0, 0, 0, 0, 284, 0, + 0, 285, 0, 286, 65, 66, 287, 117, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 20, 0, 21, 65, 66, 0, 117, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 79, + 80, 20, 0, 21, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 209, 0, 0, 0, 0, 0, 0, 0, 0, 65, - 66, 81, 117, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 20, 0, 21, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 0, 65, 66, 0, 117, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 20, 0, 21, 0, 0, 0, 0, 0, 82, - 0, 0, 83, 0, 0, 84, 363, 85, 0, 0, - 0, 0, 0, 0, 0, 65, 66, 81, 117, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 20, 0, 21, 0, 0, 0, 0, 0, - 82, 0, 0, 83, 0, 0, 84, 410, 85, 0, - 0, 0, 0, 0, 0, 0, 65, 66, 81, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 20, 0, 21, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 82, 0, 0, 83, 0, - 0, 84, 0, 85, 0, 0, 0, 65, 66, 81, - 117, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 20, 0, 21, 0, 0, 0, + 0, 306, 307, 65, 66, 308, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 21, 0, 309, 310, 311, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 313, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 83, - 0, 0, 84, 0, 85, 0, 0, 0, 65, 66, - 81, 117, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 79, 80, 20, 0, 21, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, - 83, 0, 0, 84, 0, 85, 0, 0, 0, 65, - 66, 81, 215, 68, 69, 70, 71, 72, 73, 74, + 0, 0, 84, 0, 85, 118, 0, 0, 0, 314, + 0, 0, 0, 0, 0, 0, 82, 0, 0, 83, + 0, 0, 84, 0, 85, 360, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 0, 0, 0, 0, 0, 279, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 0, 280, 170, 171, 172, 0, 281, 282, + 283, 306, 307, 0, 0, 308, 0, 0, 0, 0, + 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 309, 310, 311, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 313, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 0, 0, 0, 0, 0, 279, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 0, 280, 170, 171, 172, 0, 281, 282, + 283, 0, 0, 0, 0, 0, 0, 0, 0, 65, + 66, 315, 117, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 20, 0, 21, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, - 0, 83, 0, 0, 84, 0, 85, 0, 0, 0, - 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, - 0, 0, 83, 0, 0, 84, 0, 85, 0, 0, - 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 126, 127, 0, 0, - 82, 0, 0, 83, 0, 0, 84, 0, 85, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 0, 0, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167 + 0, 299, 0, 0, 0, 0, 0, 0, 0, 0, + 65, 66, 81, 117, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 79, 80, 20, 0, 21, + 65, 66, 0, 117, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 20, 0, 21, + 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, + 0, 0, 375, 0, 0, 0, 0, 0, 0, 0, + 0, 65, 66, 81, 117, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 20, 0, + 21, 82, 0, 0, 83, 0, 0, 84, 0, 85, + 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 83, 0, 356, 84, 0, + 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 83, 0, 0, 84, 0, + 85, 65, 66, 0, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 20, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 0, 0, 83, 0, 0, 84, + 0, 85, 65, 66, 81, 117, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 20, + 0, 21, 65, 66, 0, 117, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 79, 80, 20, + 0, 21, 0, 0, 0, 81, 0, 65, 66, 0, + 227, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 20, 81, 21, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 0, 0, 83, 0, 0, 84, + 81, 85, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 0, 0, 83, 0, 0, + 84, 0, 85, 0, 0, 0, 0, 0, 0, 0, + 0, 124, 0, 0, 82, 0, 0, 83, 0, 0, + 84, 0, 85, 0, 0, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 127, 0, 0, 82, + 0, 0, 83, 0, 0, 84, 0, 85, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 0, 0, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178 }; static const short int yycheck[] = { - 37, 130, 130, 85, 53, 3, 15, 232, 255, 256, - 112, 23, 15, 131, 34, 29, 53, 479, 30, 0, - 125, 274, 275, 128, 115, 10, 11, 12, 13, 14, - 15, 16, 17, 117, 125, 497, 283, 57, 61, 9, - 122, 115, 126, 41, 52, 53, 54, 121, 57, 154, - 303, 21, 157, 158, 57, 173, 115, 162, 163, 164, - 165, 166, 167, 71, 123, 115, 171, 123, 32, 33, - 126, 121, 109, 110, 111, 10, 11, 12, 13, 14, - 15, 16, 17, 23, 115, 121, 55, 56, 125, 87, - 126, 128, 5, 6, 125, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 124, 24, 45, 125, 47, 152, 153, 154, 155, 156, - 157, 158, 204, 205, 206, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 48, 121, 496, 55, 56, - 57, 115, 22, 20, 24, 202, 251, 506, 395, 123, - 99, 100, 27, 28, 114, 212, 3, 4, 3, 4, - 217, 218, 3, 4, 41, 42, 43, 44, 45, 46, - 47, 208, 229, 50, 3, 4, 61, 234, 3, 4, - 114, 230, 24, 4, 114, 114, 121, 114, 245, 246, - 247, 114, 117, 230, 419, 119, 421, 4, 4, 4, - 249, 117, 0, 116, 24, 4, 119, 24, 121, 122, - 292, 124, 249, 250, 251, 320, 24, 322, 323, 324, - 120, 120, 117, 59, 4, 330, 4, 25, 4, 4, - 7, 115, 4, 31, 7, 118, 7, 339, 340, 341, - 342, 343, 344, 41, 42, 43, 44, 45, 46, 47, - 352, 353, 354, 355, 311, 115, 115, 119, 115, 115, - 317, 115, 36, 115, 62, 10, 11, 12, 13, 14, - 15, 16, 17, 24, 331, 332, 115, 115, 115, 217, - 218, 115, 319, 320, 321, 322, 323, 324, 325, 326, - 288, 229, 115, 330, 24, 117, 234, 115, 117, 63, - 402, 117, 117, 117, 117, 117, 117, 245, 246, 247, - 119, 115, 34, 370, 117, 372, 117, 24, 118, 376, - 115, 426, 427, 428, 361, 115, 115, 115, 385, 386, - 387, 115, 115, 115, 21, 21, 373, 439, 440, 441, - 442, 4, 444, 445, 446, 447, 115, 117, 115, 115, - 479, 479, 115, 458, 391, 117, 24, 4, 36, 416, - 417, 115, 115, 115, 57, 115, 115, 424, 497, 497, - 118, 115, 115, 311, 115, 115, 433, 115, 115, 317, - 115, 418, 4, 24, 486, 119, 488, 489, 115, 426, - 427, 428, 118, 331, 332, 432, 57, 121, 118, 118, - 115, 438, 118, 460, 64, 65, 66, 67, 68, 69, - 70, 115, 115, 118, 21, 36, 118, 118, 118, 21, - 118, 458, 121, 118, 118, 5, 6, 115, 21, 21, - 115, 76, 370, 21, 372, 97, 41, 494, 376, 97, - 97, 97, 22, 25, 24, 122, 26, 385, 386, 387, - 507, 362, 52, 361, 3, 202, 19, 514, 38, 39, - 61, 518, 519, 373, 432, 396, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 416, 417, - -1, -1, -1, -1, -1, -1, 424, -1, -1, -1, - -1, -1, -1, -1, -1, 433, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, -1, -1, -1, -1, - -1, 101, 460, 103, 104, 105, 106, 107, -1, 109, - 110, 111, -1, -1, -1, -1, -1, -1, -1, 119, - -1, -1, 122, -1, 124, -1, -1, 127, -1, -1, - -1, -1, -1, -1, -1, -1, 494, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 507, - -1, -1, -1, -1, -1, -1, 514, -1, -1, -1, - 518, 519, 5, 6, -1, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - -1, 24, 5, 6, -1, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - -1, 24, -1, -1, -1, 48, -1, -1, -1, -1, + 37, 130, 112, 130, 53, 3, 29, 244, 15, 15, + 125, 131, 23, 128, 267, 268, 53, 34, 85, 30, + 491, 9, 285, 286, 0, 10, 11, 12, 13, 14, + 15, 16, 17, 21, 52, 53, 54, 126, 509, 154, + 57, 126, 295, 41, 99, 100, 126, 136, 61, 134, + 57, 57, 315, 71, 169, 122, 136, 128, 173, 174, + 175, 176, 177, 178, 126, 185, 137, 182, 183, 23, + 132, 20, 109, 110, 111, 10, 11, 12, 13, 14, + 15, 16, 17, 134, 125, 45, 137, 47, 125, 87, + 508, 128, 41, 42, 43, 44, 45, 46, 47, 126, + 518, 50, 126, 22, 132, 24, 61, 134, 132, 137, + 32, 33, 135, 55, 56, 152, 153, 154, 155, 55, + 56, 57, 27, 28, 125, 136, 3, 4, 3, 4, + 24, 168, 169, 3, 4, 4, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 132, 263, 216, + 217, 218, 3, 4, 407, 125, 5, 6, 125, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 125, 24, 64, 65, 66, 67, + 68, 69, 70, 220, 3, 4, 125, 130, 37, 4, + 128, 4, 4, 242, 431, 128, 433, 132, 24, 48, + 4, 24, 24, 131, 131, 242, 59, 128, 4, 4, + 4, 4, 261, 4, 126, 7, 331, 7, 333, 334, + 335, 7, 129, 126, 261, 262, 263, 342, 10, 11, + 12, 13, 14, 15, 16, 17, 126, 304, 130, 126, + 126, 351, 352, 353, 354, 355, 126, 126, 214, 36, + 126, 24, 126, 363, 364, 365, 366, 367, 224, 126, + 229, 230, 126, 229, 230, 126, 126, 24, 130, 128, + 128, 128, 241, 128, 128, 241, 128, 246, 127, 126, + 246, 130, 128, 128, 133, 128, 135, 256, 257, 258, + 256, 257, 258, 128, 331, 332, 333, 334, 335, 336, + 337, 129, 300, 413, 341, 342, 126, 63, 126, 126, + 126, 34, 126, 24, 21, 126, 126, 21, 4, 128, + 126, 126, 24, 438, 439, 440, 126, 126, 4, 126, + 128, 36, 57, 4, 24, 57, 373, 126, 126, 21, + 450, 451, 452, 453, 129, 455, 456, 457, 385, 459, + 126, 126, 126, 130, 323, 470, 126, 323, 126, 126, + 329, 126, 491, 329, 491, 126, 403, 126, 126, 129, + 132, 126, 126, 36, 343, 344, 129, 343, 344, 129, + 509, 126, 509, 129, 132, 129, 129, 497, 129, 499, + 500, 129, 21, 430, 129, 0, 129, 129, 126, 21, + 126, 438, 439, 440, 76, 21, 21, 444, 97, 97, + 97, 41, 97, 382, 97, 384, 382, 25, 384, 388, + 25, 458, 388, 122, 374, 52, 31, 396, 397, 398, + 396, 397, 398, 470, 214, 61, 41, 42, 43, 44, + 45, 46, 47, 373, 3, 19, 408, 444, 385, -1, + -1, -1, -1, -1, -1, -1, -1, 62, -1, 428, + 429, -1, 428, 429, -1, -1, -1, 436, -1, -1, + 436, -1, -1, -1, -1, -1, 445, -1, -1, 445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 48, -1, -1, 3, 4, - 5, 6, 7, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, -1, 24, - -1, 26, 27, 28, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 38, 39, -1, -1, -1, -1, -1, - -1, -1, -1, 116, -1, -1, 119, -1, -1, 122, - -1, 124, 125, -1, -1, -1, 61, -1, -1, -1, - -1, -1, -1, 116, -1, -1, 119, -1, -1, 122, - -1, 124, 125, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 3, 4, -1, -1, 7, 101, -1, 103, 104, - 105, 106, 107, -1, 109, 110, 111, -1, -1, 20, - -1, 22, -1, 24, 26, 27, 28, 122, -1, -1, - 31, 32, 33, -1, -1, -1, 38, 39, -1, -1, - 41, 42, 43, 44, 45, 46, 47, -1, -1, 50, - 51, -1, -1, -1, -1, -1, -1, 58, -1, 61, - -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 78, 79, 80, 81, + -1, -1, -1, 5, 6, -1, -1, -1, -1, -1, + -1, -1, -1, 472, -1, -1, 472, -1, -1, -1, + 22, -1, 24, -1, 26, -1, -1, -1, -1, -1, + -1, 20, -1, 22, -1, 24, 38, 39, -1, -1, + -1, -1, 31, 32, 33, -1, -1, 506, -1, -1, + 506, -1, 41, 42, 43, 44, 45, 46, 47, -1, + 519, 50, 51, 519, -1, -1, -1, 526, -1, 58, + 526, 530, 531, 62, 530, 531, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, -1, -1, -1, -1, -1, 101, - -1, 103, 104, 105, 106, 107, -1, 109, 110, 111, - -1, -1, -1, -1, -1, -1, -1, -1, 5, 6, - 122, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, -1, 24, -1, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, 116, 117, 118, -1, 120, 121, + 122, -1, -1, -1, -1, -1, -1, -1, 130, -1, + -1, 133, -1, 135, 5, 6, 138, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, -1, 24, 5, 6, -1, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, -1, 24, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, -1, -1, -1, -1, -1, -1, -1, -1, 5, - 6, 48, 8, 9, 10, 11, 12, 13, 14, 15, + -1, -1, -1, -1, -1, -1, -1, 48, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3, 4, 5, 6, 7, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, -1, 24, -1, 26, 27, 28, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 38, 39, -1, -1, + -1, -1, -1, -1, -1, -1, 127, -1, -1, 130, + -1, -1, 133, -1, 135, 136, -1, -1, -1, 61, + -1, -1, -1, -1, -1, -1, 127, -1, -1, 130, + -1, -1, 133, -1, 135, 136, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, -1, -1, -1, -1, -1, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, 116, 117, 118, -1, 120, 121, + 122, 3, 4, -1, -1, 7, -1, -1, -1, -1, + -1, 133, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 26, 27, 28, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 38, 39, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, -1, -1, -1, -1, -1, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, 116, 117, 118, -1, 120, 121, + 122, -1, -1, -1, -1, -1, -1, -1, -1, 5, + 6, 133, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, -1, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 48, -1, 5, 6, -1, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, -1, 24, -1, -1, -1, -1, -1, 116, - -1, -1, 119, -1, -1, 122, 37, 124, -1, -1, - -1, -1, -1, -1, -1, 5, 6, 48, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, -1, 24, -1, -1, -1, -1, -1, - 116, -1, -1, 119, -1, -1, 122, 37, 124, -1, - -1, -1, -1, -1, -1, -1, 5, 6, 48, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, -1, 24, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 116, -1, -1, 119, -1, - -1, 122, -1, 124, -1, -1, -1, 5, 6, 48, + 5, 6, 48, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, -1, 24, + 5, 6, -1, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, -1, 24, + -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, + -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, + -1, 5, 6, 48, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, -1, + 24, 127, -1, -1, 130, -1, -1, 133, -1, 135, + -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 127, -1, -1, 130, -1, 132, 133, -1, + 135, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 127, -1, -1, 130, -1, -1, 133, -1, + 135, 5, 6, -1, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, -1, + 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 127, -1, -1, 130, -1, -1, 133, + -1, 135, 5, 6, 48, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + -1, 24, 5, 6, -1, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + -1, 24, -1, -1, -1, 48, -1, 5, 6, -1, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, -1, 24, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 116, -1, -1, 119, - -1, -1, 122, -1, 124, -1, -1, -1, 5, 6, - 48, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, -1, 24, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 116, -1, -1, - 119, -1, -1, 122, -1, 124, -1, -1, -1, 5, - 6, 48, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, -1, 24, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, - -1, 119, -1, -1, 122, -1, 124, -1, -1, -1, - -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, + 18, 19, 20, 21, 22, 48, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 116, - -1, -1, 119, -1, -1, 122, -1, 124, -1, -1, - -1, -1, 35, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 49, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 59, 60, -1, -1, - 116, -1, -1, 119, -1, -1, 122, -1, 124, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113 + -1, -1, -1, 127, -1, -1, 130, -1, -1, 133, + 48, 135, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 127, -1, -1, 130, -1, -1, + 133, -1, 135, -1, -1, -1, -1, -1, -1, -1, + -1, 35, -1, -1, 127, -1, -1, 130, -1, -1, + 133, -1, 135, -1, -1, 49, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 59, 60, -1, -1, 127, + -1, -1, 130, -1, -1, 133, -1, 135, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const unsigned char yystos[] = { - 0, 159, 160, 161, 0, 25, 31, 41, 42, 43, - 44, 45, 46, 47, 62, 140, 178, 180, 182, 189, - 22, 24, 51, 58, 62, 139, 171, 182, 183, 61, - 64, 65, 66, 67, 68, 69, 70, 141, 176, 23, - 190, 191, 30, 125, 179, 190, 52, 53, 54, 71, - 168, 114, 61, 20, 45, 47, 50, 140, 114, 45, - 47, 181, 24, 166, 4, 5, 6, 8, 9, 10, + 0, 171, 172, 173, 0, 25, 31, 41, 42, 43, + 44, 45, 46, 47, 62, 152, 190, 192, 194, 201, + 22, 24, 51, 58, 62, 151, 183, 194, 195, 61, + 64, 65, 66, 67, 68, 69, 70, 153, 188, 23, + 202, 203, 30, 136, 191, 202, 52, 53, 54, 71, + 180, 125, 61, 20, 45, 47, 50, 152, 125, 45, + 47, 193, 24, 178, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 48, 116, 119, 122, 124, 129, 148, 149, 150, - 151, 152, 171, 186, 29, 124, 177, 139, 194, 114, - 114, 114, 114, 119, 169, 166, 148, 32, 33, 158, - 158, 158, 158, 176, 4, 4, 4, 8, 125, 152, - 153, 171, 117, 126, 35, 49, 59, 60, 72, 73, + 21, 48, 127, 130, 133, 135, 140, 160, 161, 162, + 163, 164, 183, 198, 29, 135, 189, 151, 206, 125, + 125, 125, 125, 130, 181, 178, 160, 32, 33, 170, + 170, 170, 170, 188, 4, 4, 4, 8, 136, 164, + 165, 183, 128, 137, 35, 49, 59, 60, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 131, 132, - 133, 134, 192, 198, 199, 201, 202, 24, 55, 56, - 167, 4, 24, 24, 170, 150, 150, 150, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 135, - 136, 138, 150, 155, 120, 120, 115, 125, 117, 37, - 153, 154, 150, 188, 59, 8, 188, 9, 21, 10, - 11, 12, 13, 14, 15, 16, 17, 135, 136, 137, - 141, 150, 150, 188, 150, 150, 195, 188, 188, 188, - 188, 188, 188, 188, 188, 150, 150, 150, 188, 141, - 99, 100, 115, 121, 164, 165, 163, 27, 28, 3, - 4, 130, 4, 7, 26, 38, 39, 101, 103, 104, - 109, 110, 111, 119, 122, 124, 127, 131, 132, 133, - 134, 156, 186, 162, 152, 152, 152, 37, 150, 173, - 174, 175, 115, 118, 3, 4, 7, 26, 27, 28, - 38, 39, 61, 122, 156, 185, 186, 187, 187, 187, - 187, 148, 115, 143, 115, 143, 187, 119, 115, 36, - 115, 115, 115, 115, 115, 115, 115, 187, 187, 187, - 115, 148, 150, 188, 24, 115, 146, 146, 146, 117, - 117, 117, 117, 117, 117, 121, 155, 157, 157, 125, - 157, 24, 117, 117, 117, 117, 146, 121, 123, 171, - 172, 115, 118, 37, 63, 184, 157, 115, 115, 187, - 15, 57, 15, 115, 200, 187, 119, 150, 188, 150, - 188, 188, 188, 150, 150, 115, 115, 115, 188, 187, - 187, 115, 34, 57, 144, 147, 155, 155, 155, 155, - 155, 155, 115, 121, 123, 125, 155, 155, 155, 155, - 37, 173, 144, 145, 24, 123, 21, 21, 117, 187, - 4, 187, 188, 196, 115, 187, 115, 115, 115, 187, - 187, 187, 117, 150, 24, 4, 146, 200, 36, 115, - 115, 115, 115, 155, 115, 115, 115, 115, 57, 142, - 115, 187, 187, 196, 197, 115, 143, 143, 115, 187, - 115, 188, 188, 188, 197, 187, 118, 150, 155, 155, - 155, 155, 155, 155, 155, 155, 4, 24, 115, 119, - 118, 188, 121, 187, 118, 118, 115, 118, 115, 115, - 118, 118, 118, 118, 21, 121, 137, 193, 36, 121, - 155, 155, 155, 187, 185, 121, 137, 21, 118, 118, - 118, 115, 185, 187, 21, 115, 76, 187, 21, 21, - 187, 187 + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 142, + 143, 144, 145, 146, 204, 210, 211, 213, 214, 24, + 55, 56, 179, 4, 24, 24, 182, 162, 162, 162, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 147, 148, 150, 162, 167, 131, 131, 126, 136, + 128, 37, 165, 166, 162, 200, 59, 8, 200, 9, + 21, 10, 11, 12, 13, 14, 15, 16, 17, 147, + 148, 149, 153, 162, 162, 200, 162, 162, 207, 200, + 200, 200, 200, 200, 200, 200, 162, 162, 162, 200, + 200, 153, 99, 100, 126, 132, 176, 177, 175, 27, + 28, 3, 4, 141, 4, 7, 26, 38, 39, 101, + 115, 120, 121, 122, 130, 133, 135, 138, 142, 143, + 144, 145, 146, 168, 198, 174, 164, 164, 164, 37, + 162, 185, 186, 187, 126, 129, 3, 4, 7, 26, + 27, 28, 38, 39, 61, 133, 168, 197, 198, 199, + 199, 199, 199, 160, 126, 155, 126, 155, 199, 130, + 126, 126, 126, 126, 126, 126, 126, 126, 199, 199, + 199, 36, 126, 160, 162, 200, 24, 126, 158, 158, + 158, 128, 128, 128, 128, 128, 132, 167, 169, 169, + 136, 169, 24, 128, 128, 128, 128, 128, 158, 132, + 134, 183, 184, 126, 129, 37, 63, 196, 169, 126, + 126, 199, 15, 57, 15, 126, 212, 199, 130, 200, + 162, 200, 200, 200, 162, 162, 126, 126, 126, 162, + 200, 199, 199, 126, 34, 57, 156, 159, 167, 167, + 167, 167, 167, 126, 132, 134, 136, 167, 167, 167, + 167, 167, 37, 185, 156, 157, 24, 134, 21, 21, + 128, 199, 4, 199, 200, 208, 126, 199, 126, 126, + 126, 199, 199, 199, 128, 162, 24, 4, 158, 212, + 126, 126, 126, 126, 167, 126, 126, 126, 36, 126, + 57, 154, 126, 199, 199, 208, 209, 126, 155, 155, + 126, 199, 126, 200, 200, 200, 209, 199, 129, 167, + 167, 167, 167, 167, 167, 167, 162, 167, 4, 24, + 126, 130, 129, 200, 132, 199, 129, 126, 129, 126, + 126, 129, 129, 129, 129, 129, 21, 132, 149, 205, + 36, 132, 167, 167, 167, 199, 197, 132, 149, 21, + 129, 129, 129, 126, 197, 199, 21, 126, 76, 199, + 21, 21, 199, 199 }; #define yyerrok (yyerrstatus = 0) @@ -3032,7 +3088,7 @@ yyreduce: switch (yyn) { case 3: -#line 1164 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1169 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range! GEN_ERROR("Value too large for type!"); @@ -3042,7 +3098,7 @@ yyreduce: break; case 5: -#line 1173 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1178 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UInt64Val) > (uint64_t)INT64_MAX) // Outside of my range! GEN_ERROR("Value too large for type!"); @@ -3051,99 +3107,99 @@ yyreduce: ;} break; - case 39: -#line 1197 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 51: +#line 1203 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[-1].StrVal); CHECK_FOR_ERROR ;} break; - case 40: -#line 1201 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 52: +#line 1207 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; CHECK_FOR_ERROR ;} break; - case 41: -#line 1206 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 53: +#line 1212 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; - case 42: -#line 1207 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 54: +#line 1213 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; - case 43: -#line 1208 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 55: +#line 1214 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; - case 44: -#line 1209 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 56: +#line 1215 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;} break; - case 45: -#line 1210 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 57: +#line 1216 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; - case 46: -#line 1211 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 58: +#line 1217 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; - case 47: -#line 1212 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 59: +#line 1218 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; - case 48: -#line 1213 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 60: +#line 1219 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; - case 49: -#line 1215 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 61: +#line 1221 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; - case 50: -#line 1216 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 62: +#line 1222 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; - case 51: -#line 1217 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 63: +#line 1223 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::CSRet; ;} break; - case 52: -#line 1218 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 64: +#line 1224 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::Fast; ;} break; - case 53: -#line 1219 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 65: +#line 1225 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::Cold; ;} break; - case 54: -#line 1220 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 66: +#line 1226 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::X86_StdCall; ;} break; - case 55: -#line 1221 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 67: +#line 1227 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::X86_FastCall; ;} break; - case 56: -#line 1222 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 68: +#line 1228 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val)) GEN_ERROR("Calling conv too large!"); @@ -3152,13 +3208,13 @@ yyreduce: ;} break; - case 57: -#line 1231 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 69: +#line 1237 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = 0; ;} break; - case 58: -#line 1232 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 70: +#line 1238 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3167,13 +3223,13 @@ yyreduce: ;} break; - case 59: -#line 1238 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 71: +#line 1244 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = 0; ;} break; - case 60: -#line 1239 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 72: +#line 1245 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3182,8 +3238,8 @@ yyreduce: ;} break; - case 61: -#line 1247 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 73: +#line 1253 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { for (unsigned i = 0, e = strlen((yyvsp[0].StrVal)); i != e; ++i) if ((yyvsp[0].StrVal)[i] == '"' || (yyvsp[0].StrVal)[i] == '\\') @@ -3193,28 +3249,28 @@ yyreduce: ;} break; - case 62: -#line 1255 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 74: +#line 1261 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; - case 63: -#line 1256 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 75: +#line 1262 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[0].StrVal); ;} break; - case 64: -#line 1261 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 76: +#line 1267 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" {;} break; - case 65: -#line 1262 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 77: +#line 1268 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" {;} break; - case 66: -#line 1263 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 78: +#line 1269 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurGV->setSection((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -3222,8 +3278,8 @@ yyreduce: ;} break; - case 67: -#line 1268 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 79: +#line 1274 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val))) GEN_ERROR("Alignment must be a power of two!"); @@ -3232,186 +3288,209 @@ yyreduce: ;} break; - case 69: -#line 1282 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" - { (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); ;} + case 81: +#line 1288 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeVal).type = new PATypeHolder((yyvsp[0].TypeVal).type->get()); + (yyval.TypeVal).signedness = (yyvsp[0].TypeVal).signedness; +;} break; - case 71: -#line 1283 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" - { (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); ;} + case 83: +#line 1292 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeVal).type = new PATypeHolder((yyvsp[0].TypeVal).type->get()); + (yyval.TypeVal).signedness = (yyvsp[0].TypeVal).signedness; +;} break; - case 72: -#line 1285 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 84: +#line 1297 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); + GEN_ERROR("Invalid upreference in type: " + + ((yyvsp[0].TypeVal).type->get())->getDescription()); (yyval.TypeVal) = (yyvsp[0].TypeVal); CHECK_FOR_ERROR - ;} +;} break; - case 86: -#line 1297 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 98: +#line 1310 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - (yyval.TypeVal) = new PATypeHolder(OpaqueType::get()); + (yyval.TypeVal).type = new PATypeHolder(OpaqueType::get()); + (yyval.TypeVal).signedness = isSignless; CHECK_FOR_ERROR ;} break; - case 87: -#line 1301 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 99: +#line 1315 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); + (yyval.TypeVal) = (yyvsp[0].TypeVal); CHECK_FOR_ERROR ;} break; - case 88: -#line 1305 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 100: +#line 1319 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Named types are also simple types... const Type* tmp = getTypeVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR - (yyval.TypeVal) = new PATypeHolder(tmp); + (yyval.TypeVal).type = new PATypeHolder(tmp); + (yyval.TypeVal).signedness = isSignless; ;} break; - case 89: -#line 1313 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 101: +#line 1328 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Type UpReference if ((yyvsp[0].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range!"); OpaqueType *OT = OpaqueType::get(); // Use temporary placeholder UpRefs.push_back(UpRefRecord((unsigned)(yyvsp[0].UInt64Val), OT)); // Add to vector... - (yyval.TypeVal) = new PATypeHolder(OT); + (yyval.TypeVal).type = new PATypeHolder(OT); + (yyval.TypeVal).signedness = isSignless; UR_OUT("New Upreference!\n"); CHECK_FOR_ERROR ;} break; - case 90: -#line 1321 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 102: +#line 1337 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Function derived type? std::vector<const Type*> Params; - for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-1].TypeList)->begin(), + for (std::list<TypeInfo>::iterator I = (yyvsp[-1].TypeList)->begin(), E = (yyvsp[-1].TypeList)->end(); I != E; ++I) - Params.push_back(*I); + Params.push_back(I->type->get()); bool isVarArg = Params.size() && Params.back() == Type::VoidTy; if (isVarArg) Params.pop_back(); - (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FunctionType::get(*(yyvsp[-3].TypeVal),Params,isVarArg))); + (yyval.TypeVal).type = new PATypeHolder(HandleUpRefs( + FunctionType::get((yyvsp[-3].TypeVal).type->get(),Params,isVarArg))); + (yyval.TypeVal).signedness = isSignless; delete (yyvsp[-1].TypeList); // Delete the argument list - delete (yyvsp[-3].TypeVal); // Delete the return type handle + delete (yyvsp[-3].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 91: -#line 1334 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 103: +#line 1352 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Sized array type? - (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val)))); - delete (yyvsp[-1].TypeVal); + (yyval.TypeVal).type = new PATypeHolder(HandleUpRefs( + ArrayType::get((yyvsp[-1].TypeVal).type->get(), (unsigned)(yyvsp[-3].UInt64Val)))); + (yyval.TypeVal).signedness = isSignless; + delete (yyvsp[-1].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 92: -#line 1339 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 104: +#line 1359 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Packed array type? - const llvm::Type* ElemTy = (yyvsp[-1].TypeVal)->get(); - if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val)) - GEN_ERROR("Unsigned result not equal to signed result"); - if (!ElemTy->isPrimitiveType()) - GEN_ERROR("Elemental type of a PackedType must be primitive"); - if (!isPowerOf2_32((yyvsp[-3].UInt64Val))) - GEN_ERROR("Vector length should be a power of 2!"); - (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PackedType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val)))); - delete (yyvsp[-1].TypeVal); - CHECK_FOR_ERROR + const llvm::Type* ElemTy = (yyvsp[-1].TypeVal).type->get(); + if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val)) + GEN_ERROR("Unsigned result not equal to signed result"); + if (!ElemTy->isPrimitiveType()) + GEN_ERROR("Elemental type of a PackedType must be primitive"); + if (!isPowerOf2_32((yyvsp[-3].UInt64Val))) + GEN_ERROR("Vector length should be a power of 2!"); + (yyval.TypeVal).type = new PATypeHolder(HandleUpRefs( + PackedType::get((yyvsp[-1].TypeVal).type->get(), (unsigned)(yyvsp[-3].UInt64Val)))); + (yyval.TypeVal).signedness = isSignless; + delete (yyvsp[-1].TypeVal).type; + CHECK_FOR_ERROR ;} break; - case 93: -#line 1351 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 105: +#line 1373 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Structure type? std::vector<const Type*> Elements; - for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-1].TypeList)->begin(), + for (std::list<TypeInfo>::iterator I = (yyvsp[-1].TypeList)->begin(), E = (yyvsp[-1].TypeList)->end(); I != E; ++I) - Elements.push_back(*I); + Elements.push_back(I->type->get()); - (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements))); + (yyval.TypeVal).type = new PATypeHolder(HandleUpRefs(StructType::get(Elements))); + (yyval.TypeVal).signedness = isSignless; delete (yyvsp[-1].TypeList); CHECK_FOR_ERROR ;} break; - case 94: -#line 1361 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 106: +#line 1384 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Empty structure type? - (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>())); + (yyval.TypeVal).type = new PATypeHolder(StructType::get(std::vector<const Type*>())); + (yyval.TypeVal).signedness = isSignless; CHECK_FOR_ERROR ;} break; - case 95: -#line 1365 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 107: +#line 1389 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Pointer type? - if (*(yyvsp[-1].TypeVal) == Type::LabelTy) + if ((yyvsp[-1].TypeVal).type->get() == Type::LabelTy) GEN_ERROR("Cannot form a pointer to a basic block"); - (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PointerType::get(*(yyvsp[-1].TypeVal)))); - delete (yyvsp[-1].TypeVal); + (yyval.TypeVal).type = new PATypeHolder(HandleUpRefs(PointerType::get((yyvsp[-1].TypeVal).type->get()))); + (yyval.TypeVal).signedness = (yyvsp[-1].TypeVal).signedness; + delete (yyvsp[-1].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 96: -#line 1376 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 108: +#line 1401 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - (yyval.TypeList) = new std::list<PATypeHolder>(); - (yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); + (yyval.TypeList) = new std::list<TypeInfo>(); + (yyval.TypeList)->push_back((yyvsp[0].TypeVal)); CHECK_FOR_ERROR ;} break; - case 97: -#line 1381 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 109: +#line 1406 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); + ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back((yyvsp[0].TypeVal)); CHECK_FOR_ERROR ;} break; - case 99: -#line 1388 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 111: +#line 1413 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(Type::VoidTy); + TypeInfo TI; + TI.type = new PATypeHolder(Type::VoidTy); TI.signedness = isSignless; + ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(TI); CHECK_FOR_ERROR ;} break; - case 100: -#line 1392 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 112: +#line 1419 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - ((yyval.TypeList) = new std::list<PATypeHolder>())->push_back(Type::VoidTy); + TypeInfo TI; + TI.type = new PATypeHolder(Type::VoidTy); TI.signedness = isSignless; + ((yyval.TypeList) = new std::list<TypeInfo>())->push_back(TI); CHECK_FOR_ERROR ;} break; - case 101: -#line 1396 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 113: +#line 1425 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - (yyval.TypeList) = new std::list<PATypeHolder>(); + (yyval.TypeList) = new std::list<TypeInfo>(); CHECK_FOR_ERROR ;} break; - case 102: -#line 1407 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 114: +#line 1436 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr - const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-3].TypeVal)->get()); + const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-3].TypeVal).type->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + - (*(yyvsp[-3].TypeVal))->getDescription() + "'!"); + ((yyvsp[-3].TypeVal).type->get())->getDescription() + "'!"); const Type *ETy = ATy->getElementType(); int NumElements = ATy->getNumElements(); @@ -3430,36 +3509,36 @@ yyreduce: } (yyval.ConstVal) = ConstantArray::get(ATy, *(yyvsp[-1].ConstVector)); - delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector); + delete (yyvsp[-3].TypeVal).type; delete (yyvsp[-1].ConstVector); CHECK_FOR_ERROR ;} break; - case 103: -#line 1433 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 115: +#line 1462 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal)->get()); + const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal).type->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + - (*(yyvsp[-2].TypeVal))->getDescription() + "'!"); + ((yyvsp[-2].TypeVal).type->get())->getDescription() + "'!"); int NumElements = ATy->getNumElements(); if (NumElements != -1 && NumElements != 0) GEN_ERROR("Type mismatch: constant sized array initialized with 0" " arguments, but has size of " + itostr(NumElements) +"!"); (yyval.ConstVal) = ConstantArray::get(ATy, std::vector<Constant*>()); - delete (yyvsp[-2].TypeVal); + delete (yyvsp[-2].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 104: -#line 1447 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 116: +#line 1476 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal)->get()); + const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal).type->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + - (*(yyvsp[-2].TypeVal))->getDescription() + "'!"); + ((yyvsp[-2].TypeVal).type->get())->getDescription() + "'!"); int NumElements = ATy->getNumElements(); const Type *ETy = ATy->getElementType(); @@ -3482,18 +3561,18 @@ yyreduce: } free((yyvsp[0].StrVal)); (yyval.ConstVal) = ConstantArray::get(ATy, Vals); - delete (yyvsp[-2].TypeVal); + delete (yyvsp[-2].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 105: -#line 1477 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 117: +#line 1506 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr - const PackedType *PTy = dyn_cast<PackedType>((yyvsp[-3].TypeVal)->get()); + const PackedType *PTy = dyn_cast<PackedType>((yyvsp[-3].TypeVal).type->get()); if (PTy == 0) GEN_ERROR("Cannot make packed constant with type: '" + - (*(yyvsp[-3].TypeVal))->getDescription() + "'!"); + (yyvsp[-3].TypeVal).type->get()->getDescription() + "'!"); const Type *ETy = PTy->getElementType(); int NumElements = PTy->getNumElements(); @@ -3512,18 +3591,18 @@ yyreduce: } (yyval.ConstVal) = ConstantPacked::get(PTy, *(yyvsp[-1].ConstVector)); - delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector); + delete (yyvsp[-3].TypeVal).type; delete (yyvsp[-1].ConstVector); CHECK_FOR_ERROR ;} break; - case 106: -#line 1503 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 118: +#line 1532 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal)->get()); + const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal).type->get()); if (STy == 0) GEN_ERROR("Cannot make struct constant with type: '" + - (*(yyvsp[-3].TypeVal))->getDescription() + "'!"); + (yyvsp[-3].TypeVal).type->get()->getDescription() + "'!"); if ((yyvsp[-1].ConstVector)->size() != STy->getNumContainedTypes()) GEN_ERROR("Illegal number of initializers for structure type!"); @@ -3537,55 +3616,55 @@ yyreduce: " of structure initializer!"); (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-1].ConstVector)); - delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector); + delete (yyvsp[-3].TypeVal).type; delete (yyvsp[-1].ConstVector); CHECK_FOR_ERROR ;} break; - case 107: -#line 1524 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 119: +#line 1553 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - const StructType *STy = dyn_cast<StructType>((yyvsp[-2].TypeVal)->get()); + const StructType *STy = dyn_cast<StructType>((yyvsp[-2].TypeVal).type->get()); if (STy == 0) GEN_ERROR("Cannot make struct constant with type: '" + - (*(yyvsp[-2].TypeVal))->getDescription() + "'!"); + (yyvsp[-2].TypeVal).type->get()->getDescription() + "'!"); if (STy->getNumContainedTypes() != 0) GEN_ERROR("Illegal number of initializers for structure type!"); (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>()); - delete (yyvsp[-2].TypeVal); + delete (yyvsp[-2].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 108: -#line 1537 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 120: +#line 1566 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - const PointerType *PTy = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get()); + const PointerType *PTy = dyn_cast<PointerType>((yyvsp[-1].TypeVal).type->get()); if (PTy == 0) GEN_ERROR("Cannot make null pointer constant with type: '" + - (*(yyvsp[-1].TypeVal))->getDescription() + "'!"); + (yyvsp[-1].TypeVal).type->get()->getDescription() + "'!"); (yyval.ConstVal) = ConstantPointerNull::get(PTy); - delete (yyvsp[-1].TypeVal); + delete (yyvsp[-1].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 109: -#line 1547 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 121: +#line 1576 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - (yyval.ConstVal) = UndefValue::get((yyvsp[-1].TypeVal)->get()); - delete (yyvsp[-1].TypeVal); + (yyval.ConstVal) = UndefValue::get((yyvsp[-1].TypeVal).type->get()); + delete (yyvsp[-1].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 110: -#line 1552 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 122: +#line 1581 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - const PointerType *Ty = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get()); + const PointerType *Ty = dyn_cast<PointerType>((yyvsp[-1].TypeVal).type->get()); if (Ty == 0) GEN_ERROR("Global const reference must be a pointer type!"); @@ -3642,97 +3721,112 @@ yyreduce: } (yyval.ConstVal) = cast<GlobalValue>(V); - delete (yyvsp[-1].TypeVal); // Free the type handle + delete (yyvsp[-1].TypeVal).type; // Free the type handle CHECK_FOR_ERROR ;} break; - case 111: -#line 1613 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 123: +#line 1642 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - if ((yyvsp[-1].TypeVal)->get() != (yyvsp[0].ConstVal)->getType()) + if ((yyvsp[-1].TypeVal).type->get() != (yyvsp[0].ConstVal)->getType()) GEN_ERROR("Mismatched types for constant expression!"); (yyval.ConstVal) = (yyvsp[0].ConstVal); - delete (yyvsp[-1].TypeVal); + delete (yyvsp[-1].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 112: -#line 1620 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 124: +#line 1649 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - const Type *Ty = (yyvsp[-1].TypeVal)->get(); + const Type *Ty = (yyvsp[-1].TypeVal).type->get(); if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty)) GEN_ERROR("Cannot create a null initialized value of this type!"); (yyval.ConstVal) = Constant::getNullValue(Ty); - delete (yyvsp[-1].TypeVal); + delete (yyvsp[-1].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 113: -#line 1629 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 125: +#line 1658 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // integral constants - if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val))) + if (!ConstantInt::isValueValidForType((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].SInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); - (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val)); + (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].SInt64Val)); CHECK_FOR_ERROR ;} break; - case 114: -#line 1635 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 126: +#line 1664 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // integral constants - if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val))) + if (!ConstantInt::isValueValidForType((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].UInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); - (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val)); + (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].UInt64Val)); CHECK_FOR_ERROR ;} break; - case 115: -#line 1641 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 127: +#line 1670 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Boolean constants (yyval.ConstVal) = ConstantBool::getTrue(); CHECK_FOR_ERROR ;} break; - case 116: -#line 1645 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 128: +#line 1674 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Boolean constants (yyval.ConstVal) = ConstantBool::getFalse(); CHECK_FOR_ERROR ;} break; - case 117: -#line 1649 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 129: +#line 1678 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Float & Double constants - if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal))) + if (!ConstantFP::isValueValidForType((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].FPVal))) GEN_ERROR("Floating point constant invalid for type!!"); - (yyval.ConstVal) = ConstantFP::get((yyvsp[-1].PrimType), (yyvsp[0].FPVal)); + (yyval.ConstVal) = ConstantFP::get((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].FPVal)); CHECK_FOR_ERROR ;} break; - case 118: -#line 1657 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 130: +#line 1686 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - if (!(yyvsp[-3].ConstVal)->getType()->isFirstClassType()) + Constant *Val = (yyvsp[-3].ConstVal); + const Type *Ty = (yyvsp[-1].TypeVal).type->get(); + if (!Val->getType()->isFirstClassType()) GEN_ERROR("cast constant expression from a non-primitive type: '" + - (yyvsp[-3].ConstVal)->getType()->getDescription() + "'!"); - if (!(yyvsp[-1].TypeVal)->get()->isFirstClassType()) + Val->getType()->getDescription() + "'!"); + if (!Ty->isFirstClassType()) GEN_ERROR("cast constant expression to a non-primitive type: '" + - (yyvsp[-1].TypeVal)->get()->getDescription() + "'!"); - (yyval.ConstVal) = ConstantExpr::getCast((yyvsp[-3].ConstVal), (yyvsp[-1].TypeVal)->get()); - delete (yyvsp[-1].TypeVal); - CHECK_FOR_ERROR + Ty->getDescription() + "'!"); + if ((yyvsp[-5].CastOpVal).obsolete) { + if (Ty == Type::BoolTy) { + // The previous definition of cast to bool was a compare against zero. + // We have to retain that semantic so we do it here. + (yyval.ConstVal) = ConstantExpr::get(Instruction::SetNE, Val, + Constant::getNullValue(Val->getType())); + } else if (Val->getType()->isFloatingPoint() && isa<PointerType>(Ty)) { + Constant *CE = ConstantExpr::getFPToUI(Val, Type::ULongTy); + (yyval.ConstVal) = ConstantExpr::getIntToPtr(CE, Ty); + } else { + (yyval.ConstVal) = ConstantExpr::getCast(Val, Ty); + } + } else { + (yyval.ConstVal) = ConstantExpr::getCast((yyvsp[-5].CastOpVal).opcode, (yyvsp[-3].ConstVal), (yyvsp[-1].TypeVal).type->get()); + } + delete (yyvsp[-1].TypeVal).type; ;} break; - case 119: -#line 1668 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 131: +#line 1712 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if (!isa<PointerType>((yyvsp[-2].ConstVal)->getType())) GEN_ERROR("GetElementPtr requires a pointer operand!"); @@ -3767,8 +3861,8 @@ yyreduce: ;} break; - case 120: -#line 1700 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 132: +#line 1744 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-5].ConstVal)->getType() != Type::BoolTy) GEN_ERROR("Select condition must be of boolean type!"); @@ -3779,14 +3873,14 @@ yyreduce: ;} break; - case 121: -#line 1708 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 133: +#line 1752 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Binary operator types must match!"); // First, make sure we're dealing with the right opcode by upgrading from // obsolete versions. - sanitizeOpCode((yyvsp[-5].BinaryOpVal),(yyvsp[-3].ConstVal)->getType()); + sanitizeOpcode((yyvsp[-5].BinaryOpVal), (yyvsp[-3].ConstVal)->getType()); CHECK_FOR_ERROR; // HACK: llvm 1.3 and earlier used to emit invalid pointer constant exprs. @@ -3810,8 +3904,8 @@ yyreduce: ;} break; - case 122: -#line 1735 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 134: +#line 1779 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Logical operator types must match!"); @@ -3825,8 +3919,8 @@ yyreduce: ;} break; - case 123: -#line 1746 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 135: +#line 1790 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("setcc operand types must match!"); @@ -3835,23 +3929,23 @@ yyreduce: ;} break; - case 124: -#line 1752 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 136: +#line 1796 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-1].ConstVal)->getType() != Type::UByteTy) GEN_ERROR("Shift count for shift constant must be unsigned byte!"); if (!(yyvsp[-3].ConstVal)->getType()->isInteger()) GEN_ERROR("Shift constant expression requires integer operand!"); // Handle opcode upgrade situations - sanitizeOpCode((yyvsp[-5].OtherOpVal), (yyvsp[-3].ConstVal)->getType()); + sanitizeOpcode((yyvsp[-5].OtherOpVal), (yyvsp[-3].ConstVal)->getType()); CHECK_FOR_ERROR; (yyval.ConstVal) = ConstantExpr::get((yyvsp[-5].OtherOpVal).opcode, (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)); CHECK_FOR_ERROR ;} break; - case 125: -#line 1763 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 137: +#line 1807 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid extractelement operands!"); @@ -3860,8 +3954,8 @@ yyreduce: ;} break; - case 126: -#line 1769 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 138: +#line 1813 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid insertelement operands!"); @@ -3870,8 +3964,8 @@ yyreduce: ;} break; - case 127: -#line 1775 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 139: +#line 1819 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid shufflevector operands!"); @@ -3880,16 +3974,16 @@ yyreduce: ;} break; - case 128: -#line 1784 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 140: +#line 1828 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal)); CHECK_FOR_ERROR ;} break; - case 129: -#line 1788 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 141: +#line 1832 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ConstVector) = new std::vector<Constant*>(); (yyval.ConstVector)->push_back((yyvsp[0].ConstVal)); @@ -3897,18 +3991,18 @@ yyreduce: ;} break; - case 130: -#line 1796 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 142: +#line 1840 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; ;} break; - case 131: -#line 1796 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 143: +#line 1840 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; ;} break; - case 132: -#line 1806 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 144: +#line 1850 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = ParserResult = (yyvsp[0].ModuleVal); CurModule.ModuleDone(); @@ -3916,8 +4010,8 @@ yyreduce: ;} break; - case 133: -#line 1814 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 145: +#line 1858 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); CurFun.FunctionDone(); @@ -3925,32 +4019,32 @@ yyreduce: ;} break; - case 134: -#line 1819 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 146: +#line 1863 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); CHECK_FOR_ERROR ;} break; - case 135: -#line 1823 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 147: +#line 1867 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = (yyvsp[-3].ModuleVal); CHECK_FOR_ERROR ;} break; - case 136: -#line 1827 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 148: +#line 1871 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); CHECK_FOR_ERROR ;} break; - case 137: -#line 1831 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 149: +#line 1875 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = CurModule.CurrentModule; // Emit an error if there are any unresolved types left. @@ -3966,8 +4060,8 @@ yyreduce: ;} break; - case 138: -#line 1846 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 150: +#line 1890 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Eagerly resolve types. This is not an optimization, this is a // requirement that is due to the fact that we could have this: @@ -3978,36 +4072,36 @@ yyreduce: // If types are not resolved eagerly, then the two types will not be // determined to be the same type! // - ResolveTypeTo((yyvsp[-2].StrVal), *(yyvsp[0].TypeVal)); + ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].TypeVal).type->get()); - if (!setTypeName(*(yyvsp[0].TypeVal), (yyvsp[-2].StrVal)) && !(yyvsp[-2].StrVal)) { + if (!setTypeName((yyvsp[0].TypeVal).type->get(), (yyvsp[-2].StrVal)) && !(yyvsp[-2].StrVal)) { CHECK_FOR_ERROR // If this is a named type that is not a redefinition, add it to the slot // table. - CurModule.Types.push_back(*(yyvsp[0].TypeVal)); + CurModule.Types.push_back((yyvsp[0].TypeVal)); + } else { + delete (yyvsp[0].TypeVal).type; } - - delete (yyvsp[0].TypeVal); CHECK_FOR_ERROR ;} break; - case 139: -#line 1868 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 151: +#line 1912 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Function prototypes can be in const pool CHECK_FOR_ERROR ;} break; - case 140: -#line 1871 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 152: +#line 1915 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Asm blocks can be in the const pool CHECK_FOR_ERROR ;} break; - case 141: -#line 1874 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 153: +#line 1918 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!"); @@ -4016,87 +4110,90 @@ yyreduce: ;} break; - case 142: -#line 1879 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 154: +#line 1923 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ;} break; - case 143: -#line 1882 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 155: +#line 1926 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalLinkage, (yyvsp[-1].BoolVal), *(yyvsp[0].TypeVal), 0); + CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalLinkage, (yyvsp[-1].BoolVal), + (yyvsp[0].TypeVal).type->get(), 0); CHECK_FOR_ERROR - delete (yyvsp[0].TypeVal); + delete (yyvsp[0].TypeVal).type; ;} break; - case 144: -#line 1886 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 156: +#line 1931 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; CHECK_FOR_ERROR ;} break; - case 145: -#line 1890 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 157: +#line 1935 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::DLLImportLinkage, (yyvsp[-1].BoolVal), *(yyvsp[0].TypeVal), 0); + CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::DLLImportLinkage, (yyvsp[-1].BoolVal), + (yyvsp[0].TypeVal).type->get(), 0); CHECK_FOR_ERROR - delete (yyvsp[0].TypeVal); + delete (yyvsp[0].TypeVal).type; ;} break; - case 146: -#line 1894 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 158: +#line 1940 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; CHECK_FOR_ERROR ;} break; - case 147: -#line 1898 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 159: +#line 1944 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurGV = - ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalWeakLinkage, (yyvsp[-1].BoolVal), *(yyvsp[0].TypeVal), 0); + ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalWeakLinkage, (yyvsp[-1].BoolVal), + (yyvsp[0].TypeVal).type->get(), 0); CHECK_FOR_ERROR - delete (yyvsp[0].TypeVal); + delete (yyvsp[0].TypeVal).type; ;} break; - case 148: -#line 1903 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 160: +#line 1950 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; CHECK_FOR_ERROR ;} break; - case 149: -#line 1907 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 161: +#line 1954 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 150: -#line 1910 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 162: +#line 1957 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 151: -#line 1913 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 163: +#line 1960 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { ;} break; - case 152: -#line 1917 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 164: +#line 1964 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true); @@ -4111,26 +4208,26 @@ yyreduce: ;} break; - case 153: -#line 1930 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 165: +#line 1977 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.Endianness) = Module::BigEndian; ;} break; - case 154: -#line 1931 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 166: +#line 1978 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.Endianness) = Module::LittleEndian; ;} break; - case 155: -#line 1933 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 167: +#line 1980 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setEndianness((yyvsp[0].Endianness)); CHECK_FOR_ERROR ;} break; - case 156: -#line 1937 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 168: +#line 1984 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UInt64Val) == 32) CurModule.CurrentModule->setPointerSize(Module::Pointer32); @@ -4142,24 +4239,24 @@ yyreduce: ;} break; - case 157: -#line 1946 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 169: +#line 1993 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); ;} break; - case 158: -#line 1950 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 170: +#line 1997 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); ;} break; - case 160: -#line 1957 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 172: +#line 2004 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4167,8 +4264,8 @@ yyreduce: ;} break; - case 161: -#line 1962 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 173: +#line 2009 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4176,30 +4273,30 @@ yyreduce: ;} break; - case 162: -#line 1967 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 174: +#line 2014 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 166: -#line 1977 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 178: +#line 2024 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; - case 167: -#line 1979 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 179: +#line 2026 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - if (*(yyvsp[-1].TypeVal) == Type::VoidTy) + if ((yyvsp[-1].TypeVal).type->get() == Type::VoidTy) GEN_ERROR("void typed arguments are invalid!"); - (yyval.ArgVal) = new std::pair<PATypeHolder*, char*>((yyvsp[-1].TypeVal), (yyvsp[0].StrVal)); + (yyval.ArgVal) = new std::pair<TypeInfo, char*>((yyvsp[-1].TypeVal), (yyvsp[0].StrVal)); CHECK_FOR_ERROR ;} break; - case 168: -#line 1986 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 180: +#line 2033 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); (yyvsp[-2].ArgList)->push_back(*(yyvsp[0].ArgVal)); @@ -4208,74 +4305,80 @@ yyreduce: ;} break; - case 169: -#line 1992 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 181: +#line 2039 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - (yyval.ArgList) = new std::vector<std::pair<PATypeHolder*,char*> >(); + (yyval.ArgList) = new std::vector<std::pair<TypeInfo,char*> >(); (yyval.ArgList)->push_back(*(yyvsp[0].ArgVal)); delete (yyvsp[0].ArgVal); CHECK_FOR_ERROR ;} break; - case 170: -#line 1999 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 182: +#line 2046 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[0].ArgList); CHECK_FOR_ERROR ;} break; - case 171: -#line 2003 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 183: +#line 2050 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); - (yyval.ArgList)->push_back(std::pair<PATypeHolder*, - char*>(new PATypeHolder(Type::VoidTy), 0)); + TypeInfo TI; + TI.type = new PATypeHolder(Type::VoidTy); + TI.signedness = isSignless; + (yyval.ArgList)->push_back(std::pair<TypeInfo,char*>(TI,(char*)0)); CHECK_FOR_ERROR ;} break; - case 172: -#line 2009 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 184: +#line 2058 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - (yyval.ArgList) = new std::vector<std::pair<PATypeHolder*,char*> >(); - (yyval.ArgList)->push_back(std::make_pair(new PATypeHolder(Type::VoidTy), (char*)0)); + (yyval.ArgList) = new std::vector<std::pair<TypeInfo,char*> >(); + TypeInfo TI; + TI.type = new PATypeHolder(Type::VoidTy); + TI.signedness = isSignless; + (yyval.ArgList)->push_back(std::make_pair(TI, (char*)0)); CHECK_FOR_ERROR ;} break; - case 173: -#line 2014 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 185: +#line 2066 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = 0; CHECK_FOR_ERROR ;} break; - case 174: -#line 2020 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 186: +#line 2072 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { UnEscapeLexed((yyvsp[-5].StrVal)); std::string FunctionName((yyvsp[-5].StrVal)); free((yyvsp[-5].StrVal)); // Free strdup'd memory! - if (!(*(yyvsp[-6].TypeVal))->isFirstClassType() && *(yyvsp[-6].TypeVal) != Type::VoidTy) + if (!((yyvsp[-6].TypeVal).type->get())->isFirstClassType() && (yyvsp[-6].TypeVal).type->get() != Type::VoidTy) GEN_ERROR("LLVM functions cannot return aggregate types!"); std::vector<const Type*> ParamTypeList; if ((yyvsp[-3].ArgList)) { // If there are arguments... - for (std::vector<std::pair<PATypeHolder*,char*> >::iterator I = (yyvsp[-3].ArgList)->begin(); + for (std::vector<std::pair<TypeInfo,char*> >::iterator I = (yyvsp[-3].ArgList)->begin(); I != (yyvsp[-3].ArgList)->end(); ++I) - ParamTypeList.push_back(I->first->get()); + ParamTypeList.push_back(I->first.type->get()); } bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy; if (isVarArg) ParamTypeList.pop_back(); - const FunctionType *FT = FunctionType::get(*(yyvsp[-6].TypeVal), ParamTypeList, isVarArg); + const FunctionType *FT = FunctionType::get((yyvsp[-6].TypeVal).type->get(), ParamTypeList, + isVarArg); const PointerType *PFT = PointerType::get(FT); - delete (yyvsp[-6].TypeVal); + delete (yyvsp[-6].TypeVal).type; ValID ID; if (!FunctionName.empty()) { @@ -4329,29 +4432,27 @@ yyreduce: // Add all of the arguments we parsed to the function... if ((yyvsp[-3].ArgList)) { // Is null if empty... if (isVarArg) { // Nuke the last entry - assert((yyvsp[-3].ArgList)->back().first->get() == Type::VoidTy && (yyvsp[-3].ArgList)->back().second == 0&& - "Not a varargs marker!"); - delete (yyvsp[-3].ArgList)->back().first; + assert((yyvsp[-3].ArgList)->back().first.type->get() == Type::VoidTy && + (yyvsp[-3].ArgList)->back().second == 0 && "Not a varargs marker!"); + delete (yyvsp[-3].ArgList)->back().first.type; (yyvsp[-3].ArgList)->pop_back(); // Delete the last entry } Function::arg_iterator ArgIt = Fn->arg_begin(); - for (std::vector<std::pair<PATypeHolder*,char*> >::iterator I = (yyvsp[-3].ArgList)->begin(); + for (std::vector<std::pair<TypeInfo,char*> >::iterator I = (yyvsp[-3].ArgList)->begin(); I != (yyvsp[-3].ArgList)->end(); ++I, ++ArgIt) { - delete I->first; // Delete the typeholder... - + delete I->first.type; // Delete the typeholder... setValueName(ArgIt, I->second); // Insert arg into symtab... CHECK_FOR_ERROR InsertValue(ArgIt); } - delete (yyvsp[-3].ArgList); // We're now done with the argument list } CHECK_FOR_ERROR ;} break; - case 177: -#line 2116 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 189: +#line 2167 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -4361,31 +4462,31 @@ yyreduce: ;} break; - case 180: -#line 2126 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 192: +#line 2177 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR ;} break; - case 182: -#line 2132 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 194: +#line 2183 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurFun.Linkage = GlobalValue::DLLImportLinkage; ;} break; - case 183: -#line 2133 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 195: +#line 2184 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurFun.Linkage = GlobalValue::DLLImportLinkage; ;} break; - case 184: -#line 2135 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 196: +#line 2186 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = true; ;} break; - case 185: -#line 2135 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 197: +#line 2186 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; CurFun.FunctionDone(); @@ -4393,100 +4494,95 @@ yyreduce: ;} break; - case 186: -#line 2145 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 198: +#line 2196 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 187: -#line 2149 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 199: +#line 2200 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 188: -#line 2154 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 200: +#line 2205 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // A reference to a direct constant (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val)); CHECK_FOR_ERROR ;} break; - case 189: -#line 2158 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 201: +#line 2209 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val)); CHECK_FOR_ERROR ;} break; - case 190: -#line 2162 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 202: +#line 2213 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Perhaps it's an FP constant? (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal)); CHECK_FOR_ERROR ;} break; - case 191: -#line 2166 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 203: +#line 2217 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create(ConstantBool::getTrue()); CHECK_FOR_ERROR ;} break; - case 192: -#line 2170 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 204: +#line 2221 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create(ConstantBool::getFalse()); CHECK_FOR_ERROR ;} break; - case 193: -#line 2174 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 205: +#line 2225 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createNull(); CHECK_FOR_ERROR ;} break; - case 194: -#line 2178 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 206: +#line 2229 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createUndef(); CHECK_FOR_ERROR ;} break; - case 195: -#line 2182 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 207: +#line 2233 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // A vector zero constant. (yyval.ValIDVal) = ValID::createZeroInit(); CHECK_FOR_ERROR ;} break; - case 196: -#line 2186 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 208: +#line 2237 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized packed vector const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType(); int NumElements = (yyvsp[-1].ConstVector)->size(); PackedType* pt = PackedType::get(ETy, NumElements); PATypeHolder* PTy = new PATypeHolder( - HandleUpRefs( - PackedType::get( - ETy, - NumElements) - ) - ); + HandleUpRefs(PackedType::get( ETy, NumElements))); // Verify all elements are correct type! for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) { @@ -4502,16 +4598,16 @@ yyreduce: ;} break; - case 197: -#line 2211 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 209: +#line 2257 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal)); CHECK_FOR_ERROR ;} break; - case 198: -#line 2215 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 210: +#line 2261 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { char *End = UnEscapeLexed((yyvsp[-2].StrVal), true); std::string AsmStr = std::string((yyvsp[-2].StrVal), End); @@ -4524,48 +4620,48 @@ yyreduce: ;} break; - case 199: -#line 2229 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 211: +#line 2275 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Is it an integer reference...? (yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal)); CHECK_FOR_ERROR ;} break; - case 200: -#line 2233 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 212: +#line 2279 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Is it a named reference...? (yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal)); CHECK_FOR_ERROR ;} break; - case 203: -#line 2245 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 215: +#line 2291 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - (yyval.ValueVal) = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal)); delete (yyvsp[-1].TypeVal); + (yyval.ValueVal) = getVal((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].ValIDVal)); delete (yyvsp[-1].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 204: -#line 2250 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 216: +#line 2296 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR ;} break; - case 205: -#line 2254 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 217: +#line 2300 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Do not allow functions with 0 basic blocks (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR ;} break; - case 206: -#line 2263 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 218: +#line 2309 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal)); CHECK_FOR_ERROR @@ -4578,17 +4674,21 @@ yyreduce: ;} break; - case 207: -#line 2274 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 219: +#line 2320 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { + if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[0].InstVal))) + if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0))) + if (CI2->getParent() == 0) + (yyvsp[-1].BasicBlockVal)->getInstList().push_back(CI2); (yyvsp[-1].BasicBlockVal)->getInstList().push_back((yyvsp[0].InstVal)); (yyval.BasicBlockVal) = (yyvsp[-1].BasicBlockVal); CHECK_FOR_ERROR ;} break; - case 208: -#line 2279 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 220: +#line 2329 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((int)CurFun.NextBBNum++), true); CHECK_FOR_ERROR @@ -4603,8 +4703,8 @@ yyreduce: ;} break; - case 209: -#line 2291 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 221: +#line 2341 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((yyvsp[0].StrVal)), true); CHECK_FOR_ERROR @@ -4619,24 +4719,24 @@ yyreduce: ;} break; - case 210: -#line 2304 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 222: +#line 2354 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Return with a result... (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal)); CHECK_FOR_ERROR ;} break; - case 211: -#line 2308 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 223: +#line 2358 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Return with no result... (yyval.TermInstVal) = new ReturnInst(); CHECK_FOR_ERROR ;} break; - case 212: -#line 2312 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 224: +#line 2362 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Unconditional Branch... BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR @@ -4644,8 +4744,8 @@ yyreduce: ;} break; - case 213: -#line 2317 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 225: +#line 2367 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal)); CHECK_FOR_ERROR @@ -4657,10 +4757,10 @@ yyreduce: ;} break; - case 214: -#line 2326 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 226: +#line 2376 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - Value* tmpVal = getVal((yyvsp[-7].PrimType), (yyvsp[-6].ValIDVal)); + Value* tmpVal = getVal((yyvsp[-7].TypeVal).type->get(), (yyvsp[-6].ValIDVal)); CHECK_FOR_ERROR BasicBlock* tmpBB = getBBVal((yyvsp[-3].ValIDVal)); CHECK_FOR_ERROR @@ -4680,10 +4780,10 @@ yyreduce: ;} break; - case 215: -#line 2345 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 227: +#line 2395 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - Value* tmpVal = getVal((yyvsp[-6].PrimType), (yyvsp[-5].ValIDVal)); + Value* tmpVal = getVal((yyvsp[-6].TypeVal).type->get(), (yyvsp[-5].ValIDVal)); CHECK_FOR_ERROR BasicBlock* tmpBB = getBBVal((yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR @@ -4693,13 +4793,13 @@ yyreduce: ;} break; - case 216: -#line 2355 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 228: +#line 2405 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { const PointerType *PFTy; const FunctionType *Ty; - if (!(PFTy = dyn_cast<PointerType>((yyvsp[-10].TypeVal)->get())) || + if (!(PFTy = dyn_cast<PointerType>((yyvsp[-10].TypeVal).type->get())) || !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) { // Pull out the types of all of the arguments... std::vector<const Type*> ParamTypes; @@ -4712,7 +4812,7 @@ yyreduce: bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; if (isVarArg) ParamTypes.pop_back(); - Ty = FunctionType::get((yyvsp[-10].TypeVal)->get(), ParamTypes, isVarArg); + Ty = FunctionType::get((yyvsp[-10].TypeVal).type->get(), ParamTypes, isVarArg); PFTy = PointerType::get(Ty); } @@ -4746,33 +4846,33 @@ yyreduce: } cast<InvokeInst>((yyval.TermInstVal))->setCallingConv((yyvsp[-11].UIntVal)); - delete (yyvsp[-10].TypeVal); + delete (yyvsp[-10].TypeVal).type; delete (yyvsp[-7].ValueList); CHECK_FOR_ERROR ;} break; - case 217: -#line 2410 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 229: +#line 2460 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnwindInst(); CHECK_FOR_ERROR ;} break; - case 218: -#line 2414 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 230: +#line 2464 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnreachableInst(); CHECK_FOR_ERROR ;} break; - case 219: -#line 2421 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 231: +#line 2471 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = (yyvsp[-5].JumpTable); - Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); + Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].TypeVal).type->get(), (yyvsp[-3].ValIDVal))); CHECK_FOR_ERROR if (V == 0) GEN_ERROR("May only switch on a constant pool value!"); @@ -4783,11 +4883,11 @@ yyreduce: ;} break; - case 220: -#line 2432 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 232: +#line 2482 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >(); - Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); + Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].TypeVal).type->get(), (yyvsp[-3].ValIDVal))); CHECK_FOR_ERROR if (V == 0) @@ -4799,8 +4899,8 @@ yyreduce: ;} break; - case 221: -#line 2445 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 233: +#line 2495 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Is this definition named?? if so, assign the name... setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal)); @@ -4811,21 +4911,21 @@ yyreduce: ;} break; - case 222: -#line 2454 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 234: +#line 2504 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Used for PHI nodes (yyval.PHIList) = new std::list<std::pair<Value*, BasicBlock*> >(); - Value* tmpVal = getVal(*(yyvsp[-5].TypeVal), (yyvsp[-3].ValIDVal)); + Value* tmpVal = getVal((yyvsp[-5].TypeVal).type->get(), (yyvsp[-3].ValIDVal)); CHECK_FOR_ERROR BasicBlock* tmpBB = getBBVal((yyvsp[-1].ValIDVal)); CHECK_FOR_ERROR (yyval.PHIList)->push_back(std::make_pair(tmpVal, tmpBB)); - delete (yyvsp[-5].TypeVal); + delete (yyvsp[-5].TypeVal).type; ;} break; - case 223: -#line 2463 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 235: +#line 2513 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.PHIList) = (yyvsp[-6].PHIList); Value* tmpVal = getVal((yyvsp[-6].PHIList)->front().first->getType(), (yyvsp[-3].ValIDVal)); @@ -4836,16 +4936,16 @@ yyreduce: ;} break; - case 224: -#line 2473 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 236: +#line 2523 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { // Used for call statements, and memory insts... (yyval.ValueList) = new std::vector<Value*>(); (yyval.ValueList)->push_back((yyvsp[0].ValueVal)); ;} break; - case 225: -#line 2477 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 237: +#line 2527 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = (yyvsp[-2].ValueList); (yyvsp[-2].ValueList)->push_back((yyvsp[0].ValueVal)); @@ -4853,92 +4953,92 @@ yyreduce: ;} break; - case 227: -#line 2484 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 239: +#line 2534 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = 0; ;} break; - case 228: -#line 2486 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 240: +#line 2536 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 229: -#line 2490 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 241: +#line 2540 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 230: -#line 2495 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 242: +#line 2545 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - if (!(*(yyvsp[-3].TypeVal))->isInteger() && !(*(yyvsp[-3].TypeVal))->isFloatingPoint() && - !isa<PackedType>((*(yyvsp[-3].TypeVal)).get())) + if (!(yyvsp[-3].TypeVal).type->get()->isInteger() && !(yyvsp[-3].TypeVal).type->get()->isFloatingPoint() && + !isa<PackedType>((yyvsp[-3].TypeVal).type->get())) GEN_ERROR( "Arithmetic operator requires integer, FP, or packed operands!"); - if (isa<PackedType>((*(yyvsp[-3].TypeVal)).get()) && + if (isa<PackedType>((yyvsp[-3].TypeVal).type->get()) && ((yyvsp[-4].BinaryOpVal).opcode == Instruction::URem || (yyvsp[-4].BinaryOpVal).opcode == Instruction::SRem || (yyvsp[-4].BinaryOpVal).opcode == Instruction::FRem)) GEN_ERROR("U/S/FRem not supported on packed types!"); // Upgrade the opcode from obsolete versions before we do anything with it. - sanitizeOpCode((yyvsp[-4].BinaryOpVal),*(yyvsp[-3].TypeVal)); + sanitizeOpcode((yyvsp[-4].BinaryOpVal),(yyvsp[-3].TypeVal).type->get()); CHECK_FOR_ERROR; - Value* val1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); + Value* val1 = getVal((yyvsp[-3].TypeVal).type->get(), (yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR - Value* val2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal)); + Value* val2 = getVal((yyvsp[-3].TypeVal).type->get(), (yyvsp[0].ValIDVal)); CHECK_FOR_ERROR (yyval.InstVal) = BinaryOperator::create((yyvsp[-4].BinaryOpVal).opcode, val1, val2); if ((yyval.InstVal) == 0) GEN_ERROR("binary operator returned null!"); - delete (yyvsp[-3].TypeVal); + delete (yyvsp[-3].TypeVal).type; ;} break; - case 231: -#line 2517 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 243: +#line 2567 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - if (!(*(yyvsp[-3].TypeVal))->isIntegral()) { - if (!isa<PackedType>((yyvsp[-3].TypeVal)->get()) || - !cast<PackedType>((yyvsp[-3].TypeVal)->get())->getElementType()->isIntegral()) + if (!(yyvsp[-3].TypeVal).type->get()->isIntegral()) { + if (!isa<PackedType>((yyvsp[-3].TypeVal).type->get()) || + !cast<PackedType>((yyvsp[-3].TypeVal).type->get())->getElementType()->isIntegral()) GEN_ERROR("Logical operator requires integral operands!"); } - Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); + Value* tmpVal1 = getVal((yyvsp[-3].TypeVal).type->get(), (yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR - Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal)); + Value* tmpVal2 = getVal((yyvsp[-3].TypeVal).type->get(), (yyvsp[0].ValIDVal)); CHECK_FOR_ERROR (yyval.InstVal) = BinaryOperator::create((yyvsp[-4].BinaryOpVal).opcode, tmpVal1, tmpVal2); if ((yyval.InstVal) == 0) GEN_ERROR("binary operator returned null!"); - delete (yyvsp[-3].TypeVal); + delete (yyvsp[-3].TypeVal).type; ;} break; - case 232: -#line 2532 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 244: +#line 2582 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - if(isa<PackedType>((*(yyvsp[-3].TypeVal)).get())) { + if(isa<PackedType>((yyvsp[-3].TypeVal).type->get())) { GEN_ERROR( "PackedTypes currently not supported in setcc instructions!"); } - Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); + Value* tmpVal1 = getVal((yyvsp[-3].TypeVal).type->get(), (yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR - Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal)); + Value* tmpVal2 = getVal((yyvsp[-3].TypeVal).type->get(), (yyvsp[0].ValIDVal)); CHECK_FOR_ERROR (yyval.InstVal) = new SetCondInst((yyvsp[-4].BinaryOpVal).opcode, tmpVal1, tmpVal2); if ((yyval.InstVal) == 0) GEN_ERROR("binary operator returned null!"); - delete (yyvsp[-3].TypeVal); + delete (yyvsp[-3].TypeVal).type; ;} break; - case 233: -#line 2546 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 245: +#line 2596 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { std::cerr << "WARNING: Use of eliminated 'not' instruction:" << " Replacing with 'xor'.\n"; @@ -4954,35 +5054,53 @@ yyreduce: ;} break; - case 234: -#line 2559 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 246: +#line 2609 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].ValueVal)->getType() != Type::UByteTy) GEN_ERROR("Shift amount must be ubyte!"); if (!(yyvsp[-2].ValueVal)->getType()->isInteger()) GEN_ERROR("Shift constant expression requires integer operand!"); // Handle opcode upgrade situations - sanitizeOpCode((yyvsp[-3].OtherOpVal), (yyvsp[-2].ValueVal)->getType()); + sanitizeOpcode((yyvsp[-3].OtherOpVal), (yyvsp[-2].ValueVal)->getType()); CHECK_FOR_ERROR; (yyval.InstVal) = new ShiftInst((yyvsp[-3].OtherOpVal).opcode, (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)); CHECK_FOR_ERROR ;} break; - case 235: -#line 2570 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 247: +#line 2620 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - if (!(yyvsp[0].TypeVal)->get()->isFirstClassType()) - GEN_ERROR("cast instruction to a non-primitive type: '" + - (yyvsp[0].TypeVal)->get()->getDescription() + "'!"); - (yyval.InstVal) = new CastInst((yyvsp[-2].ValueVal), *(yyvsp[0].TypeVal)); - delete (yyvsp[0].TypeVal); - CHECK_FOR_ERROR + Value* Val = (yyvsp[-2].ValueVal); + const Type* Ty = (yyvsp[0].TypeVal).type->get(); + if (!Val->getType()->isFirstClassType()) + GEN_ERROR("cast from a non-primitive type: '" + + Val->getType()->getDescription() + "'!"); + if (!Ty->isFirstClassType()) + GEN_ERROR("cast to a non-primitive type: '" + Ty->getDescription() +"'!"); + + if ((yyvsp[-3].CastOpVal).obsolete) { + if (Ty == Type::BoolTy) { + // The previous definition of cast to bool was a compare against zero. + // We have to retain that semantic so we do it here. + (yyval.InstVal) = new SetCondInst(Instruction::SetNE, (yyvsp[-2].ValueVal), + Constant::getNullValue((yyvsp[-2].ValueVal)->getType())); + } else if (Val->getType()->isFloatingPoint() && isa<PointerType>(Ty)) { + CastInst *CI = new FPToUIInst(Val, Type::ULongTy); + (yyval.InstVal) = new IntToPtrInst(CI, Ty); + } else { + (yyval.InstVal) = CastInst::createInferredCast(Val, Ty); + } + } else { + (yyval.InstVal) = CastInst::create((yyvsp[-3].CastOpVal).opcode, (yyvsp[-2].ValueVal), (yyvsp[0].TypeVal).type->get()); + } + delete (yyvsp[0].TypeVal).type; ;} break; - case 236: -#line 2578 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 248: +#line 2646 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-4].ValueVal)->getType() != Type::BoolTy) GEN_ERROR("select condition must be boolean!"); @@ -4993,18 +5111,18 @@ yyreduce: ;} break; - case 237: -#line 2586 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 249: +#line 2654 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { NewVarArgs = true; - (yyval.InstVal) = new VAArgInst((yyvsp[-2].ValueVal), *(yyvsp[0].TypeVal)); - delete (yyvsp[0].TypeVal); + (yyval.InstVal) = new VAArgInst((yyvsp[-2].ValueVal), (yyvsp[0].TypeVal).type->get()); + delete (yyvsp[0].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 238: -#line 2592 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 250: +#line 2660 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { ObsoleteVarArgs = true; const Type* ArgTy = (yyvsp[-2].ValueVal)->getType(); @@ -5021,14 +5139,14 @@ yyreduce: CallInst* bar = new CallInst(NF, (yyvsp[-2].ValueVal)); CurBB->getInstList().push_back(bar); CurBB->getInstList().push_back(new StoreInst(bar, foo)); - (yyval.InstVal) = new VAArgInst(foo, *(yyvsp[0].TypeVal)); - delete (yyvsp[0].TypeVal); + (yyval.InstVal) = new VAArgInst(foo, (yyvsp[0].TypeVal).type->get()); + delete (yyvsp[0].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 239: -#line 2612 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 251: +#line 2680 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { ObsoleteVarArgs = true; const Type* ArgTy = (yyvsp[-2].ValueVal)->getType(); @@ -5046,16 +5164,16 @@ yyreduce: CallInst* bar = new CallInst(NF, (yyvsp[-2].ValueVal)); CurBB->getInstList().push_back(bar); CurBB->getInstList().push_back(new StoreInst(bar, foo)); - Instruction* tmp = new VAArgInst(foo, *(yyvsp[0].TypeVal)); + Instruction* tmp = new VAArgInst(foo, (yyvsp[0].TypeVal).type->get()); CurBB->getInstList().push_back(tmp); (yyval.InstVal) = new LoadInst(foo); - delete (yyvsp[0].TypeVal); + delete (yyvsp[0].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 240: -#line 2635 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 252: +#line 2703 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid extractelement operands!"); @@ -5064,8 +5182,8 @@ yyreduce: ;} break; - case 241: -#line 2641 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 253: +#line 2709 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid insertelement operands!"); @@ -5074,8 +5192,8 @@ yyreduce: ;} break; - case 242: -#line 2647 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 254: +#line 2715 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid shufflevector operands!"); @@ -5084,8 +5202,8 @@ yyreduce: ;} break; - case 243: -#line 2653 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 255: +#line 2721 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { const Type *Ty = (yyvsp[0].PHIList)->front().first->getType(); if (!Ty->isFirstClassType()) @@ -5103,13 +5221,13 @@ yyreduce: ;} break; - case 244: -#line 2668 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 256: +#line 2736 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - const PointerType *PFTy; - const FunctionType *Ty; + const PointerType *PFTy = 0; + const FunctionType *Ty = 0; - if (!(PFTy = dyn_cast<PointerType>((yyvsp[-4].TypeVal)->get())) || + if (!(PFTy = dyn_cast<PointerType>((yyvsp[-4].TypeVal).type->get())) || !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) { // Pull out the types of all of the arguments... std::vector<const Type*> ParamTypes; @@ -5122,10 +5240,11 @@ yyreduce: bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; if (isVarArg) ParamTypes.pop_back(); - if (!(*(yyvsp[-4].TypeVal))->isFirstClassType() && *(yyvsp[-4].TypeVal) != Type::VoidTy) + if (!(yyvsp[-4].TypeVal).type->get()->isFirstClassType() && + (yyvsp[-4].TypeVal).type->get() != Type::VoidTy) GEN_ERROR("LLVM functions cannot return aggregate types!"); - Ty = FunctionType::get((yyvsp[-4].TypeVal)->get(), ParamTypes, isVarArg); + Ty = FunctionType::get((yyvsp[-4].TypeVal).type->get(), ParamTypes, isVarArg); PFTy = PointerType::get(Ty); } @@ -5160,92 +5279,92 @@ yyreduce: } cast<CallInst>((yyval.InstVal))->setTailCall((yyvsp[-6].BoolVal)); cast<CallInst>((yyval.InstVal))->setCallingConv((yyvsp[-5].UIntVal)); - delete (yyvsp[-4].TypeVal); + delete (yyvsp[-4].TypeVal).type; delete (yyvsp[-1].ValueList); CHECK_FOR_ERROR ;} break; - case 245: -#line 2727 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 257: +#line 2796 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.InstVal) = (yyvsp[0].InstVal); CHECK_FOR_ERROR ;} break; - case 246: -#line 2734 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 258: +#line 2803 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = (yyvsp[0].ValueList); CHECK_FOR_ERROR ;} break; - case 247: -#line 2737 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 259: +#line 2806 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = new std::vector<Value*>(); CHECK_FOR_ERROR ;} break; - case 248: -#line 2742 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 260: +#line 2811 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 249: -#line 2746 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 261: +#line 2815 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 250: -#line 2753 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 262: +#line 2822 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - (yyval.InstVal) = new MallocInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal)); - delete (yyvsp[-1].TypeVal); + (yyval.InstVal) = new MallocInst((yyvsp[-1].TypeVal).type->get(), 0, (yyvsp[0].UIntVal)); + delete (yyvsp[-1].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 251: -#line 2758 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 263: +#line 2827 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal)); + Value* tmpVal = getVal((yyvsp[-2].TypeVal).type->get(), (yyvsp[-1].ValIDVal)); CHECK_FOR_ERROR - (yyval.InstVal) = new MallocInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal)); - delete (yyvsp[-4].TypeVal); + (yyval.InstVal) = new MallocInst((yyvsp[-4].TypeVal).type->get(), tmpVal, (yyvsp[0].UIntVal)); + delete (yyvsp[-4].TypeVal).type; ;} break; - case 252: -#line 2764 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 264: +#line 2833 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - (yyval.InstVal) = new AllocaInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal)); - delete (yyvsp[-1].TypeVal); + (yyval.InstVal) = new AllocaInst((yyvsp[-1].TypeVal).type->get(), 0, (yyvsp[0].UIntVal)); + delete (yyvsp[-1].TypeVal).type; CHECK_FOR_ERROR ;} break; - case 253: -#line 2769 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 265: +#line 2838 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal)); + Value* tmpVal = getVal((yyvsp[-2].TypeVal).type->get(), (yyvsp[-1].ValIDVal)); CHECK_FOR_ERROR - (yyval.InstVal) = new AllocaInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal)); - delete (yyvsp[-4].TypeVal); + (yyval.InstVal) = new AllocaInst((yyvsp[-4].TypeVal).type->get(), tmpVal, (yyvsp[0].UIntVal)); + delete (yyvsp[-4].TypeVal).type; ;} break; - case 254: -#line 2775 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 266: +#line 2844 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { if (!isa<PointerType>((yyvsp[0].ValueVal)->getType())) GEN_ERROR("Trying to free nonpointer type " + @@ -5255,65 +5374,65 @@ yyreduce: ;} break; - case 255: -#line 2783 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 267: +#line 2852 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - if (!isa<PointerType>((yyvsp[-1].TypeVal)->get())) + if (!isa<PointerType>((yyvsp[-1].TypeVal).type->get())) GEN_ERROR("Can't load from nonpointer type: " + - (*(yyvsp[-1].TypeVal))->getDescription()); - if (!cast<PointerType>((yyvsp[-1].TypeVal)->get())->getElementType()->isFirstClassType()) + (yyvsp[-1].TypeVal).type->get()->getDescription()); + if (!cast<PointerType>((yyvsp[-1].TypeVal).type->get())->getElementType()->isFirstClassType()) GEN_ERROR("Can't load from pointer of non-first-class type: " + - (*(yyvsp[-1].TypeVal))->getDescription()); - Value* tmpVal = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal)); + (yyvsp[-1].TypeVal).type->get()->getDescription()); + Value* tmpVal = getVal((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].ValIDVal)); CHECK_FOR_ERROR (yyval.InstVal) = new LoadInst(tmpVal, "", (yyvsp[-3].BoolVal)); - delete (yyvsp[-1].TypeVal); + delete (yyvsp[-1].TypeVal).type; ;} break; - case 256: -#line 2795 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 268: +#line 2864 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - const PointerType *PT = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get()); + const PointerType *PT = dyn_cast<PointerType>((yyvsp[-1].TypeVal).type->get()); if (!PT) GEN_ERROR("Can't store to a nonpointer type: " + - (*(yyvsp[-1].TypeVal))->getDescription()); + ((yyvsp[-1].TypeVal).type->get())->getDescription()); const Type *ElTy = PT->getElementType(); if (ElTy != (yyvsp[-3].ValueVal)->getType()) GEN_ERROR("Can't store '" + (yyvsp[-3].ValueVal)->getType()->getDescription() + "' into space of type '" + ElTy->getDescription() + "'!"); - Value* tmpVal = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal)); + Value* tmpVal = getVal((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].ValIDVal)); CHECK_FOR_ERROR (yyval.InstVal) = new StoreInst((yyvsp[-3].ValueVal), tmpVal, (yyvsp[-5].BoolVal)); - delete (yyvsp[-1].TypeVal); + delete (yyvsp[-1].TypeVal).type; ;} break; - case 257: -#line 2810 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 269: +#line 2879 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { - if (!isa<PointerType>((yyvsp[-2].TypeVal)->get())) + if (!isa<PointerType>((yyvsp[-2].TypeVal).type->get())) GEN_ERROR("getelementptr insn requires pointer operand!"); // LLVM 1.2 and earlier used ubyte struct indices. Convert any ubyte struct // indices to uint struct indices for compatibility. generic_gep_type_iterator<std::vector<Value*>::iterator> - GTI = gep_type_begin((yyvsp[-2].TypeVal)->get(), (yyvsp[0].ValueList)->begin(), (yyvsp[0].ValueList)->end()), - GTE = gep_type_end((yyvsp[-2].TypeVal)->get(), (yyvsp[0].ValueList)->begin(), (yyvsp[0].ValueList)->end()); + GTI = gep_type_begin((yyvsp[-2].TypeVal).type->get(), (yyvsp[0].ValueList)->begin(), (yyvsp[0].ValueList)->end()), + GTE = gep_type_end((yyvsp[-2].TypeVal).type->get(), (yyvsp[0].ValueList)->begin(), (yyvsp[0].ValueList)->end()); for (unsigned i = 0, e = (yyvsp[0].ValueList)->size(); i != e && GTI != GTE; ++i, ++GTI) if (isa<StructType>(*GTI)) // Only change struct indices if (ConstantInt *CUI = dyn_cast<ConstantInt>((*(yyvsp[0].ValueList))[i])) if (CUI->getType() == Type::UByteTy) (*(yyvsp[0].ValueList))[i] = ConstantExpr::getCast(CUI, Type::UIntTy); - if (!GetElementPtrInst::getIndexedType(*(yyvsp[-2].TypeVal), *(yyvsp[0].ValueList), true)) + if (!GetElementPtrInst::getIndexedType((yyvsp[-2].TypeVal).type->get(), *(yyvsp[0].ValueList), true)) GEN_ERROR("Invalid getelementptr indices for type '" + - (*(yyvsp[-2].TypeVal))->getDescription()+ "'!"); - Value* tmpVal = getVal(*(yyvsp[-2].TypeVal), (yyvsp[-1].ValIDVal)); + (yyvsp[-2].TypeVal).type->get()->getDescription()+ "'!"); + Value* tmpVal = getVal((yyvsp[-2].TypeVal).type->get(), (yyvsp[-1].ValIDVal)); CHECK_FOR_ERROR (yyval.InstVal) = new GetElementPtrInst(tmpVal, *(yyvsp[0].ValueList)); - delete (yyvsp[-2].TypeVal); + delete (yyvsp[-2].TypeVal).type; delete (yyvsp[0].ValueList); ;} break; @@ -5323,7 +5442,7 @@ yyreduce: } /* Line 1126 of yacc.c. */ -#line 5327 "llvmAsmParser.tab.c" +#line 5446 "llvmAsmParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -5591,7 +5710,7 @@ yyreturn: } -#line 2836 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2905 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" void llvm::GenerateError(const std::string &message, int LineNo) { diff --git a/lib/AsmParser/llvmAsmParser.h.cvs b/lib/AsmParser/llvmAsmParser.h.cvs index eb8e897..d303bf5 100644 --- a/lib/AsmParser/llvmAsmParser.h.cvs +++ b/lib/AsmParser/llvmAsmParser.h.cvs @@ -128,18 +128,29 @@ LOAD = 354, STORE = 355, GETELEMENTPTR = 356, - PHI_TOK = 357, - CAST = 358, - SELECT = 359, - SHL = 360, - LSHR = 361, - ASHR = 362, - VAARG = 363, - EXTRACTELEMENT = 364, - INSERTELEMENT = 365, - SHUFFLEVECTOR = 366, - VAARG_old = 367, - VANEXT_old = 368 + TRUNC = 357, + ZEXT = 358, + SEXT = 359, + FPTRUNC = 360, + FPEXT = 361, + BITCAST = 362, + UITOFP = 363, + SITOFP = 364, + FPTOUI = 365, + FPTOSI = 366, + INTTOPTR = 367, + PTRTOINT = 368, + PHI_TOK = 369, + SELECT = 370, + SHL = 371, + LSHR = 372, + ASHR = 373, + VAARG = 374, + EXTRACTELEMENT = 375, + INSERTELEMENT = 376, + SHUFFLEVECTOR = 377, + VAARG_old = 378, + VANEXT_old = 379 }; #endif /* Tokens. */ @@ -242,40 +253,50 @@ #define LOAD 354 #define STORE 355 #define GETELEMENTPTR 356 -#define PHI_TOK 357 -#define CAST 358 -#define SELECT 359 -#define SHL 360 -#define LSHR 361 -#define ASHR 362 -#define VAARG 363 -#define EXTRACTELEMENT 364 -#define INSERTELEMENT 365 -#define SHUFFLEVECTOR 366 -#define VAARG_old 367 -#define VANEXT_old 368 +#define TRUNC 357 +#define ZEXT 358 +#define SEXT 359 +#define FPTRUNC 360 +#define FPEXT 361 +#define BITCAST 362 +#define UITOFP 363 +#define SITOFP 364 +#define FPTOUI 365 +#define FPTOSI 366 +#define INTTOPTR 367 +#define PTRTOINT 368 +#define PHI_TOK 369 +#define SELECT 370 +#define SHL 371 +#define LSHR 372 +#define ASHR 373 +#define VAARG 374 +#define EXTRACTELEMENT 375 +#define INSERTELEMENT 376 +#define SHUFFLEVECTOR 377 +#define VAARG_old 378 +#define VANEXT_old 379 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 1040 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1040 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; - std::pair<llvm::PATypeHolder*, char*> *ArgVal; + std::pair<TypeInfo, char*> *ArgVal; llvm::BasicBlock *BasicBlockVal; llvm::TerminatorInst *TermInstVal; llvm::Instruction *InstVal; llvm::Constant *ConstVal; - const llvm::Type *PrimType; - llvm::PATypeHolder *TypeVal; + TypeInfo TypeVal; llvm::Value *ValueVal; - std::vector<std::pair<llvm::PATypeHolder*,char*> > *ArgList; + std::vector<std::pair<TypeInfo,char*> >*ArgList; std::vector<llvm::Value*> *ValueList; - std::list<llvm::PATypeHolder> *TypeList; + std::list<TypeInfo> *TypeList; // Represent the RHS of PHI node std::list<std::pair<llvm::Value*, llvm::BasicBlock*> > *PHIList; @@ -296,11 +317,12 @@ typedef union YYSTYPE { BinaryOpInfo BinaryOpVal; TermOpInfo TermOpVal; MemOpInfo MemOpVal; + CastOpInfo CastOpVal; OtherOpInfo OtherOpVal; llvm::Module::Endianness Endianness; } YYSTYPE; /* Line 1447 of yacc.c. */ -#line 304 "llvmAsmParser.tab.h" +#line 326 "llvmAsmParser.tab.h" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index 806372a..202c384 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -824,14 +824,14 @@ static PATypeHolder HandleUpRefs(const Type *ty) { /// instruction. This function handles converting div -> [usf]div appropriately. /// @brief Convert obsolete BinaryOps opcodes to new values static void -sanitizeOpCode(OpcodeInfo<Instruction::BinaryOps> &OI, const Type *Ty) +sanitizeOpcode(OpcodeInfo<Instruction::BinaryOps> &OI, const Type *Ty) { // If its not obsolete, don't do anything if (!OI.obsolete) return; // If its a packed type we want to use the element type - if (const PackedType* PTy = dyn_cast<PackedType>(Ty)) + if (const PackedType *PTy = dyn_cast<PackedType>(Ty)) Ty = PTy->getElementType(); // Depending on the opcode .. @@ -857,11 +857,11 @@ sanitizeOpCode(OpcodeInfo<Instruction::BinaryOps> &OI, const Type *Ty) OI.obsolete = false; } -/// This function is similar to the previous overload of sanitizeOpCode but +/// This function is similar to the previous overload of sanitizeOpcode but /// operates on Instruction::OtherOps instead of Instruction::BinaryOps. /// @brief Convert obsolete OtherOps opcodes to new values static void -sanitizeOpCode(OpcodeInfo<Instruction::OtherOps> &OI, const Type *Ty) +sanitizeOpcode(OpcodeInfo<Instruction::OtherOps> &OI, const Type *Ty) { // If its not obsolete, don't do anything if (!OI.obsolete) @@ -1072,6 +1072,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { BinaryOpInfo BinaryOpVal; TermOpInfo TermOpVal; MemOpInfo MemOpVal; + CastOpInfo CastOpVal; OtherOpInfo OtherOpVal; llvm::Module::Endianness Endianness; } @@ -1147,9 +1148,14 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { // Memory Instructions %token <MemOpVal> MALLOC ALLOCA FREE LOAD STORE GETELEMENTPTR +// Cast Operators +%type <CastOpVal> CastOps +%token <CastOpVal> TRUNC ZEXT SEXT FPTRUNC FPEXT BITCAST +%token <CastOpVal> UITOFP SITOFP FPTOUI FPTOSI INTTOPTR PTRTOINT + // Other Operators %type <OtherOpVal> ShiftOps -%token <OtherOpVal> PHI_TOK CAST SELECT SHL LSHR ASHR VAARG +%token <OtherOpVal> PHI_TOK SELECT SHL LSHR ASHR VAARG %token <OtherOpVal> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR %token VAARG_old VANEXT_old //OBSOLETE @@ -1182,8 +1188,9 @@ EINT64VAL : EUINT64VAL { ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM; LogicalOps : AND | OR | XOR; SetCondOps : SETLE | SETGE | SETLT | SETGT | SETEQ | SETNE; - -ShiftOps : SHL | LSHR | ASHR; +CastOps : TRUNC | ZEXT | SEXT | FPTRUNC | FPEXT | BITCAST | + UITOFP | SITOFP | FPTOUI | FPTOSI | INTTOPTR | PTRTOINT; +ShiftOps : SHL | LSHR | ASHR; // These are some types that allow classification if we only want a particular // thing... for example, only a signed, unsigned, or integral type. @@ -1676,16 +1683,31 @@ ConstVal : SIntType EINT64VAL { // integral constants }; -ConstExpr: CAST '(' ConstVal TO Types ')' { - if (!$3->getType()->isFirstClassType()) +ConstExpr: CastOps '(' ConstVal TO Types ')' { + Constant *Val = $3; + const Type *Ty = $5.type->get(); + if (!Val->getType()->isFirstClassType()) GEN_ERROR("cast constant expression from a non-primitive type: '" + - $3->getType()->getDescription() + "'!"); - if (!$5.type->get()->isFirstClassType()) + Val->getType()->getDescription() + "'!"); + if (!Ty->isFirstClassType()) GEN_ERROR("cast constant expression to a non-primitive type: '" + - $5.type->get()->getDescription() + "'!"); - $$ = ConstantExpr::getCast($3, $5.type->get()); + Ty->getDescription() + "'!"); + if ($1.obsolete) { + if (Ty == Type::BoolTy) { + // The previous definition of cast to bool was a compare against zero. + // We have to retain that semantic so we do it here. + $$ = ConstantExpr::get(Instruction::SetNE, Val, + Constant::getNullValue(Val->getType())); + } else if (Val->getType()->isFloatingPoint() && isa<PointerType>(Ty)) { + Constant *CE = ConstantExpr::getFPToUI(Val, Type::ULongTy); + $$ = ConstantExpr::getIntToPtr(CE, Ty); + } else { + $$ = ConstantExpr::getCast(Val, Ty); + } + } else { + $$ = ConstantExpr::getCast($1.opcode, $3, $5.type->get()); + } delete $5.type; - CHECK_FOR_ERROR } | GETELEMENTPTR '(' ConstVal IndexList ')' { if (!isa<PointerType>($3->getType())) @@ -1732,7 +1754,7 @@ ConstExpr: CAST '(' ConstVal TO Types ')' { GEN_ERROR("Binary operator types must match!"); // First, make sure we're dealing with the right opcode by upgrading from // obsolete versions. - sanitizeOpCode($1,$3->getType()); + sanitizeOpcode($1, $3->getType()); CHECK_FOR_ERROR; // HACK: llvm 1.3 and earlier used to emit invalid pointer constant exprs. @@ -1777,7 +1799,7 @@ ConstExpr: CAST '(' ConstVal TO Types ')' { if (!$3->getType()->isInteger()) GEN_ERROR("Shift constant expression requires integer operand!"); // Handle opcode upgrade situations - sanitizeOpCode($1, $3->getType()); + sanitizeOpcode($1, $3->getType()); CHECK_FOR_ERROR; $$ = ConstantExpr::get($1.opcode, $3, $5); CHECK_FOR_ERROR @@ -2296,6 +2318,10 @@ BasicBlock : InstructionList OptAssign BBTerminatorInst { }; InstructionList : InstructionList Inst { + if (CastInst *CI1 = dyn_cast<CastInst>($2)) + if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0))) + if (CI2->getParent() == 0) + $1->getInstList().push_back(CI2); $1->getInstList().push_back($2); $$ = $1; CHECK_FOR_ERROR @@ -2527,7 +2553,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { $1.opcode == Instruction::FRem)) GEN_ERROR("U/S/FRem not supported on packed types!"); // Upgrade the opcode from obsolete versions before we do anything with it. - sanitizeOpCode($1,$2.type->get()); + sanitizeOpcode($1,$2.type->get()); CHECK_FOR_ERROR; Value* val1 = getVal($2.type->get(), $3); CHECK_FOR_ERROR @@ -2586,18 +2612,36 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { if (!$2->getType()->isInteger()) GEN_ERROR("Shift constant expression requires integer operand!"); // Handle opcode upgrade situations - sanitizeOpCode($1, $2->getType()); + sanitizeOpcode($1, $2->getType()); CHECK_FOR_ERROR; $$ = new ShiftInst($1.opcode, $2, $4); CHECK_FOR_ERROR } - | CAST ResolvedVal TO Types { - if (!$4.type->get()->isFirstClassType()) - GEN_ERROR("cast instruction to a non-primitive type: '" + - $4.type->get()->getDescription() + "'!"); - $$ = new CastInst($2, $4.type->get()); + | CastOps ResolvedVal TO Types { + Value* Val = $2; + const Type* Ty = $4.type->get(); + if (!Val->getType()->isFirstClassType()) + GEN_ERROR("cast from a non-primitive type: '" + + Val->getType()->getDescription() + "'!"); + if (!Ty->isFirstClassType()) + GEN_ERROR("cast to a non-primitive type: '" + Ty->getDescription() +"'!"); + + if ($1.obsolete) { + if (Ty == Type::BoolTy) { + // The previous definition of cast to bool was a compare against zero. + // We have to retain that semantic so we do it here. + $$ = new SetCondInst(Instruction::SetNE, $2, + Constant::getNullValue($2->getType())); + } else if (Val->getType()->isFloatingPoint() && isa<PointerType>(Ty)) { + CastInst *CI = new FPToUIInst(Val, Type::ULongTy); + $$ = new IntToPtrInst(CI, Ty); + } else { + $$ = CastInst::createInferredCast(Val, Ty); + } + } else { + $$ = CastInst::create($1.opcode, $2, $4.type->get()); + } delete $4.type; - CHECK_FOR_ERROR } | SELECT ResolvedVal ',' ResolvedVal ',' ResolvedVal { if ($2->getType() != Type::BoolTy) diff --git a/lib/AsmParser/llvmAsmParser.y.cvs b/lib/AsmParser/llvmAsmParser.y.cvs index 4611262..202c384 100644 --- a/lib/AsmParser/llvmAsmParser.y.cvs +++ b/lib/AsmParser/llvmAsmParser.y.cvs @@ -83,8 +83,8 @@ static struct PerModuleInfo { Module *CurrentModule; std::map<const Type *, ValueList> Values; // Module level numbered definitions std::map<const Type *,ValueList> LateResolveValues; - std::vector<PATypeHolder> Types; - std::map<ValID, PATypeHolder> LateResolveTypes; + std::vector<TypeInfo> Types; + std::map<ValID, TypeInfo> LateResolveTypes; /// PlaceHolderInfo - When temporary placeholder objects are created, remember /// how they were referenced and on which line of the input they came from so @@ -217,7 +217,7 @@ static const Type *getTypeVal(const ValID &D, bool DoNotImprovise = false) { case ValID::NumberVal: // Is it a numbered definition? // Module constants occupy the lowest numbered slots... if ((unsigned)D.Num < CurModule.Types.size()) - return CurModule.Types[(unsigned)D.Num]; + return CurModule.Types[(unsigned)D.Num].type->get(); break; case ValID::NameVal: // Is it a named definition? if (const Type *N = CurModule.CurrentModule->getTypeByName(D.Name)) { @@ -247,13 +247,15 @@ static const Type *getTypeVal(const ValID &D, bool DoNotImprovise = false) { } } - std::map<ValID, PATypeHolder>::iterator I =CurModule.LateResolveTypes.find(D); + std::map<ValID, TypeInfo>::iterator I =CurModule.LateResolveTypes.find(D); if (I != CurModule.LateResolveTypes.end()) - return I->second; + return I->second.type->get(); - Type *Typ = OpaqueType::get(); - CurModule.LateResolveTypes.insert(std::make_pair(D, Typ)); - return Typ; + TypeInfo TI; + TI.type = new PATypeHolder(OpaqueType::get()); + TI.signedness = isSignless; + CurModule.LateResolveTypes.insert(std::make_pair(D, TI)); + return TI.type->get(); } static Value *lookupInSymbolTable(const Type *Ty, const std::string &Name) { @@ -557,10 +559,10 @@ static void ResolveTypeTo(char *Name, const Type *ToTy) { if (Name) D = ValID::create(Name); else D = ValID::create((int)CurModule.Types.size()); - std::map<ValID, PATypeHolder>::iterator I = + std::map<ValID, TypeInfo>::iterator I = CurModule.LateResolveTypes.find(D); if (I != CurModule.LateResolveTypes.end()) { - ((DerivedType*)I->second.get())->refineAbstractTypeTo(ToTy); + ((DerivedType*)I->second.type->get())->refineAbstractTypeTo(ToTy); CurModule.LateResolveTypes.erase(I); } } @@ -822,15 +824,14 @@ static PATypeHolder HandleUpRefs(const Type *ty) { /// instruction. This function handles converting div -> [usf]div appropriately. /// @brief Convert obsolete BinaryOps opcodes to new values static void -sanitizeOpCode(OpcodeInfo<Instruction::BinaryOps> &OI, const PATypeHolder& PATy) +sanitizeOpcode(OpcodeInfo<Instruction::BinaryOps> &OI, const Type *Ty) { // If its not obsolete, don't do anything if (!OI.obsolete) return; // If its a packed type we want to use the element type - const Type* Ty = PATy; - if (const PackedType* PTy = dyn_cast<PackedType>(Ty)) + if (const PackedType *PTy = dyn_cast<PackedType>(Ty)) Ty = PTy->getElementType(); // Depending on the opcode .. @@ -856,17 +857,16 @@ sanitizeOpCode(OpcodeInfo<Instruction::BinaryOps> &OI, const PATypeHolder& PATy) OI.obsolete = false; } -/// This function is similar to the previous overload of sanitizeOpCode but +/// This function is similar to the previous overload of sanitizeOpcode but /// operates on Instruction::OtherOps instead of Instruction::BinaryOps. /// @brief Convert obsolete OtherOps opcodes to new values static void -sanitizeOpCode(OpcodeInfo<Instruction::OtherOps> &OI, const PATypeHolder& PATy) +sanitizeOpcode(OpcodeInfo<Instruction::OtherOps> &OI, const Type *Ty) { // If its not obsolete, don't do anything if (!OI.obsolete) return; - const Type* Ty = PATy; // type conversion switch (OI.opcode) { default: GenerateError("Invalid obsolete opcode (check Lexer.l)"); @@ -1040,19 +1040,18 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { %union { llvm::Module *ModuleVal; llvm::Function *FunctionVal; - std::pair<llvm::PATypeHolder*, char*> *ArgVal; + std::pair<TypeInfo, char*> *ArgVal; llvm::BasicBlock *BasicBlockVal; llvm::TerminatorInst *TermInstVal; llvm::Instruction *InstVal; llvm::Constant *ConstVal; - const llvm::Type *PrimType; - llvm::PATypeHolder *TypeVal; + TypeInfo TypeVal; llvm::Value *ValueVal; - std::vector<std::pair<llvm::PATypeHolder*,char*> > *ArgList; + std::vector<std::pair<TypeInfo,char*> >*ArgList; std::vector<llvm::Value*> *ValueList; - std::list<llvm::PATypeHolder> *TypeList; + std::list<TypeInfo> *TypeList; // Represent the RHS of PHI node std::list<std::pair<llvm::Value*, llvm::BasicBlock*> > *PHIList; @@ -1073,6 +1072,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { BinaryOpInfo BinaryOpVal; TermOpInfo TermOpVal; MemOpInfo MemOpVal; + CastOpInfo CastOpVal; OtherOpInfo OtherOpVal; llvm::Module::Endianness Endianness; } @@ -1117,9 +1117,9 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { // Built in types... %type <TypeVal> Types TypesV UpRTypes UpRTypesV -%type <PrimType> SIntType UIntType IntType FPType PrimType // Classifications -%token <PrimType> VOID BOOL SBYTE UBYTE SHORT USHORT INT UINT LONG ULONG -%token <PrimType> FLOAT DOUBLE TYPE LABEL +%type <TypeVal> SIntType UIntType IntType FPType PrimType // Classifications +%token <TypeVal> VOID BOOL SBYTE UBYTE SHORT USHORT INT UINT LONG ULONG +%token <TypeVal> FLOAT DOUBLE TYPE LABEL %token <StrVal> VAR_ID LABELSTR STRINGCONSTANT %type <StrVal> Name OptName OptAssign @@ -1148,9 +1148,14 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { // Memory Instructions %token <MemOpVal> MALLOC ALLOCA FREE LOAD STORE GETELEMENTPTR +// Cast Operators +%type <CastOpVal> CastOps +%token <CastOpVal> TRUNC ZEXT SEXT FPTRUNC FPEXT BITCAST +%token <CastOpVal> UITOFP SITOFP FPTOUI FPTOSI INTTOPTR PTRTOINT + // Other Operators %type <OtherOpVal> ShiftOps -%token <OtherOpVal> PHI_TOK CAST SELECT SHL LSHR ASHR VAARG +%token <OtherOpVal> PHI_TOK SELECT SHL LSHR ASHR VAARG %token <OtherOpVal> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR %token VAARG_old VANEXT_old //OBSOLETE @@ -1183,8 +1188,9 @@ EINT64VAL : EUINT64VAL { ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM; LogicalOps : AND | OR | XOR; SetCondOps : SETLE | SETGE | SETLT | SETGT | SETEQ | SETNE; - -ShiftOps : SHL | LSHR | ASHR; +CastOps : TRUNC | ZEXT | SEXT | FPTRUNC | FPEXT | BITCAST | + UITOFP | SITOFP | FPTOUI | FPTOSI | INTTOPTR | PTRTOINT; +ShiftOps : SHL | LSHR | ASHR; // These are some types that allow classification if we only want a particular // thing... for example, only a signed, unsigned, or integral type. @@ -1279,15 +1285,22 @@ GlobalVarAttribute : SectionString { // // TypesV includes all of 'Types', but it also includes the void type. -TypesV : Types | VOID { $$ = new PATypeHolder($1); }; -UpRTypesV : UpRTypes | VOID { $$ = new PATypeHolder($1); }; +TypesV : Types | VOID { + $$.type = new PATypeHolder($1.type->get()); + $$.signedness = $1.signedness; +}; +UpRTypesV : UpRTypes | VOID { + $$.type = new PATypeHolder($1.type->get()); + $$.signedness = $1.signedness; +}; Types : UpRTypes { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); + GEN_ERROR("Invalid upreference in type: " + + ($1.type->get())->getDescription()); $$ = $1; CHECK_FOR_ERROR - }; +}; // Derived types are added later... @@ -1295,17 +1308,19 @@ Types : UpRTypes { PrimType : BOOL | SBYTE | UBYTE | SHORT | USHORT | INT | UINT ; PrimType : LONG | ULONG | FLOAT | DOUBLE | TYPE | LABEL; UpRTypes : OPAQUE { - $$ = new PATypeHolder(OpaqueType::get()); + $$.type = new PATypeHolder(OpaqueType::get()); + $$.signedness = isSignless; CHECK_FOR_ERROR } | PrimType { - $$ = new PATypeHolder($1); + $$ = $1; CHECK_FOR_ERROR }; UpRTypes : SymbolicValueRef { // Named types are also simple types... const Type* tmp = getTypeVal($1); CHECK_FOR_ERROR - $$ = new PATypeHolder(tmp); + $$.type = new PATypeHolder(tmp); + $$.signedness = isSignless; }; // Include derived types in the Types production. @@ -1314,59 +1329,69 @@ UpRTypes : '\\' EUINT64VAL { // Type UpReference if ($2 > (uint64_t)~0U) GEN_ERROR("Value out of range!"); OpaqueType *OT = OpaqueType::get(); // Use temporary placeholder UpRefs.push_back(UpRefRecord((unsigned)$2, OT)); // Add to vector... - $$ = new PATypeHolder(OT); + $$.type = new PATypeHolder(OT); + $$.signedness = isSignless; UR_OUT("New Upreference!\n"); CHECK_FOR_ERROR } | UpRTypesV '(' ArgTypeListI ')' { // Function derived type? std::vector<const Type*> Params; - for (std::list<llvm::PATypeHolder>::iterator I = $3->begin(), + for (std::list<TypeInfo>::iterator I = $3->begin(), E = $3->end(); I != E; ++I) - Params.push_back(*I); + Params.push_back(I->type->get()); bool isVarArg = Params.size() && Params.back() == Type::VoidTy; if (isVarArg) Params.pop_back(); - $$ = new PATypeHolder(HandleUpRefs(FunctionType::get(*$1,Params,isVarArg))); + $$.type = new PATypeHolder(HandleUpRefs( + FunctionType::get($1.type->get(),Params,isVarArg))); + $$.signedness = isSignless; delete $3; // Delete the argument list - delete $1; // Delete the return type handle + delete $1.type; CHECK_FOR_ERROR } | '[' EUINT64VAL 'x' UpRTypes ']' { // Sized array type? - $$ = new PATypeHolder(HandleUpRefs(ArrayType::get(*$4, (unsigned)$2))); - delete $4; + $$.type = new PATypeHolder(HandleUpRefs( + ArrayType::get($4.type->get(), (unsigned)$2))); + $$.signedness = isSignless; + delete $4.type; CHECK_FOR_ERROR } | '<' EUINT64VAL 'x' UpRTypes '>' { // Packed array type? - const llvm::Type* ElemTy = $4->get(); - if ((unsigned)$2 != $2) - GEN_ERROR("Unsigned result not equal to signed result"); - if (!ElemTy->isPrimitiveType()) - GEN_ERROR("Elemental type of a PackedType must be primitive"); - if (!isPowerOf2_32($2)) - GEN_ERROR("Vector length should be a power of 2!"); - $$ = new PATypeHolder(HandleUpRefs(PackedType::get(*$4, (unsigned)$2))); - delete $4; - CHECK_FOR_ERROR + const llvm::Type* ElemTy = $4.type->get(); + if ((unsigned)$2 != $2) + GEN_ERROR("Unsigned result not equal to signed result"); + if (!ElemTy->isPrimitiveType()) + GEN_ERROR("Elemental type of a PackedType must be primitive"); + if (!isPowerOf2_32($2)) + GEN_ERROR("Vector length should be a power of 2!"); + $$.type = new PATypeHolder(HandleUpRefs( + PackedType::get($4.type->get(), (unsigned)$2))); + $$.signedness = isSignless; + delete $4.type; + CHECK_FOR_ERROR } | '{' TypeListI '}' { // Structure type? std::vector<const Type*> Elements; - for (std::list<llvm::PATypeHolder>::iterator I = $2->begin(), + for (std::list<TypeInfo>::iterator I = $2->begin(), E = $2->end(); I != E; ++I) - Elements.push_back(*I); + Elements.push_back(I->type->get()); - $$ = new PATypeHolder(HandleUpRefs(StructType::get(Elements))); + $$.type = new PATypeHolder(HandleUpRefs(StructType::get(Elements))); + $$.signedness = isSignless; delete $2; CHECK_FOR_ERROR } | '{' '}' { // Empty structure type? - $$ = new PATypeHolder(StructType::get(std::vector<const Type*>())); + $$.type = new PATypeHolder(StructType::get(std::vector<const Type*>())); + $$.signedness = isSignless; CHECK_FOR_ERROR } | UpRTypes '*' { // Pointer type? - if (*$1 == Type::LabelTy) + if ($1.type->get() == Type::LabelTy) GEN_ERROR("Cannot form a pointer to a basic block"); - $$ = new PATypeHolder(HandleUpRefs(PointerType::get(*$1))); - delete $1; + $$.type = new PATypeHolder(HandleUpRefs(PointerType::get($1.type->get()))); + $$.signedness = $1.signedness; + delete $1.type; CHECK_FOR_ERROR }; @@ -1374,27 +1399,31 @@ UpRTypes : '\\' EUINT64VAL { // Type UpReference // declaration type lists // TypeListI : UpRTypes { - $$ = new std::list<PATypeHolder>(); - $$->push_back(*$1); delete $1; + $$ = new std::list<TypeInfo>(); + $$->push_back($1); CHECK_FOR_ERROR } | TypeListI ',' UpRTypes { - ($$=$1)->push_back(*$3); delete $3; + ($$=$1)->push_back($3); CHECK_FOR_ERROR }; // ArgTypeList - List of types for a function type declaration... ArgTypeListI : TypeListI | TypeListI ',' DOTDOTDOT { - ($$=$1)->push_back(Type::VoidTy); + TypeInfo TI; + TI.type = new PATypeHolder(Type::VoidTy); TI.signedness = isSignless; + ($$=$1)->push_back(TI); CHECK_FOR_ERROR } | DOTDOTDOT { - ($$ = new std::list<PATypeHolder>())->push_back(Type::VoidTy); + TypeInfo TI; + TI.type = new PATypeHolder(Type::VoidTy); TI.signedness = isSignless; + ($$ = new std::list<TypeInfo>())->push_back(TI); CHECK_FOR_ERROR } | /*empty*/ { - $$ = new std::list<PATypeHolder>(); + $$ = new std::list<TypeInfo>(); CHECK_FOR_ERROR }; @@ -1405,10 +1434,10 @@ ArgTypeListI : TypeListI // ResolvedVal, ValueRef and ConstValueRef productions. // ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr - const ArrayType *ATy = dyn_cast<ArrayType>($1->get()); + const ArrayType *ATy = dyn_cast<ArrayType>($1.type->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + - (*$1)->getDescription() + "'!"); + ($1.type->get())->getDescription() + "'!"); const Type *ETy = ATy->getElementType(); int NumElements = ATy->getNumElements(); @@ -1427,28 +1456,28 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr } $$ = ConstantArray::get(ATy, *$3); - delete $1; delete $3; + delete $1.type; delete $3; CHECK_FOR_ERROR } | Types '[' ']' { - const ArrayType *ATy = dyn_cast<ArrayType>($1->get()); + const ArrayType *ATy = dyn_cast<ArrayType>($1.type->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + - (*$1)->getDescription() + "'!"); + ($1.type->get())->getDescription() + "'!"); int NumElements = ATy->getNumElements(); if (NumElements != -1 && NumElements != 0) GEN_ERROR("Type mismatch: constant sized array initialized with 0" " arguments, but has size of " + itostr(NumElements) +"!"); $$ = ConstantArray::get(ATy, std::vector<Constant*>()); - delete $1; + delete $1.type; CHECK_FOR_ERROR } | Types 'c' STRINGCONSTANT { - const ArrayType *ATy = dyn_cast<ArrayType>($1->get()); + const ArrayType *ATy = dyn_cast<ArrayType>($1.type->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + - (*$1)->getDescription() + "'!"); + ($1.type->get())->getDescription() + "'!"); int NumElements = ATy->getNumElements(); const Type *ETy = ATy->getElementType(); @@ -1471,14 +1500,14 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr } free($3); $$ = ConstantArray::get(ATy, Vals); - delete $1; + delete $1.type; CHECK_FOR_ERROR } | Types '<' ConstVector '>' { // Nonempty unsized arr - const PackedType *PTy = dyn_cast<PackedType>($1->get()); + const PackedType *PTy = dyn_cast<PackedType>($1.type->get()); if (PTy == 0) GEN_ERROR("Cannot make packed constant with type: '" + - (*$1)->getDescription() + "'!"); + $1.type->get()->getDescription() + "'!"); const Type *ETy = PTy->getElementType(); int NumElements = PTy->getNumElements(); @@ -1497,14 +1526,14 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr } $$ = ConstantPacked::get(PTy, *$3); - delete $1; delete $3; + delete $1.type; delete $3; CHECK_FOR_ERROR } | Types '{' ConstVector '}' { - const StructType *STy = dyn_cast<StructType>($1->get()); + const StructType *STy = dyn_cast<StructType>($1.type->get()); if (STy == 0) GEN_ERROR("Cannot make struct constant with type: '" + - (*$1)->getDescription() + "'!"); + $1.type->get()->getDescription() + "'!"); if ($3->size() != STy->getNumContainedTypes()) GEN_ERROR("Illegal number of initializers for structure type!"); @@ -1518,39 +1547,39 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr " of structure initializer!"); $$ = ConstantStruct::get(STy, *$3); - delete $1; delete $3; + delete $1.type; delete $3; CHECK_FOR_ERROR } | Types '{' '}' { - const StructType *STy = dyn_cast<StructType>($1->get()); + const StructType *STy = dyn_cast<StructType>($1.type->get()); if (STy == 0) GEN_ERROR("Cannot make struct constant with type: '" + - (*$1)->getDescription() + "'!"); + $1.type->get()->getDescription() + "'!"); if (STy->getNumContainedTypes() != 0) GEN_ERROR("Illegal number of initializers for structure type!"); $$ = ConstantStruct::get(STy, std::vector<Constant*>()); - delete $1; + delete $1.type; CHECK_FOR_ERROR } | Types NULL_TOK { - const PointerType *PTy = dyn_cast<PointerType>($1->get()); + const PointerType *PTy = dyn_cast<PointerType>($1.type->get()); if (PTy == 0) GEN_ERROR("Cannot make null pointer constant with type: '" + - (*$1)->getDescription() + "'!"); + $1.type->get()->getDescription() + "'!"); $$ = ConstantPointerNull::get(PTy); - delete $1; + delete $1.type; CHECK_FOR_ERROR } | Types UNDEF { - $$ = UndefValue::get($1->get()); - delete $1; + $$ = UndefValue::get($1.type->get()); + delete $1.type; CHECK_FOR_ERROR } | Types SymbolicValueRef { - const PointerType *Ty = dyn_cast<PointerType>($1->get()); + const PointerType *Ty = dyn_cast<PointerType>($1.type->get()); if (Ty == 0) GEN_ERROR("Global const reference must be a pointer type!"); @@ -1607,35 +1636,35 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr } $$ = cast<GlobalValue>(V); - delete $1; // Free the type handle + delete $1.type; // Free the type handle CHECK_FOR_ERROR } | Types ConstExpr { - if ($1->get() != $2->getType()) + if ($1.type->get() != $2->getType()) GEN_ERROR("Mismatched types for constant expression!"); $$ = $2; - delete $1; + delete $1.type; CHECK_FOR_ERROR } | Types ZEROINITIALIZER { - const Type *Ty = $1->get(); + const Type *Ty = $1.type->get(); if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty)) GEN_ERROR("Cannot create a null initialized value of this type!"); $$ = Constant::getNullValue(Ty); - delete $1; + delete $1.type; CHECK_FOR_ERROR }; ConstVal : SIntType EINT64VAL { // integral constants - if (!ConstantInt::isValueValidForType($1, $2)) + if (!ConstantInt::isValueValidForType($1.type->get(), $2)) GEN_ERROR("Constant value doesn't fit in type!"); - $$ = ConstantInt::get($1, $2); + $$ = ConstantInt::get($1.type->get(), $2); CHECK_FOR_ERROR } | UIntType EUINT64VAL { // integral constants - if (!ConstantInt::isValueValidForType($1, $2)) + if (!ConstantInt::isValueValidForType($1.type->get(), $2)) GEN_ERROR("Constant value doesn't fit in type!"); - $$ = ConstantInt::get($1, $2); + $$ = ConstantInt::get($1.type->get(), $2); CHECK_FOR_ERROR } | BOOL TRUETOK { // Boolean constants @@ -1647,23 +1676,38 @@ ConstVal : SIntType EINT64VAL { // integral constants CHECK_FOR_ERROR } | FPType FPVAL { // Float & Double constants - if (!ConstantFP::isValueValidForType($1, $2)) + if (!ConstantFP::isValueValidForType($1.type->get(), $2)) GEN_ERROR("Floating point constant invalid for type!!"); - $$ = ConstantFP::get($1, $2); + $$ = ConstantFP::get($1.type->get(), $2); CHECK_FOR_ERROR }; -ConstExpr: CAST '(' ConstVal TO Types ')' { - if (!$3->getType()->isFirstClassType()) +ConstExpr: CastOps '(' ConstVal TO Types ')' { + Constant *Val = $3; + const Type *Ty = $5.type->get(); + if (!Val->getType()->isFirstClassType()) GEN_ERROR("cast constant expression from a non-primitive type: '" + - $3->getType()->getDescription() + "'!"); - if (!$5->get()->isFirstClassType()) + Val->getType()->getDescription() + "'!"); + if (!Ty->isFirstClassType()) GEN_ERROR("cast constant expression to a non-primitive type: '" + - $5->get()->getDescription() + "'!"); - $$ = ConstantExpr::getCast($3, $5->get()); - delete $5; - CHECK_FOR_ERROR + Ty->getDescription() + "'!"); + if ($1.obsolete) { + if (Ty == Type::BoolTy) { + // The previous definition of cast to bool was a compare against zero. + // We have to retain that semantic so we do it here. + $$ = ConstantExpr::get(Instruction::SetNE, Val, + Constant::getNullValue(Val->getType())); + } else if (Val->getType()->isFloatingPoint() && isa<PointerType>(Ty)) { + Constant *CE = ConstantExpr::getFPToUI(Val, Type::ULongTy); + $$ = ConstantExpr::getIntToPtr(CE, Ty); + } else { + $$ = ConstantExpr::getCast(Val, Ty); + } + } else { + $$ = ConstantExpr::getCast($1.opcode, $3, $5.type->get()); + } + delete $5.type; } | GETELEMENTPTR '(' ConstVal IndexList ')' { if (!isa<PointerType>($3->getType())) @@ -1710,7 +1754,7 @@ ConstExpr: CAST '(' ConstVal TO Types ')' { GEN_ERROR("Binary operator types must match!"); // First, make sure we're dealing with the right opcode by upgrading from // obsolete versions. - sanitizeOpCode($1,$3->getType()); + sanitizeOpcode($1, $3->getType()); CHECK_FOR_ERROR; // HACK: llvm 1.3 and earlier used to emit invalid pointer constant exprs. @@ -1755,7 +1799,7 @@ ConstExpr: CAST '(' ConstVal TO Types ')' { if (!$3->getType()->isInteger()) GEN_ERROR("Shift constant expression requires integer operand!"); // Handle opcode upgrade situations - sanitizeOpCode($1, $3->getType()); + sanitizeOpcode($1, $3->getType()); CHECK_FOR_ERROR; $$ = ConstantExpr::get($1.opcode, $3, $5); CHECK_FOR_ERROR @@ -1853,16 +1897,16 @@ ConstPool : ConstPool OptAssign TYPE TypesV { // If types are not resolved eagerly, then the two types will not be // determined to be the same type! // - ResolveTypeTo($2, *$4); + ResolveTypeTo($2, $4.type->get()); - if (!setTypeName(*$4, $2) && !$2) { + if (!setTypeName($4.type->get(), $2) && !$2) { CHECK_FOR_ERROR // If this is a named type that is not a redefinition, add it to the slot // table. - CurModule.Types.push_back(*$4); + CurModule.Types.push_back($4); + } else { + delete $4.type; } - - delete $4; CHECK_FOR_ERROR } | ConstPool FunctionProto { // Function prototypes can be in const pool @@ -1880,26 +1924,29 @@ ConstPool : ConstPool OptAssign TYPE TypesV { CurGV = 0; } | ConstPool OptAssign EXTERNAL GlobalType Types { - CurGV = ParseGlobalVariable($2, GlobalValue::ExternalLinkage, $4, *$5, 0); + CurGV = ParseGlobalVariable($2, GlobalValue::ExternalLinkage, $4, + $5.type->get(), 0); CHECK_FOR_ERROR - delete $5; + delete $5.type; } GlobalVarAttributes { CurGV = 0; CHECK_FOR_ERROR } | ConstPool OptAssign DLLIMPORT GlobalType Types { - CurGV = ParseGlobalVariable($2, GlobalValue::DLLImportLinkage, $4, *$5, 0); + CurGV = ParseGlobalVariable($2, GlobalValue::DLLImportLinkage, $4, + $5.type->get(), 0); CHECK_FOR_ERROR - delete $5; + delete $5.type; } GlobalVarAttributes { CurGV = 0; CHECK_FOR_ERROR } | ConstPool OptAssign EXTERN_WEAK GlobalType Types { CurGV = - ParseGlobalVariable($2, GlobalValue::ExternalWeakLinkage, $4, *$5, 0); + ParseGlobalVariable($2, GlobalValue::ExternalWeakLinkage, $4, + $5.type->get(), 0); CHECK_FOR_ERROR - delete $5; + delete $5.type; } GlobalVarAttributes { CurGV = 0; CHECK_FOR_ERROR @@ -1977,9 +2024,9 @@ Name : VAR_ID | STRINGCONSTANT; OptName : Name | /*empty*/ { $$ = 0; }; ArgVal : Types OptName { - if (*$1 == Type::VoidTy) + if ($1.type->get() == Type::VoidTy) GEN_ERROR("void typed arguments are invalid!"); - $$ = new std::pair<PATypeHolder*, char*>($1, $2); + $$ = new std::pair<TypeInfo, char*>($1, $2); CHECK_FOR_ERROR }; @@ -1990,7 +2037,7 @@ ArgListH : ArgListH ',' ArgVal { CHECK_FOR_ERROR } | ArgVal { - $$ = new std::vector<std::pair<PATypeHolder*,char*> >(); + $$ = new std::vector<std::pair<TypeInfo,char*> >(); $$->push_back(*$1); delete $1; CHECK_FOR_ERROR @@ -2002,13 +2049,18 @@ ArgList : ArgListH { } | ArgListH ',' DOTDOTDOT { $$ = $1; - $$->push_back(std::pair<PATypeHolder*, - char*>(new PATypeHolder(Type::VoidTy), 0)); + TypeInfo TI; + TI.type = new PATypeHolder(Type::VoidTy); + TI.signedness = isSignless; + $$->push_back(std::pair<TypeInfo,char*>(TI,(char*)0)); CHECK_FOR_ERROR } | DOTDOTDOT { - $$ = new std::vector<std::pair<PATypeHolder*,char*> >(); - $$->push_back(std::make_pair(new PATypeHolder(Type::VoidTy), (char*)0)); + $$ = new std::vector<std::pair<TypeInfo,char*> >(); + TypeInfo TI; + TI.type = new PATypeHolder(Type::VoidTy); + TI.signedness = isSignless; + $$->push_back(std::make_pair(TI, (char*)0)); CHECK_FOR_ERROR } | /* empty */ { @@ -2022,22 +2074,23 @@ FunctionHeaderH : OptCallingConv TypesV Name '(' ArgList ')' std::string FunctionName($3); free($3); // Free strdup'd memory! - if (!(*$2)->isFirstClassType() && *$2 != Type::VoidTy) + if (!($2.type->get())->isFirstClassType() && $2.type->get() != Type::VoidTy) GEN_ERROR("LLVM functions cannot return aggregate types!"); std::vector<const Type*> ParamTypeList; if ($5) { // If there are arguments... - for (std::vector<std::pair<PATypeHolder*,char*> >::iterator I = $5->begin(); + for (std::vector<std::pair<TypeInfo,char*> >::iterator I = $5->begin(); I != $5->end(); ++I) - ParamTypeList.push_back(I->first->get()); + ParamTypeList.push_back(I->first.type->get()); } bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy; if (isVarArg) ParamTypeList.pop_back(); - const FunctionType *FT = FunctionType::get(*$2, ParamTypeList, isVarArg); + const FunctionType *FT = FunctionType::get($2.type->get(), ParamTypeList, + isVarArg); const PointerType *PFT = PointerType::get(FT); - delete $2; + delete $2.type; ValID ID; if (!FunctionName.empty()) { @@ -2091,21 +2144,19 @@ FunctionHeaderH : OptCallingConv TypesV Name '(' ArgList ')' // Add all of the arguments we parsed to the function... if ($5) { // Is null if empty... if (isVarArg) { // Nuke the last entry - assert($5->back().first->get() == Type::VoidTy && $5->back().second == 0&& - "Not a varargs marker!"); - delete $5->back().first; + assert($5->back().first.type->get() == Type::VoidTy && + $5->back().second == 0 && "Not a varargs marker!"); + delete $5->back().first.type; $5->pop_back(); // Delete the last entry } Function::arg_iterator ArgIt = Fn->arg_begin(); - for (std::vector<std::pair<PATypeHolder*,char*> >::iterator I = $5->begin(); + for (std::vector<std::pair<TypeInfo,char*> >::iterator I = $5->begin(); I != $5->end(); ++I, ++ArgIt) { - delete I->first; // Delete the typeholder... - + delete I->first.type; // Delete the typeholder... setValueName(ArgIt, I->second); // Insert arg into symtab... CHECK_FOR_ERROR InsertValue(ArgIt); } - delete $5; // We're now done with the argument list } CHECK_FOR_ERROR @@ -2189,12 +2240,7 @@ ConstValueRef : ESINT64VAL { // A reference to a direct constant PackedType* pt = PackedType::get(ETy, NumElements); PATypeHolder* PTy = new PATypeHolder( - HandleUpRefs( - PackedType::get( - ETy, - NumElements) - ) - ); + HandleUpRefs(PackedType::get( ETy, NumElements))); // Verify all elements are correct type! for (unsigned i = 0; i < $2->size(); i++) { @@ -2243,7 +2289,7 @@ ValueRef : SymbolicValueRef | ConstValueRef; // type immediately preceeds the value reference, and allows complex constant // pool references (for things like: 'ret [2 x int] [ int 12, int 42]') ResolvedVal : Types ValueRef { - $$ = getVal(*$1, $2); delete $1; + $$ = getVal($1.type->get(), $2); delete $1.type; CHECK_FOR_ERROR }; @@ -2272,6 +2318,10 @@ BasicBlock : InstructionList OptAssign BBTerminatorInst { }; InstructionList : InstructionList Inst { + if (CastInst *CI1 = dyn_cast<CastInst>($2)) + if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0))) + if (CI2->getParent() == 0) + $1->getInstList().push_back(CI2); $1->getInstList().push_back($2); $$ = $1; CHECK_FOR_ERROR @@ -2324,7 +2374,7 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... $$ = new BranchInst(tmpBBA, tmpBBB, tmpVal); } | SWITCH IntType ValueRef ',' LABEL ValueRef '[' JumpTable ']' { - Value* tmpVal = getVal($2, $3); + Value* tmpVal = getVal($2.type->get(), $3); CHECK_FOR_ERROR BasicBlock* tmpBB = getBBVal($6); CHECK_FOR_ERROR @@ -2343,7 +2393,7 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... CHECK_FOR_ERROR } | SWITCH IntType ValueRef ',' LABEL ValueRef '[' ']' { - Value* tmpVal = getVal($2, $3); + Value* tmpVal = getVal($2.type->get(), $3); CHECK_FOR_ERROR BasicBlock* tmpBB = getBBVal($6); CHECK_FOR_ERROR @@ -2356,7 +2406,7 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... const PointerType *PFTy; const FunctionType *Ty; - if (!(PFTy = dyn_cast<PointerType>($3->get())) || + if (!(PFTy = dyn_cast<PointerType>($3.type->get())) || !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) { // Pull out the types of all of the arguments... std::vector<const Type*> ParamTypes; @@ -2369,7 +2419,7 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; if (isVarArg) ParamTypes.pop_back(); - Ty = FunctionType::get($3->get(), ParamTypes, isVarArg); + Ty = FunctionType::get($3.type->get(), ParamTypes, isVarArg); PFTy = PointerType::get(Ty); } @@ -2403,7 +2453,7 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... } cast<InvokeInst>($$)->setCallingConv($2); - delete $3; + delete $3.type; delete $6; CHECK_FOR_ERROR } @@ -2420,7 +2470,7 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... JumpTable : JumpTable IntType ConstValueRef ',' LABEL ValueRef { $$ = $1; - Constant *V = cast<Constant>(getValNonImprovising($2, $3)); + Constant *V = cast<Constant>(getValNonImprovising($2.type->get(), $3)); CHECK_FOR_ERROR if (V == 0) GEN_ERROR("May only switch on a constant pool value!"); @@ -2431,7 +2481,7 @@ JumpTable : JumpTable IntType ConstValueRef ',' LABEL ValueRef { } | IntType ConstValueRef ',' LABEL ValueRef { $$ = new std::vector<std::pair<Constant*, BasicBlock*> >(); - Constant *V = cast<Constant>(getValNonImprovising($1, $2)); + Constant *V = cast<Constant>(getValNonImprovising($1.type->get(), $2)); CHECK_FOR_ERROR if (V == 0) @@ -2453,12 +2503,12 @@ Inst : OptAssign InstVal { PHIList : Types '[' ValueRef ',' ValueRef ']' { // Used for PHI nodes $$ = new std::list<std::pair<Value*, BasicBlock*> >(); - Value* tmpVal = getVal(*$1, $3); + Value* tmpVal = getVal($1.type->get(), $3); CHECK_FOR_ERROR BasicBlock* tmpBB = getBBVal($5); CHECK_FOR_ERROR $$->push_back(std::make_pair(tmpVal, tmpBB)); - delete $1; + delete $1.type; } | PHIList ',' '[' ValueRef ',' ValueRef ']' { $$ = $1; @@ -2493,55 +2543,55 @@ OptTailCall : TAIL CALL { }; InstVal : ArithmeticOps Types ValueRef ',' ValueRef { - if (!(*$2)->isInteger() && !(*$2)->isFloatingPoint() && - !isa<PackedType>((*$2).get())) + if (!$2.type->get()->isInteger() && !$2.type->get()->isFloatingPoint() && + !isa<PackedType>($2.type->get())) GEN_ERROR( "Arithmetic operator requires integer, FP, or packed operands!"); - if (isa<PackedType>((*$2).get()) && + if (isa<PackedType>($2.type->get()) && ($1.opcode == Instruction::URem || $1.opcode == Instruction::SRem || $1.opcode == Instruction::FRem)) GEN_ERROR("U/S/FRem not supported on packed types!"); // Upgrade the opcode from obsolete versions before we do anything with it. - sanitizeOpCode($1,*$2); + sanitizeOpcode($1,$2.type->get()); CHECK_FOR_ERROR; - Value* val1 = getVal(*$2, $3); + Value* val1 = getVal($2.type->get(), $3); CHECK_FOR_ERROR - Value* val2 = getVal(*$2, $5); + Value* val2 = getVal($2.type->get(), $5); CHECK_FOR_ERROR $$ = BinaryOperator::create($1.opcode, val1, val2); if ($$ == 0) GEN_ERROR("binary operator returned null!"); - delete $2; + delete $2.type; } | LogicalOps Types ValueRef ',' ValueRef { - if (!(*$2)->isIntegral()) { - if (!isa<PackedType>($2->get()) || - !cast<PackedType>($2->get())->getElementType()->isIntegral()) + if (!$2.type->get()->isIntegral()) { + if (!isa<PackedType>($2.type->get()) || + !cast<PackedType>($2.type->get())->getElementType()->isIntegral()) GEN_ERROR("Logical operator requires integral operands!"); } - Value* tmpVal1 = getVal(*$2, $3); + Value* tmpVal1 = getVal($2.type->get(), $3); CHECK_FOR_ERROR - Value* tmpVal2 = getVal(*$2, $5); + Value* tmpVal2 = getVal($2.type->get(), $5); CHECK_FOR_ERROR $$ = BinaryOperator::create($1.opcode, tmpVal1, tmpVal2); if ($$ == 0) GEN_ERROR("binary operator returned null!"); - delete $2; + delete $2.type; } | SetCondOps Types ValueRef ',' ValueRef { - if(isa<PackedType>((*$2).get())) { + if(isa<PackedType>($2.type->get())) { GEN_ERROR( "PackedTypes currently not supported in setcc instructions!"); } - Value* tmpVal1 = getVal(*$2, $3); + Value* tmpVal1 = getVal($2.type->get(), $3); CHECK_FOR_ERROR - Value* tmpVal2 = getVal(*$2, $5); + Value* tmpVal2 = getVal($2.type->get(), $5); CHECK_FOR_ERROR $$ = new SetCondInst($1.opcode, tmpVal1, tmpVal2); if ($$ == 0) GEN_ERROR("binary operator returned null!"); - delete $2; + delete $2.type; } | NOT ResolvedVal { std::cerr << "WARNING: Use of eliminated 'not' instruction:" @@ -2562,18 +2612,36 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { if (!$2->getType()->isInteger()) GEN_ERROR("Shift constant expression requires integer operand!"); // Handle opcode upgrade situations - sanitizeOpCode($1, $2->getType()); + sanitizeOpcode($1, $2->getType()); CHECK_FOR_ERROR; $$ = new ShiftInst($1.opcode, $2, $4); CHECK_FOR_ERROR } - | CAST ResolvedVal TO Types { - if (!$4->get()->isFirstClassType()) - GEN_ERROR("cast instruction to a non-primitive type: '" + - $4->get()->getDescription() + "'!"); - $$ = new CastInst($2, *$4); - delete $4; - CHECK_FOR_ERROR + | CastOps ResolvedVal TO Types { + Value* Val = $2; + const Type* Ty = $4.type->get(); + if (!Val->getType()->isFirstClassType()) + GEN_ERROR("cast from a non-primitive type: '" + + Val->getType()->getDescription() + "'!"); + if (!Ty->isFirstClassType()) + GEN_ERROR("cast to a non-primitive type: '" + Ty->getDescription() +"'!"); + + if ($1.obsolete) { + if (Ty == Type::BoolTy) { + // The previous definition of cast to bool was a compare against zero. + // We have to retain that semantic so we do it here. + $$ = new SetCondInst(Instruction::SetNE, $2, + Constant::getNullValue($2->getType())); + } else if (Val->getType()->isFloatingPoint() && isa<PointerType>(Ty)) { + CastInst *CI = new FPToUIInst(Val, Type::ULongTy); + $$ = new IntToPtrInst(CI, Ty); + } else { + $$ = CastInst::createInferredCast(Val, Ty); + } + } else { + $$ = CastInst::create($1.opcode, $2, $4.type->get()); + } + delete $4.type; } | SELECT ResolvedVal ',' ResolvedVal ',' ResolvedVal { if ($2->getType() != Type::BoolTy) @@ -2585,8 +2653,8 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { } | VAARG ResolvedVal ',' Types { NewVarArgs = true; - $$ = new VAArgInst($2, *$4); - delete $4; + $$ = new VAArgInst($2, $4.type->get()); + delete $4.type; CHECK_FOR_ERROR } | VAARG_old ResolvedVal ',' Types { @@ -2605,8 +2673,8 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { CallInst* bar = new CallInst(NF, $2); CurBB->getInstList().push_back(bar); CurBB->getInstList().push_back(new StoreInst(bar, foo)); - $$ = new VAArgInst(foo, *$4); - delete $4; + $$ = new VAArgInst(foo, $4.type->get()); + delete $4.type; CHECK_FOR_ERROR } | VANEXT_old ResolvedVal ',' Types { @@ -2626,10 +2694,10 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { CallInst* bar = new CallInst(NF, $2); CurBB->getInstList().push_back(bar); CurBB->getInstList().push_back(new StoreInst(bar, foo)); - Instruction* tmp = new VAArgInst(foo, *$4); + Instruction* tmp = new VAArgInst(foo, $4.type->get()); CurBB->getInstList().push_back(tmp); $$ = new LoadInst(foo); - delete $4; + delete $4.type; CHECK_FOR_ERROR } | EXTRACTELEMENT ResolvedVal ',' ResolvedVal { @@ -2666,10 +2734,10 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { CHECK_FOR_ERROR } | OptTailCall OptCallingConv TypesV ValueRef '(' ValueRefListE ')' { - const PointerType *PFTy; - const FunctionType *Ty; + const PointerType *PFTy = 0; + const FunctionType *Ty = 0; - if (!(PFTy = dyn_cast<PointerType>($3->get())) || + if (!(PFTy = dyn_cast<PointerType>($3.type->get())) || !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) { // Pull out the types of all of the arguments... std::vector<const Type*> ParamTypes; @@ -2682,10 +2750,11 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; if (isVarArg) ParamTypes.pop_back(); - if (!(*$3)->isFirstClassType() && *$3 != Type::VoidTy) + if (!$3.type->get()->isFirstClassType() && + $3.type->get() != Type::VoidTy) GEN_ERROR("LLVM functions cannot return aggregate types!"); - Ty = FunctionType::get($3->get(), ParamTypes, isVarArg); + Ty = FunctionType::get($3.type->get(), ParamTypes, isVarArg); PFTy = PointerType::get(Ty); } @@ -2720,7 +2789,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { } cast<CallInst>($$)->setTailCall($1); cast<CallInst>($$)->setCallingConv($2); - delete $3; + delete $3.type; delete $6; CHECK_FOR_ERROR } @@ -2751,26 +2820,26 @@ OptVolatile : VOLATILE { MemoryInst : MALLOC Types OptCAlign { - $$ = new MallocInst(*$2, 0, $3); - delete $2; + $$ = new MallocInst($2.type->get(), 0, $3); + delete $2.type; CHECK_FOR_ERROR } | MALLOC Types ',' UINT ValueRef OptCAlign { - Value* tmpVal = getVal($4, $5); + Value* tmpVal = getVal($4.type->get(), $5); CHECK_FOR_ERROR - $$ = new MallocInst(*$2, tmpVal, $6); - delete $2; + $$ = new MallocInst($2.type->get(), tmpVal, $6); + delete $2.type; } | ALLOCA Types OptCAlign { - $$ = new AllocaInst(*$2, 0, $3); - delete $2; + $$ = new AllocaInst($2.type->get(), 0, $3); + delete $2.type; CHECK_FOR_ERROR } | ALLOCA Types ',' UINT ValueRef OptCAlign { - Value* tmpVal = getVal($4, $5); + Value* tmpVal = getVal($4.type->get(), $5); CHECK_FOR_ERROR - $$ = new AllocaInst(*$2, tmpVal, $6); - delete $2; + $$ = new AllocaInst($2.type->get(), tmpVal, $6); + delete $2.type; } | FREE ResolvedVal { if (!isa<PointerType>($2->getType())) @@ -2781,54 +2850,54 @@ MemoryInst : MALLOC Types OptCAlign { } | OptVolatile LOAD Types ValueRef { - if (!isa<PointerType>($3->get())) + if (!isa<PointerType>($3.type->get())) GEN_ERROR("Can't load from nonpointer type: " + - (*$3)->getDescription()); - if (!cast<PointerType>($3->get())->getElementType()->isFirstClassType()) + $3.type->get()->getDescription()); + if (!cast<PointerType>($3.type->get())->getElementType()->isFirstClassType()) GEN_ERROR("Can't load from pointer of non-first-class type: " + - (*$3)->getDescription()); - Value* tmpVal = getVal(*$3, $4); + $3.type->get()->getDescription()); + Value* tmpVal = getVal($3.type->get(), $4); CHECK_FOR_ERROR $$ = new LoadInst(tmpVal, "", $1); - delete $3; + delete $3.type; } | OptVolatile STORE ResolvedVal ',' Types ValueRef { - const PointerType *PT = dyn_cast<PointerType>($5->get()); + const PointerType *PT = dyn_cast<PointerType>($5.type->get()); if (!PT) GEN_ERROR("Can't store to a nonpointer type: " + - (*$5)->getDescription()); + ($5.type->get())->getDescription()); const Type *ElTy = PT->getElementType(); if (ElTy != $3->getType()) GEN_ERROR("Can't store '" + $3->getType()->getDescription() + "' into space of type '" + ElTy->getDescription() + "'!"); - Value* tmpVal = getVal(*$5, $6); + Value* tmpVal = getVal($5.type->get(), $6); CHECK_FOR_ERROR $$ = new StoreInst($3, tmpVal, $1); - delete $5; + delete $5.type; } | GETELEMENTPTR Types ValueRef IndexList { - if (!isa<PointerType>($2->get())) + if (!isa<PointerType>($2.type->get())) GEN_ERROR("getelementptr insn requires pointer operand!"); // LLVM 1.2 and earlier used ubyte struct indices. Convert any ubyte struct // indices to uint struct indices for compatibility. generic_gep_type_iterator<std::vector<Value*>::iterator> - GTI = gep_type_begin($2->get(), $4->begin(), $4->end()), - GTE = gep_type_end($2->get(), $4->begin(), $4->end()); + GTI = gep_type_begin($2.type->get(), $4->begin(), $4->end()), + GTE = gep_type_end($2.type->get(), $4->begin(), $4->end()); for (unsigned i = 0, e = $4->size(); i != e && GTI != GTE; ++i, ++GTI) if (isa<StructType>(*GTI)) // Only change struct indices if (ConstantInt *CUI = dyn_cast<ConstantInt>((*$4)[i])) if (CUI->getType() == Type::UByteTy) (*$4)[i] = ConstantExpr::getCast(CUI, Type::UIntTy); - if (!GetElementPtrInst::getIndexedType(*$2, *$4, true)) + if (!GetElementPtrInst::getIndexedType($2.type->get(), *$4, true)) GEN_ERROR("Invalid getelementptr indices for type '" + - (*$2)->getDescription()+ "'!"); - Value* tmpVal = getVal(*$2, $3); + $2.type->get()->getDescription()+ "'!"); + Value* tmpVal = getVal($2.type->get(), $3); CHECK_FOR_ERROR $$ = new GetElementPtrInst(tmpVal, *$4); - delete $2; + delete $2.type; delete $4; }; |