From 1431061ebb94bd84ae3eb52e7cf8068a849e611a Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Sun, 31 Dec 2006 05:40:51 +0000 Subject: For PR950: Regenerate git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32782 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AsmParser/Lexer.cpp.cvs | 1472 ++++++++------- lib/AsmParser/Lexer.l.cvs | 12 +- lib/AsmParser/ParserInternals.h | 23 + lib/AsmParser/llvmAsmParser.cpp.cvs | 3370 ++++++++++++++++++----------------- lib/AsmParser/llvmAsmParser.h.cvs | 525 +++--- lib/AsmParser/llvmAsmParser.y.cvs | 654 ++++--- 6 files changed, 3193 insertions(+), 2863 deletions(-) (limited to 'lib/AsmParser') diff --git a/lib/AsmParser/Lexer.cpp.cvs b/lib/AsmParser/Lexer.cpp.cvs index a0da315..cc66a3f 100644 --- a/lib/AsmParser/Lexer.cpp.cvs +++ b/lib/AsmParser/Lexer.cpp.cvs @@ -317,37 +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 142 -#define YY_END_OF_BUFFER 143 -static yyconst short int yy_acclist[220] = +#define YY_NUM_RULES 138 +#define YY_END_OF_BUFFER 139 +static yyconst short int yy_acclist[216] = { 0, - 143, 141, 142, 140, 141, 142, 140, 142, 141, 142, - 141, 142, 141, 142, 141, 142, 141, 142, 141, 142, - 133, 141, 142, 133, 141, 142, 1, 141, 142, 141, - 142, 141, 142, 141, 142, 141, 142, 141, 142, 141, - 142, 141, 142, 141, 142, 141, 142, 141, 142, 141, - 142, 141, 142, 141, 142, 141, 142, 141, 142, 141, - 142, 141, 142, 141, 142, 141, 142, 141, 142, 141, - 142, 132, 130, 129, 129, 136, 134, 138, 133, 1, - 115, 39, 75, 76, 71, 23, 132, 129, 129, 137, - 138, 20, 138, 139, 61, 70, 37, 32, 40, 3, - - 52, 63, 85, 90, 88, 89, 87, 86, 91, 95, - 114, 80, 78, 110, 79, 77, 62, 93, 84, 82, - 83, 81, 94, 92, 72, 131, 138, 138, 112, 47, - 96, 74, 66, 122, 69, 73, 123, 54, 111, 22, - 135, 65, 99, 68, 24, 4, 59, 64, 53, 67, - 46, 12, 98, 138, 34, 2, 5, 56, 101, 58, - 48, 50, 124, 97, 49, 55, 21, 121, 43, 7, - 57, 28, 42, 105, 104, 8, 117, 31, 120, 36, - 60, 109, 103, 116, 25, 26, 102, 118, 51, 113, - 108, 41, 6, 27, 100, 35, 9, 17, 10, 106, - - 11, 107, 33, 13, 15, 14, 30, 38, 16, 29, - 119, 125, 127, 128, 44, 126, 18, 45, 19 + 139, 137, 138, 136, 137, 138, 136, 138, 137, 138, + 137, 138, 137, 138, 137, 138, 137, 138, 137, 138, + 129, 137, 138, 129, 137, 138, 1, 137, 138, 137, + 138, 137, 138, 137, 138, 137, 138, 137, 138, 137, + 138, 137, 138, 137, 138, 137, 138, 137, 138, 137, + 138, 137, 138, 137, 138, 137, 138, 137, 138, 137, + 138, 137, 138, 137, 138, 137, 138, 137, 138, 137, + 138, 128, 126, 125, 125, 132, 130, 134, 129, 1, + 111, 39, 71, 48, 72, 67, 23, 128, 125, 125, + 133, 134, 20, 134, 135, 57, 66, 37, 32, 40, + + 3, 49, 50, 51, 59, 81, 86, 84, 85, 83, + 82, 87, 91, 110, 76, 74, 106, 75, 73, 58, + 89, 80, 78, 79, 77, 90, 88, 68, 127, 134, + 134, 108, 47, 92, 70, 62, 118, 65, 69, 119, + 107, 22, 131, 61, 95, 64, 24, 4, 55, 60, + 63, 46, 12, 94, 134, 34, 2, 5, 52, 97, + 54, 120, 93, 21, 117, 43, 7, 53, 28, 42, + 101, 100, 8, 113, 31, 116, 36, 56, 105, 99, + 112, 25, 26, 98, 114, 109, 104, 41, 6, 27, + 96, 35, 9, 17, 10, 102, 11, 103, 33, 13, + + 15, 14, 30, 38, 16, 29, 115, 121, 123, 124, + 44, 122, 18, 45, 19 } ; -static yyconst short int yy_accept[574] = +static yyconst short int yy_accept[558] = { 0, 1, 1, 1, 2, 4, 7, 9, 11, 13, 15, 17, 19, 21, 24, 27, 30, 32, 34, 36, 38, @@ -357,61 +357,59 @@ static yyconst short int yy_accept[574] = 81, 81, 81, 81, 81, 81, 81, 81, 81, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, - 85, 85, 85, 85, 85, 85, 86, 86, 86, 86, + 84, 84, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 88, 89, 91, 92, 93, 94, 94, 95, - 96, 96, 96, 97, 97, 97, 98, 98, 99, 99, - 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 103, 103, 104, - 105, 106, 107, 108, 109, 109, 110, 111, 111, 111, - - 112, 112, 112, 112, 112, 112, 112, 113, 114, 115, - 115, 115, 115, 115, 116, 117, 117, 117, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 119, 120, 121, - 121, 121, 122, 122, 123, 123, 124, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, - 127, 128, 128, 128, 128, 129, 129, 129, 129, 130, - 130, 130, 131, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 133, - 134, 134, 134, 134, 134, 135, 136, 136, 136, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 138, 139, - - 140, 140, 140, 141, 141, 141, 141, 142, 142, 143, - 143, 143, 144, 144, 144, 144, 144, 145, 145, 145, - 146, 146, 146, 147, 147, 148, 148, 149, 150, 150, - 150, 150, 150, 150, 151, 151, 151, 152, 152, 153, - 153, 153, 154, 155, 156, 156, 156, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 158, 158, 159, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 161, 161, 161, 161, - 161, 161, 161, 161, 162, 162, 162, 163, 163, 163, - 163, 164, 164, 164, 164, 165, 166, 166, 167, 168, - - 168, 168, 168, 168, 168, 168, 168, 168, 169, 169, - 169, 170, 170, 170, 170, 170, 171, 171, 171, 171, - 172, 173, 173, 173, 174, 175, 176, 176, 176, 177, - 177, 177, 177, 177, 178, 178, 179, 180, 181, 182, - 182, 182, 182, 183, 183, 183, 184, 185, 186, 187, - 188, 188, 189, 190, 191, 191, 191, 191, 191, 191, - 192, 192, 193, 193, 194, 195, 195, 195, 195, 195, - 195, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 198, - 198, 198, 198, 198, 199, 199, 199, 199, 199, 200, - - 201, 202, 202, 203, 203, 203, 203, 204, 204, 204, - 204, 205, 205, 206, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 208, 208, 208, - 208, 208, 208, 208, 208, 209, 209, 209, 209, 209, - 210, 210, 210, 210, 210, 211, 211, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 213, 213, 214, 215, 215, 216, 216, 217, 218, 219, - 219, 220, 220 + 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 89, 90, 92, 93, 94, 95, 95, + 96, 97, 97, 97, 98, 98, 98, 99, 99, 100, + 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 103, 104, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 106, 106, 107, 108, 109, 110, 111, 112, 112, 113, + + 114, 114, 114, 115, 115, 115, 115, 115, 115, 116, + 117, 118, 118, 118, 118, 119, 120, 120, 120, 121, + 121, 121, 121, 121, 121, 121, 121, 122, 123, 124, + 124, 125, 126, 126, 127, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 129, 129, 129, 130, 131, 131, + 131, 131, 132, 132, 132, 132, 133, 133, 133, 134, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 136, 137, 137, 137, + 137, 137, 138, 139, 139, 139, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 141, 142, 142, 142, 143, + + 143, 143, 143, 144, 145, 145, 145, 146, 146, 146, + 146, 147, 147, 147, 148, 148, 148, 149, 149, 150, + 151, 151, 151, 151, 151, 152, 152, 153, 153, 154, + 154, 154, 155, 156, 157, 157, 157, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 159, 159, 160, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 163, + 163, 163, 163, 164, 164, 165, 165, 165, 165, 165, + 165, 165, 165, 166, 166, 166, 167, 167, 167, 167, + + 167, 168, 168, 168, 168, 169, 170, 170, 170, 171, + 172, 173, 173, 173, 174, 174, 174, 174, 174, 175, + 175, 176, 177, 178, 179, 179, 179, 179, 180, 180, + 180, 181, 182, 183, 184, 185, 185, 186, 187, 187, + 187, 187, 187, 187, 188, 188, 189, 189, 190, 191, + 191, 191, 191, 191, 191, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 194, 194, 194, 194, 194, 195, 195, + 195, 195, 195, 196, 197, 198, 198, 199, 199, 199, + 199, 200, 200, 200, 200, 201, 201, 202, 203, 203, + + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 203, 204, 204, 204, 204, 204, 204, 204, 204, 205, + 205, 205, 205, 205, 206, 206, 206, 206, 206, 207, + 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 209, 209, 210, 211, 211, 212, + 212, 213, 214, 215, 215, 216, 216 } ; static yyconst int yy_ec[256] = @@ -420,16 +418,16 @@ static yyconst int yy_ec[256] = 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 1, 5, 6, 1, 1, 1, - 1, 1, 7, 1, 8, 9, 1, 10, 11, 11, - 11, 11, 11, 12, 11, 13, 11, 14, 15, 1, - 1, 1, 1, 1, 16, 16, 16, 16, 17, 16, + 1, 1, 7, 1, 8, 9, 1, 10, 11, 12, + 13, 14, 15, 16, 15, 17, 15, 18, 19, 1, + 1, 1, 1, 1, 20, 20, 20, 20, 21, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 1, 1, 1, 1, 18, 1, 19, 20, 21, 22, + 1, 1, 1, 1, 22, 1, 23, 24, 25, 26, - 23, 24, 25, 26, 27, 5, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 1, 1, 1, 1, 1, 1, 1, 1, + 27, 28, 29, 30, 31, 5, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 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, 1, @@ -446,435 +444,427 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[44] = +static yyconst int yy_meta[48] = { 0, - 1, 1, 2, 1, 3, 1, 1, 3, 3, 3, - 3, 3, 3, 4, 1, 3, 3, 3, 3, 3, + 1, 1, 2, 1, 3, 1, 4, 5, 3, 6, + 6, 6, 6, 6, 6, 6, 6, 7, 1, 3, + 8, 3, 3, 3, 3, 3, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3 + 3, 3, 3, 3, 3, 3, 3 } ; -static yyconst short int yy_base[578] = +static yyconst short int yy_base[566] = { 0, - 0, 0, 1234, 1235, 1235, 1235, 1229, 1218, 36, 40, - 44, 50, 56, 62, 0, 63, 66, 81, 89, 47, - 108, 91, 95, 92, 72, 109, 134, 119, 117, 160, - 120, 191, 139, 121, 136, 150, 1227, 1235, 1216, 1235, - 0, 165, 180, 197, 219, 70, 224, 239, 244, 0, - 68, 152, 93, 128, 158, 190, 245, 31, 1215, 188, - 182, 211, 48, 207, 248, 210, 122, 124, 1214, 209, - 257, 259, 185, 260, 261, 262, 263, 264, 265, 266, - 269, 274, 273, 283, 277, 287, 293, 295, 1213, 297, - 298, 299, 304, 305, 306, 307, 303, 317, 319, 309, - - 46, 320, 321, 324, 326, 323, 329, 333, 336, 325, - 344, 346, 353, 1212, 354, 357, 355, 358, 360, 361, - 362, 363, 382, 364, 365, 388, 389, 393, 231, 375, - 394, 1211, 0, 413, 420, 1210, 434, 451, 0, 1209, - 395, 369, 1208, 405, 399, 1207, 413, 1206, 428, 407, - 424, 1205, 438, 436, 452, 454, 425, 442, 441, 453, - 457, 460, 465, 467, 464, 469, 180, 470, 468, 472, - 476, 471, 477, 478, 479, 482, 496, 481, 498, 500, - 501, 502, 504, 506, 503, 484, 1204, 511, 1203, 1202, - 1201, 1200, 1199, 1198, 509, 1197, 1196, 513, 512, 1195, - - 540, 517, 516, 521, 522, 528, 1194, 1193, 1192, 532, - 523, 525, 552, 1191, 1190, 555, 554, 1189, 556, 557, - 558, 559, 564, 565, 560, 561, 1188, 1187, 1186, 562, - 566, 1185, 563, 1184, 567, 1183, 1182, 568, 582, 587, - 588, 589, 590, 591, 593, 397, 1181, 592, 597, 1235, - 615, 629, 603, 633, 638, 604, 608, 639, 1180, 640, - 641, 1179, 1178, 609, 619, 643, 644, 645, 647, 648, - 649, 651, 653, 655, 652, 658, 662, 665, 1177, 1176, - 654, 669, 674, 670, 1175, 1174, 675, 678, 1173, 679, - 680, 681, 682, 685, 689, 687, 691, 1172, 1171, 1170, - - 693, 695, 1169, 684, 686, 697, 0, 703, 1168, 707, - 714, 1167, 713, 716, 718, 719, 1166, 722, 717, 1165, - 723, 725, 1164, 728, 1163, 730, 1162, 1161, 733, 734, - 737, 741, 738, 1160, 742, 744, 1159, 748, 1158, 750, - 749, 1157, 755, 1156, 756, 758, 1155, 757, 767, 759, - 768, 773, 769, 776, 777, 770, 780, 782, 781, 784, - 786, 1154, 787, 1153, 1152, 792, 795, 796, 788, 800, - 802, 803, 804, 806, 807, 1151, 810, 811, 812, 814, - 822, 824, 817, 1150, 828, 809, 1149, 829, 835, 834, - 1148, 605, 836, 838, 1147, 1146, 837, 1145, 1144, 841, - - 842, 839, 840, 852, 849, 843, 855, 1143, 857, 858, - 1142, 860, 861, 863, 864, 1141, 867, 869, 874, 1140, - 1139, 871, 878, 1138, 1137, 1136, 879, 880, 1135, 884, - 885, 883, 882, 1134, 890, 1133, 1132, 1131, 1130, 895, - 898, 900, 1129, 899, 902, 1128, 1127, 1126, 1125, 1124, - 906, 1123, 1122, 1121, 904, 903, 913, 907, 909, 1120, - 910, 1119, 911, 1118, 1117, 914, 922, 923, 924, 927, - 1116, 928, 930, 931, 938, 934, 932, 940, 942, 1115, - 944, 945, 951, 948, 950, 952, 958, 960, 1114, 961, - 963, 964, 966, 1113, 967, 972, 968, 970, 1112, 1111, - - 1110, 977, 1109, 974, 988, 978, 1106, 992, 993, 994, - 1097, 980, 1095, 1094, 996, 997, 1000, 1004, 1002, 976, - 1008, 1010, 1011, 1012, 1013, 1014, 1093, 1016, 1020, 1021, - 1022, 1025, 1029, 1024, 1091, 1032, 1027, 1031, 1035, 1090, - 1039, 1037, 1043, 1044, 1089, 1049, 1088, 1051, 1052, 1055, - 1053, 1054, 1058, 1057, 1062, 1064, 1065, 1063, 1073, 1085, - 1069, 1084, 1082, 1074, 1079, 1078, 520, 427, 368, 1077, - 328, 1235, 1112, 1114, 287, 1118, 151 + 0, 0, 1196, 1197, 1197, 1197, 1191, 1176, 40, 0, + 48, 58, 68, 1148, 0, 68, 71, 81, 91, 52, + 97, 98, 126, 110, 117, 120, 136, 138, 73, 170, + 159, 205, 134, 131, 56, 137, 1188, 1197, 1173, 1197, + 0, 235, 0, 1181, 1180, 158, 243, 1143, 261, 0, + 70, 154, 93, 31, 160, 163, 175, 57, 1169, 173, + 192, 189, 127, 54, 200, 202, 166, 195, 1168, 201, + 250, 114, 171, 225, 273, 212, 251, 244, 53, 215, + 249, 1167, 261, 275, 276, 278, 280, 281, 211, 285, + 279, 289, 1166, 290, 288, 283, 293, 309, 307, 311, + + 310, 313, 314, 315, 295, 317, 321, 320, 325, 324, + 333, 337, 327, 344, 339, 341, 1165, 351, 334, 355, + 357, 358, 359, 360, 370, 363, 361, 371, 380, 376, + 366, 373, 1164, 0, 0, 386, 1163, 0, 412, 0, + 1162, 392, 397, 1161, 390, 393, 1160, 412, 1159, 413, + 416, 417, 1158, 418, 419, 421, 422, 423, 424, 428, + 433, 429, 434, 436, 439, 440, 448, 444, 449, 450, + 452, 455, 451, 453, 1157, 1156, 1155, 456, 465, 472, + 474, 458, 478, 94, 462, 482, 468, 479, 484, 1154, + 486, 1153, 1152, 1151, 1150, 1149, 1148, 491, 1147, 1146, + + 488, 492, 1145, 524, 499, 502, 495, 512, 1144, 1143, + 1142, 493, 498, 496, 1141, 1140, 528, 536, 1139, 537, + 538, 539, 540, 545, 500, 541, 1138, 1137, 1136, 543, + 1135, 1134, 542, 1133, 1132, 546, 552, 547, 564, 548, + 567, 568, 506, 1131, 558, 570, 1197, 568, 258, 584, + 589, 591, 575, 583, 584, 1130, 585, 586, 1129, 1128, + 587, 588, 589, 595, 598, 596, 604, 597, 599, 605, + 609, 600, 618, 607, 619, 1127, 1126, 606, 608, 622, + 625, 1125, 1124, 627, 628, 1123, 630, 632, 634, 636, + 637, 635, 638, 643, 1122, 1121, 641, 645, 1120, 640, + + 647, 648, 0, 1119, 652, 661, 1118, 657, 662, 663, + 1117, 669, 672, 1116, 674, 675, 1115, 677, 1114, 1113, + 676, 681, 680, 682, 1112, 687, 1111, 688, 1110, 692, + 693, 1109, 0, 1108, 689, 695, 1107, 696, 697, 700, + 709, 707, 698, 701, 715, 713, 717, 720, 722, 723, + 724, 1106, 726, 1105, 1104, 725, 728, 727, 734, 730, + 735, 737, 742, 746, 747, 1103, 749, 748, 754, 753, + 755, 758, 750, 752, 768, 769, 771, 773, 1102, 774, + 772, 776, 1101, 775, 1100, 780, 782, 777, 783, 793, + 778, 789, 1099, 797, 779, 1098, 799, 800, 803, 804, + + 1097, 805, 808, 811, 1096, 1095, 814, 809, 1094, 1093, + 1092, 815, 812, 1091, 821, 824, 820, 817, 1090, 834, + 1089, 1088, 1087, 1086, 823, 835, 836, 1085, 837, 838, + 1084, 1083, 1082, 1081, 1080, 839, 1079, 1078, 842, 843, + 847, 845, 849, 1077, 850, 1076, 854, 1075, 1070, 856, + 859, 860, 861, 862, 1067, 869, 864, 867, 868, 863, + 870, 874, 875, 1064, 885, 888, 887, 890, 889, 893, + 891, 894, 1056, 895, 901, 902, 904, 1053, 903, 906, + 907, 908, 1050, 1044, 1033, 909, 1032, 911, 921, 926, + 1031, 927, 931, 916, 1030, 915, 1026, 1025, 935, 933, + + 937, 939, 941, 943, 945, 946, 947, 948, 949, 950, + 1024, 951, 954, 956, 958, 959, 967, 961, 1023, 971, + 963, 973, 974, 1022, 977, 979, 982, 966, 1018, 985, + 1016, 990, 987, 991, 992, 993, 997, 996, 999, 1000, + 1001, 998, 1006, 549, 1011, 513, 466, 1010, 398, 1012, + 331, 291, 208, 1013, 168, 1197, 1052, 1058, 1064, 177, + 1072, 1078, 123, 1081, 1086 } ; -static yyconst short int yy_def[578] = +static yyconst short int yy_def[566] = { 0, - 572, 1, 572, 572, 572, 572, 573, 574, 575, 572, - 574, 574, 574, 574, 576, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 573, 572, 574, 572, - 577, 577, 572, 572, 574, 574, 574, 574, 574, 576, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 572, 577, 577, 572, 574, 574, 574, 49, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - - 49, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 572, - 572, 572, 572, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - - 574, 574, 574, 574, 574, 574, 201, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 572, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 0, 572, 572, 572, 572, 572 + 556, 1, 556, 556, 556, 556, 557, 558, 559, 560, + 558, 558, 11, 13, 561, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 557, 556, 558, 556, + 562, 562, 563, 560, 11, 558, 11, 13, 11, 561, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 556, 562, 42, 564, 558, 47, 11, 49, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + + 558, 558, 558, 49, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 556, 564, 565, 565, + 139, 139, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + + 558, 558, 204, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 250, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 0, 556, 556, 556, 556, + 556, 556, 556, 556, 556 } ; -static yyconst short int yy_nxt[1279] = +static yyconst short int yy_nxt[1245] = { 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, 40, - 40, 40, 150, 40, 47, 48, 48, 48, 48, 40, - 47, 48, 48, 48, 48, 40, 40, 68, 136, 40, - 69, 40, 155, 40, 51, 40, 201, 70, 56, 140, - 86, 52, 57, 53, 40, 54, 49, 58, 55, 60, - - 59, 61, 40, 87, 40, 40, 40, 64, 40, 88, - 82, 65, 62, 77, 143, 79, 63, 66, 83, 78, - 67, 40, 40, 84, 80, 81, 71, 85, 72, 73, - 40, 89, 40, 40, 40, 40, 74, 40, 113, 100, - 75, 40, 76, 128, 97, 162, 90, 40, 129, 40, - 98, 114, 40, 133, 115, 99, 91, 126, 92, 161, - 144, 116, 93, 40, 94, 40, 95, 130, 96, 101, - 127, 40, 131, 40, 134, 134, 134, 134, 141, 102, - 142, 103, 104, 145, 105, 106, 107, 146, 108, 43, - 43, 43, 43, 40, 109, 40, 110, 111, 40, 112, - - 101, 40, 152, 40, 40, 135, 44, 44, 44, 44, - 117, 167, 118, 119, 147, 120, 151, 121, 280, 122, - 40, 123, 40, 40, 40, 124, 125, 47, 45, 45, - 45, 45, 40, 137, 137, 137, 137, 40, 160, 153, - 138, 154, 246, 156, 40, 163, 138, 47, 48, 48, - 48, 48, 40, 139, 139, 139, 139, 40, 40, 139, - 139, 40, 139, 139, 139, 139, 139, 139, 157, 148, - 40, 158, 40, 40, 40, 40, 40, 40, 40, 40, - 159, 149, 40, 169, 171, 164, 40, 40, 166, 41, - 40, 168, 165, 179, 174, 173, 40, 170, 175, 172, - - 40, 182, 184, 180, 176, 177, 40, 178, 40, 181, - 40, 40, 40, 183, 186, 185, 40, 40, 40, 40, - 40, 190, 40, 187, 195, 188, 192, 194, 196, 197, - 40, 189, 40, 40, 40, 191, 40, 40, 40, 40, - 193, 40, 40, 198, 204, 200, 40, 203, 207, 40, - 212, 209, 205, 199, 210, 214, 217, 40, 216, 40, - 211, 202, 208, 218, 206, 213, 40, 40, 40, 215, - 40, 40, 219, 40, 40, 40, 40, 40, 40, 220, - 222, 40, 40, 228, 226, 232, 240, 221, 40, 224, - 241, 223, 230, 227, 233, 40, 225, 229, 231, 234, - - 257, 40, 40, 235, 236, 242, 40, 40, 40, 247, - 40, 245, 40, 237, 340, 243, 238, 244, 40, 256, - 40, 239, 134, 134, 134, 134, 40, 258, 248, 251, - 251, 251, 251, 259, 249, 262, 252, 40, 40, 260, - 40, 40, 252, 137, 137, 137, 137, 40, 261, 40, - 138, 40, 263, 268, 40, 40, 138, 253, 254, 264, - 255, 255, 255, 255, 40, 40, 40, 40, 269, 270, - 40, 265, 267, 40, 266, 271, 273, 40, 40, 272, - 40, 40, 40, 40, 40, 40, 274, 275, 281, 40, - 40, 40, 40, 287, 40, 40, 288, 40, 285, 276, - - 278, 279, 277, 283, 291, 286, 284, 290, 282, 40, - 289, 40, 294, 40, 40, 40, 40, 40, 292, 40, - 295, 302, 40, 298, 40, 40, 40, 296, 299, 40, - 40, 301, 293, 40, 40, 40, 40, 297, 40, 303, - 300, 40, 304, 305, 311, 40, 314, 315, 306, 307, - 307, 307, 307, 308, 309, 307, 307, 310, 307, 307, - 307, 307, 307, 307, 312, 40, 313, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 321, 316, 317, 320, 323, 325, 318, 331, - 332, 322, 319, 330, 324, 40, 326, 329, 328, 327, - - 40, 40, 40, 40, 40, 40, 40, 336, 333, 338, - 40, 337, 343, 343, 343, 343, 334, 40, 40, 335, - 339, 40, 40, 341, 251, 251, 251, 251, 345, 349, - 447, 252, 40, 342, 344, 253, 253, 252, 343, 343, - 343, 343, 255, 255, 255, 255, 40, 255, 255, 255, - 255, 40, 40, 40, 40, 350, 40, 40, 40, 348, - 40, 40, 40, 353, 40, 40, 40, 40, 40, 346, - 347, 40, 352, 359, 355, 40, 361, 354, 40, 351, - 357, 358, 40, 40, 362, 363, 360, 40, 40, 356, - 364, 40, 40, 40, 40, 40, 370, 40, 40, 40, - - 40, 371, 40, 369, 40, 365, 40, 368, 40, 366, - 40, 367, 375, 374, 372, 373, 40, 376, 377, 378, - 40, 381, 382, 380, 379, 384, 40, 40, 383, 40, - 40, 40, 40, 385, 386, 40, 40, 392, 40, 388, - 389, 40, 390, 40, 391, 393, 40, 40, 395, 387, - 40, 40, 396, 394, 40, 40, 397, 40, 398, 400, - 399, 40, 40, 40, 343, 343, 343, 343, 401, 40, - 40, 40, 40, 405, 408, 407, 402, 412, 403, 409, - 40, 40, 40, 40, 404, 406, 40, 411, 413, 40, - 40, 414, 410, 40, 40, 40, 417, 40, 416, 40, - - 40, 40, 418, 415, 420, 40, 423, 424, 40, 40, - 428, 421, 419, 40, 422, 40, 40, 40, 425, 40, - 40, 426, 40, 40, 40, 40, 427, 40, 429, 434, - 40, 430, 437, 436, 432, 40, 438, 40, 433, 431, - 435, 40, 40, 441, 439, 443, 440, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 444, 445, 442, - 449, 451, 40, 452, 454, 40, 446, 456, 40, 450, - 40, 40, 448, 40, 40, 453, 40, 40, 455, 457, - 40, 462, 40, 459, 40, 458, 464, 40, 468, 469, - 461, 40, 40, 40, 460, 40, 40, 40, 40, 471, - - 466, 475, 465, 40, 463, 467, 473, 474, 40, 472, - 477, 40, 40, 40, 470, 40, 40, 40, 476, 40, - 40, 481, 40, 40, 40, 482, 40, 40, 479, 478, - 480, 483, 484, 487, 486, 40, 40, 40, 485, 488, - 40, 40, 490, 40, 40, 40, 489, 40, 491, 495, - 496, 40, 494, 40, 501, 40, 492, 40, 40, 498, - 497, 40, 493, 40, 40, 40, 499, 505, 500, 506, - 507, 40, 509, 40, 40, 502, 40, 40, 503, 40, - 40, 40, 504, 40, 511, 40, 508, 40, 515, 40, - 40, 40, 519, 40, 510, 516, 521, 523, 512, 513, - - 514, 40, 517, 520, 518, 40, 40, 40, 522, 40, - 40, 525, 524, 40, 528, 40, 527, 40, 533, 529, - 526, 40, 531, 40, 40, 40, 40, 40, 534, 40, - 537, 532, 539, 40, 40, 40, 530, 40, 40, 536, - 40, 538, 40, 540, 40, 40, 535, 544, 40, 541, - 40, 545, 40, 542, 547, 548, 40, 40, 543, 549, - 546, 551, 40, 550, 40, 40, 40, 40, 40, 553, - 40, 40, 557, 552, 554, 40, 40, 40, 40, 556, - 555, 558, 40, 559, 564, 565, 40, 40, 560, 561, - 40, 40, 40, 562, 569, 40, 563, 40, 40, 568, - - 570, 40, 40, 40, 40, 566, 40, 40, 40, 567, - 40, 571, 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, + 14, 14, 14, 14, 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, 43, 43, 43, 43, 45, 45, 45, + 45, 45, 45, 45, 45, 40, 46, 145, 175, 40, + 40, 40, 130, 40, 40, 40, 47, 48, 48, 48, + 48, 48, 48, 48, 48, 40, 68, 40, 40, 69, + 40, 131, 151, 51, 157, 141, 70, 56, 40, 104, + + 52, 57, 53, 60, 54, 61, 58, 55, 40, 59, + 40, 40, 49, 64, 40, 40, 62, 65, 144, 71, + 63, 72, 73, 66, 77, 293, 67, 40, 43, 74, + 78, 40, 86, 75, 40, 76, 79, 40, 80, 90, + 87, 81, 82, 40, 40, 88, 93, 167, 40, 89, + 83, 40, 91, 40, 40, 40, 127, 129, 92, 84, + 85, 94, 95, 132, 96, 156, 137, 101, 97, 128, + 98, 40, 99, 102, 100, 40, 40, 40, 103, 105, + 40, 116, 44, 40, 142, 40, 143, 40, 40, 146, + 40, 148, 40, 147, 117, 106, 107, 118, 108, 109, + + 110, 168, 111, 149, 119, 152, 40, 162, 112, 40, + 113, 114, 40, 115, 105, 150, 153, 40, 40, 40, + 163, 154, 40, 155, 158, 40, 176, 159, 40, 40, + 120, 121, 40, 122, 161, 123, 160, 124, 172, 125, + 187, 164, 40, 126, 135, 135, 135, 135, 135, 135, + 135, 135, 138, 138, 138, 138, 138, 138, 138, 138, + 169, 40, 177, 139, 250, 250, 40, 40, 40, 139, + 140, 140, 140, 140, 140, 140, 140, 140, 40, 174, + 140, 140, 165, 140, 140, 140, 140, 140, 140, 166, + 40, 173, 40, 40, 178, 40, 40, 40, 40, 170, + + 40, 183, 40, 186, 189, 40, 40, 40, 40, 193, + 40, 179, 40, 171, 184, 180, 181, 188, 182, 195, + 185, 190, 191, 194, 40, 192, 40, 40, 40, 198, + 40, 40, 40, 196, 40, 197, 199, 40, 40, 204, + 200, 40, 40, 201, 40, 206, 209, 205, 40, 213, + 40, 40, 202, 207, 40, 203, 40, 211, 40, 215, + 210, 40, 218, 217, 214, 208, 212, 219, 40, 220, + 225, 221, 40, 216, 40, 40, 40, 40, 40, 222, + 40, 223, 239, 40, 228, 226, 231, 40, 40, 238, + 40, 243, 224, 40, 227, 233, 234, 40, 229, 230, + + 232, 240, 242, 241, 244, 235, 249, 40, 236, 40, + 40, 245, 249, 237, 40, 40, 255, 246, 250, 251, + 253, 252, 252, 252, 252, 252, 252, 252, 252, 40, + 40, 256, 254, 40, 40, 40, 40, 258, 40, 40, + 40, 40, 257, 261, 264, 40, 40, 263, 259, 260, + 40, 40, 270, 40, 266, 265, 40, 40, 262, 268, + 267, 40, 272, 269, 271, 40, 40, 40, 40, 40, + 40, 278, 40, 40, 273, 40, 285, 284, 274, 40, + 275, 282, 40, 40, 276, 40, 277, 280, 283, 40, + 281, 40, 286, 291, 279, 40, 40, 287, 288, 40, + + 289, 40, 294, 40, 292, 40, 296, 295, 40, 40, + 40, 297, 40, 40, 290, 40, 40, 40, 299, 40, + 308, 306, 301, 40, 309, 298, 319, 330, 300, 40, + 40, 310, 302, 303, 303, 303, 303, 303, 303, 303, + 303, 304, 305, 303, 303, 40, 303, 303, 303, 303, + 303, 303, 307, 40, 40, 40, 40, 40, 40, 40, + 40, 311, 40, 40, 40, 40, 40, 315, 322, 40, + 314, 317, 323, 327, 312, 40, 316, 313, 321, 318, + 325, 40, 324, 320, 40, 40, 326, 40, 249, 328, + 556, 556, 40, 331, 249, 556, 39, 556, 39, 329, + + 40, 40, 40, 40, 40, 40, 40, 335, 338, 334, + 332, 339, 40, 40, 40, 40, 40, 40, 336, 337, + 343, 40, 40, 40, 40, 40, 40, 342, 340, 341, + 344, 349, 347, 352, 345, 40, 40, 348, 350, 40, + 351, 346, 40, 353, 40, 40, 354, 40, 355, 40, + 360, 40, 40, 40, 40, 40, 361, 40, 40, 359, + 40, 356, 40, 357, 40, 40, 358, 366, 365, 40, + 362, 364, 363, 367, 40, 368, 369, 370, 40, 40, + 40, 371, 374, 373, 376, 375, 40, 372, 377, 40, + 378, 40, 40, 40, 40, 379, 380, 40, 40, 40, + + 381, 383, 386, 384, 40, 40, 40, 382, 385, 40, + 40, 393, 40, 40, 40, 40, 387, 40, 40, 390, + 394, 396, 397, 392, 40, 388, 40, 401, 389, 399, + 40, 391, 40, 398, 40, 395, 400, 40, 402, 40, + 40, 40, 40, 40, 40, 40, 405, 40, 408, 403, + 409, 40, 40, 404, 40, 410, 406, 407, 411, 40, + 413, 412, 414, 40, 40, 40, 40, 40, 415, 40, + 40, 40, 40, 419, 421, 40, 417, 416, 422, 423, + 426, 424, 418, 420, 425, 40, 40, 427, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 430, 40, + + 40, 429, 434, 432, 436, 438, 40, 437, 428, 431, + 40, 435, 433, 439, 40, 440, 40, 40, 441, 444, + 40, 40, 40, 442, 446, 40, 40, 443, 40, 40, + 448, 40, 40, 445, 40, 452, 453, 40, 40, 455, + 40, 40, 459, 450, 449, 456, 451, 457, 447, 454, + 458, 40, 40, 40, 40, 40, 40, 460, 461, 40, + 40, 462, 40, 465, 40, 466, 40, 40, 467, 463, + 464, 40, 470, 40, 468, 471, 40, 40, 40, 40, + 40, 40, 469, 472, 40, 40, 40, 40, 479, 474, + 473, 40, 40, 478, 475, 480, 485, 476, 481, 482, + + 483, 484, 40, 477, 40, 40, 40, 40, 40, 490, + 40, 40, 40, 486, 489, 487, 491, 493, 40, 40, + 40, 40, 495, 40, 40, 40, 40, 488, 40, 492, + 499, 494, 40, 40, 503, 500, 496, 505, 40, 504, + 501, 497, 498, 40, 40, 506, 510, 502, 40, 507, + 40, 508, 40, 509, 40, 511, 40, 512, 40, 513, + 40, 515, 40, 40, 40, 40, 40, 40, 40, 518, + 521, 40, 523, 40, 516, 40, 40, 514, 40, 520, + 40, 522, 524, 40, 40, 528, 519, 525, 40, 517, + 40, 40, 526, 529, 40, 532, 40, 531, 527, 40, + + 538, 530, 40, 535, 40, 533, 534, 40, 40, 40, + 40, 541, 537, 40, 40, 40, 40, 40, 40, 536, + 539, 542, 540, 40, 548, 549, 543, 40, 40, 40, + 40, 544, 545, 40, 553, 40, 546, 547, 554, 40, + 40, 40, 40, 40, 550, 552, 551, 40, 40, 40, + 40, 555, 37, 37, 37, 37, 37, 37, 37, 37, + 39, 40, 39, 39, 39, 39, 41, 40, 41, 41, + 40, 41, 50, 40, 50, 50, 50, 50, 50, 50, + 134, 40, 134, 134, 40, 134, 248, 40, 248, 333, + 333, 333, 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, 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, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 250, 40, 40, 40, 40, 40, - 132, 40, 38, 572, 3, 572, 572, 572, 572, 572, - 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, - 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, - 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, - 572, 572, 572, 572, 572, 572, 572, 572 + 40, 247, 40, 40, 40, 40, 40, 39, 47, 136, + 40, 133, 39, 40, 38, 556, 3, 556, 556, 556, + + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556 } ; -static yyconst short int yy_chk[1279] = +static yyconst short int yy_chk[1245] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 9, 58, 9, 9, 9, 9, 10, - 10, 10, 10, 11, 11, 11, 11, 11, 12, 101, - 20, 63, 58, 12, 13, 13, 13, 13, 13, 13, - 14, 14, 14, 14, 14, 14, 16, 20, 46, 17, - 20, 51, 63, 46, 16, 25, 101, 20, 17, 51, - 25, 16, 17, 16, 18, 16, 13, 17, 16, 18, - - 17, 18, 19, 25, 22, 24, 53, 19, 23, 25, - 24, 19, 18, 22, 53, 23, 18, 19, 24, 22, - 19, 21, 26, 24, 23, 23, 21, 24, 21, 21, - 29, 26, 28, 31, 34, 67, 21, 68, 31, 29, - 21, 54, 21, 34, 28, 68, 26, 27, 35, 35, - 28, 31, 33, 577, 31, 28, 27, 33, 27, 67, - 54, 31, 27, 36, 27, 52, 27, 35, 27, 30, - 33, 55, 36, 30, 42, 42, 42, 42, 52, 30, - 52, 30, 30, 55, 30, 30, 30, 55, 30, 43, - 43, 43, 43, 167, 30, 61, 30, 30, 73, 30, - - 32, 60, 61, 56, 32, 44, 44, 44, 44, 44, - 32, 73, 32, 32, 56, 32, 60, 32, 167, 32, - 64, 32, 70, 66, 62, 32, 32, 45, 45, 45, - 45, 45, 45, 47, 47, 47, 47, 47, 66, 62, - 47, 62, 129, 64, 129, 70, 47, 48, 48, 48, - 48, 48, 48, 49, 49, 49, 49, 49, 57, 49, - 49, 65, 49, 49, 49, 49, 49, 49, 65, 57, - 71, 65, 72, 74, 75, 76, 77, 78, 79, 80, - 65, 57, 81, 75, 76, 71, 83, 82, 72, 575, - 85, 74, 71, 82, 79, 78, 84, 75, 80, 77, - - 86, 84, 85, 83, 81, 81, 87, 81, 88, 83, - 90, 91, 92, 84, 87, 86, 97, 93, 94, 95, - 96, 92, 100, 88, 95, 90, 93, 94, 96, 97, - 98, 91, 99, 102, 103, 92, 106, 104, 110, 105, - 93, 571, 107, 98, 104, 100, 108, 103, 105, 109, - 107, 106, 104, 99, 106, 108, 110, 111, 109, 112, - 106, 102, 105, 111, 104, 107, 113, 115, 117, 108, - 116, 118, 112, 119, 120, 121, 122, 124, 125, 113, - 115, 569, 142, 120, 118, 122, 124, 113, 130, 116, - 125, 115, 121, 119, 122, 123, 117, 120, 121, 122, - - 142, 126, 127, 123, 123, 126, 128, 131, 141, 130, - 246, 128, 145, 123, 246, 127, 123, 127, 144, 141, - 150, 123, 134, 134, 134, 134, 147, 144, 131, 135, - 135, 135, 135, 145, 131, 150, 135, 151, 157, 147, - 568, 149, 135, 137, 137, 137, 137, 137, 149, 154, - 137, 153, 151, 157, 159, 158, 137, 138, 138, 153, - 138, 138, 138, 138, 138, 155, 160, 156, 158, 159, - 161, 154, 156, 162, 155, 160, 161, 165, 163, 160, - 164, 169, 166, 168, 172, 170, 162, 163, 168, 171, - 173, 174, 175, 172, 178, 176, 173, 186, 171, 163, - - 165, 166, 164, 170, 176, 171, 170, 175, 169, 177, - 174, 179, 178, 180, 181, 182, 185, 183, 177, 184, - 179, 186, 195, 182, 188, 199, 198, 180, 183, 203, - 202, 185, 177, 567, 204, 205, 211, 181, 212, 188, - 184, 206, 195, 198, 205, 210, 211, 212, 199, 201, - 201, 201, 201, 202, 203, 201, 201, 204, 201, 201, - 201, 201, 201, 201, 206, 213, 210, 217, 216, 219, - 220, 221, 222, 225, 226, 230, 233, 223, 224, 231, - 235, 238, 221, 213, 216, 220, 223, 224, 217, 235, - 238, 222, 219, 233, 223, 239, 225, 231, 230, 226, - - 240, 241, 242, 243, 244, 248, 245, 242, 239, 244, - 249, 243, 253, 253, 253, 253, 240, 256, 392, 241, - 245, 257, 264, 248, 251, 251, 251, 251, 257, 264, - 392, 251, 265, 249, 256, 252, 252, 251, 252, 252, - 252, 252, 254, 254, 254, 254, 254, 255, 255, 255, - 255, 255, 258, 260, 261, 265, 266, 267, 268, 261, - 269, 270, 271, 268, 272, 275, 273, 281, 274, 258, - 260, 276, 267, 274, 270, 277, 276, 269, 278, 266, - 272, 273, 282, 284, 277, 278, 275, 283, 287, 271, - 281, 288, 290, 291, 292, 293, 288, 304, 294, 305, - - 296, 290, 295, 287, 297, 282, 301, 284, 302, 283, - 306, 283, 294, 293, 291, 292, 308, 295, 296, 297, - 310, 304, 305, 302, 301, 308, 313, 311, 306, 314, - 319, 315, 316, 310, 311, 318, 321, 319, 322, 314, - 315, 324, 316, 326, 318, 321, 329, 330, 324, 313, - 331, 333, 326, 322, 332, 335, 329, 336, 330, 332, - 331, 338, 341, 340, 343, 343, 343, 343, 333, 345, - 348, 346, 350, 340, 345, 341, 335, 350, 336, 346, - 349, 351, 353, 356, 338, 340, 352, 349, 351, 354, - 355, 352, 348, 357, 359, 358, 355, 360, 354, 361, - - 363, 369, 356, 353, 358, 366, 361, 363, 367, 368, - 369, 359, 357, 370, 360, 371, 372, 373, 366, 374, - 375, 367, 386, 377, 378, 379, 368, 380, 370, 375, - 383, 371, 379, 378, 373, 381, 380, 382, 374, 372, - 377, 385, 388, 383, 381, 386, 382, 390, 389, 393, - 397, 394, 402, 403, 400, 401, 406, 388, 389, 385, - 394, 400, 405, 401, 403, 404, 390, 405, 407, 397, - 409, 410, 393, 412, 413, 402, 414, 415, 404, 406, - 417, 413, 418, 409, 422, 407, 415, 419, 422, 422, - 412, 423, 427, 428, 410, 433, 432, 430, 431, 427, - - 418, 432, 417, 435, 414, 419, 430, 431, 440, 428, - 435, 441, 444, 442, 423, 445, 456, 455, 433, 451, - 458, 444, 459, 461, 463, 445, 457, 466, 441, 440, - 442, 451, 455, 458, 457, 467, 468, 469, 456, 459, - 470, 472, 463, 473, 474, 477, 461, 476, 466, 470, - 472, 475, 469, 478, 477, 479, 467, 481, 482, 474, - 473, 484, 468, 485, 483, 486, 475, 482, 476, 483, - 484, 487, 486, 488, 490, 478, 491, 492, 479, 493, - 495, 497, 481, 498, 488, 496, 485, 504, 493, 520, - 502, 506, 498, 512, 487, 495, 504, 506, 490, 491, - - 492, 505, 496, 502, 497, 508, 509, 510, 505, 515, - 516, 509, 508, 517, 515, 519, 512, 518, 520, 516, - 510, 521, 518, 522, 523, 524, 525, 526, 521, 528, - 524, 519, 526, 529, 530, 531, 517, 534, 532, 523, - 537, 525, 533, 528, 538, 536, 522, 532, 539, 529, - 542, 533, 541, 530, 536, 537, 543, 544, 531, 538, - 534, 541, 546, 539, 548, 549, 551, 552, 550, 543, - 554, 553, 549, 542, 544, 555, 558, 556, 557, 548, - 546, 550, 561, 551, 556, 557, 559, 564, 552, 553, - 570, 566, 565, 554, 564, 563, 555, 562, 560, 561, - - 566, 547, 545, 540, 535, 558, 527, 514, 513, 559, - 511, 570, 573, 573, 573, 573, 574, 574, 576, 507, - 576, 576, 503, 501, 500, 499, 494, 489, 480, 471, - 465, 464, 462, 460, 454, 453, 452, 450, 449, 448, - 447, 446, 443, 439, 438, 437, 436, 434, 429, 426, - 425, 424, 421, 420, 416, 411, 408, 399, 398, 396, - 395, 391, 387, 384, 376, 365, 364, 362, 347, 344, - 342, 339, 337, 334, 328, 327, 325, 323, 320, 317, - 312, 309, 303, 300, 299, 298, 289, 286, 285, 280, - 279, 263, 262, 259, 247, 237, 236, 234, 232, 229, - - 228, 227, 218, 215, 214, 209, 208, 207, 200, 197, - 196, 194, 193, 192, 191, 190, 189, 187, 152, 148, - 146, 143, 140, 136, 132, 114, 89, 69, 59, 39, - 37, 8, 7, 3, 572, 572, 572, 572, 572, 572, - 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, - 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, - 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, - 572, 572, 572, 572, 572, 572, 572, 572 + 1, 1, 1, 1, 1, 1, 1, 9, 54, 9, + 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 12, 54, 79, 20, + 79, 64, 35, 35, 58, 12, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 16, 20, 51, 17, 20, + 29, 35, 58, 16, 64, 51, 20, 17, 18, 29, + + 16, 17, 16, 18, 16, 18, 17, 16, 19, 17, + 53, 184, 13, 19, 21, 22, 18, 19, 53, 21, + 18, 21, 21, 19, 22, 184, 19, 24, 563, 21, + 22, 72, 24, 21, 25, 21, 23, 26, 23, 25, + 24, 23, 23, 23, 63, 24, 26, 72, 34, 24, + 23, 33, 25, 27, 36, 28, 33, 34, 25, 23, + 23, 26, 27, 36, 27, 63, 46, 28, 27, 33, + 27, 52, 27, 28, 27, 46, 31, 55, 28, 30, + 56, 31, 560, 67, 52, 555, 52, 30, 73, 55, + 60, 56, 57, 55, 31, 30, 30, 31, 30, 30, + + 30, 73, 30, 57, 31, 60, 62, 67, 30, 61, + 30, 30, 68, 30, 32, 57, 61, 65, 70, 66, + 68, 62, 32, 62, 65, 553, 80, 65, 89, 76, + 32, 32, 80, 32, 66, 32, 65, 32, 76, 32, + 89, 70, 74, 32, 42, 42, 42, 42, 42, 42, + 42, 42, 47, 47, 47, 47, 47, 47, 47, 47, + 74, 78, 81, 47, 249, 249, 81, 71, 77, 47, + 49, 49, 49, 49, 49, 49, 49, 49, 83, 78, + 49, 49, 71, 49, 49, 49, 49, 49, 49, 71, + 75, 77, 84, 85, 83, 86, 91, 87, 88, 75, + + 96, 86, 90, 88, 91, 95, 92, 94, 552, 96, + 97, 84, 105, 75, 87, 85, 85, 90, 85, 97, + 87, 92, 94, 96, 99, 95, 98, 101, 100, 99, + 102, 103, 104, 97, 106, 98, 100, 108, 107, 105, + 101, 110, 109, 102, 113, 107, 108, 106, 551, 110, + 111, 119, 103, 107, 112, 104, 115, 109, 116, 111, + 108, 114, 113, 112, 110, 107, 109, 114, 118, 115, + 119, 116, 120, 111, 121, 122, 123, 124, 127, 116, + 126, 118, 127, 131, 122, 120, 124, 125, 128, 126, + 132, 130, 118, 130, 121, 125, 125, 129, 122, 123, + + 124, 128, 129, 128, 131, 125, 136, 145, 125, 142, + 146, 132, 136, 125, 143, 549, 145, 132, 139, 139, + 142, 139, 139, 139, 139, 139, 139, 139, 139, 148, + 150, 146, 143, 151, 152, 154, 155, 150, 156, 157, + 158, 159, 148, 154, 157, 160, 162, 156, 151, 152, + 161, 163, 162, 164, 159, 158, 165, 166, 155, 161, + 160, 168, 164, 161, 163, 167, 169, 170, 173, 171, + 174, 169, 172, 178, 164, 182, 174, 173, 165, 185, + 166, 172, 179, 547, 167, 187, 168, 171, 172, 180, + 171, 181, 178, 182, 170, 183, 188, 179, 180, 186, + + 181, 189, 185, 191, 183, 201, 187, 186, 198, 202, + 212, 188, 207, 214, 181, 213, 205, 225, 191, 206, + 212, 207, 201, 243, 213, 189, 225, 243, 198, 208, + 546, 214, 202, 204, 204, 204, 204, 204, 204, 204, + 204, 205, 206, 204, 204, 217, 204, 204, 204, 204, + 204, 204, 208, 218, 220, 221, 222, 223, 226, 233, + 230, 217, 224, 236, 238, 240, 544, 222, 233, 237, + 221, 224, 236, 240, 218, 245, 223, 220, 230, 224, + 238, 239, 237, 226, 241, 242, 239, 246, 248, 241, + 250, 250, 253, 245, 248, 251, 251, 252, 252, 242, + + 254, 255, 257, 258, 261, 262, 263, 254, 258, 253, + 246, 261, 264, 266, 268, 265, 269, 272, 255, 257, + 265, 267, 270, 278, 274, 279, 271, 264, 262, 263, + 266, 271, 269, 274, 267, 273, 275, 270, 272, 280, + 273, 268, 281, 275, 284, 285, 278, 287, 279, 288, + 285, 289, 292, 290, 291, 293, 287, 300, 297, 284, + 294, 280, 298, 280, 301, 302, 281, 292, 291, 305, + 288, 290, 289, 293, 308, 294, 297, 298, 306, 309, + 310, 300, 305, 302, 308, 306, 312, 301, 309, 313, + 310, 315, 316, 321, 318, 312, 313, 323, 322, 324, + + 315, 318, 323, 321, 326, 328, 335, 316, 322, 330, + 331, 335, 336, 338, 339, 343, 324, 340, 344, 330, + 336, 339, 340, 331, 342, 326, 341, 344, 328, 342, + 346, 330, 345, 341, 347, 338, 343, 348, 345, 349, + 350, 351, 356, 353, 358, 357, 348, 360, 351, 346, + 353, 359, 361, 347, 362, 356, 349, 350, 357, 363, + 359, 358, 360, 364, 365, 368, 367, 373, 361, 374, + 370, 369, 371, 365, 368, 372, 363, 362, 369, 370, + 373, 371, 364, 367, 372, 375, 376, 374, 377, 381, + 378, 380, 384, 382, 388, 391, 395, 386, 377, 387, + + 389, 376, 382, 380, 386, 388, 392, 387, 375, 378, + 390, 384, 381, 389, 394, 390, 397, 398, 391, 395, + 399, 400, 402, 392, 398, 403, 408, 394, 404, 413, + 400, 407, 412, 397, 418, 407, 407, 417, 415, 412, + 425, 416, 417, 403, 402, 413, 404, 415, 399, 408, + 416, 420, 426, 427, 429, 430, 436, 418, 420, 439, + 440, 425, 442, 429, 441, 430, 443, 445, 436, 426, + 427, 447, 441, 450, 439, 442, 451, 452, 453, 454, + 460, 457, 440, 443, 458, 459, 456, 461, 454, 447, + 445, 462, 463, 453, 450, 456, 461, 451, 457, 458, + + 459, 460, 465, 452, 467, 466, 469, 468, 471, 467, + 470, 472, 474, 462, 466, 463, 468, 470, 475, 476, + 479, 477, 472, 480, 481, 482, 486, 465, 488, 469, + 477, 471, 496, 494, 482, 479, 474, 488, 489, 486, + 480, 475, 476, 490, 492, 489, 494, 481, 493, 490, + 500, 492, 499, 493, 501, 496, 502, 499, 503, 500, + 504, 502, 505, 506, 507, 508, 509, 510, 512, 505, + 508, 513, 510, 514, 503, 515, 516, 501, 518, 507, + 521, 509, 512, 528, 517, 516, 506, 513, 520, 504, + 522, 523, 514, 517, 525, 521, 526, 520, 515, 527, + + 528, 518, 530, 525, 533, 522, 523, 532, 534, 535, + 536, 533, 527, 538, 537, 542, 539, 540, 541, 526, + 530, 534, 532, 543, 540, 541, 535, 548, 545, 550, + 554, 536, 537, 531, 548, 529, 538, 539, 550, 524, + 519, 511, 498, 497, 542, 545, 543, 495, 491, 487, + 485, 554, 557, 557, 557, 557, 557, 557, 557, 557, + 558, 484, 558, 558, 558, 558, 559, 483, 559, 559, + 478, 559, 561, 473, 561, 561, 561, 561, 561, 561, + 562, 464, 562, 562, 455, 562, 564, 449, 564, 565, + 565, 565, 448, 446, 444, 438, 437, 435, 434, 433, + + 432, 431, 428, 424, 423, 422, 421, 419, 414, 411, + 410, 409, 406, 405, 401, 396, 393, 385, 383, 379, + 366, 355, 354, 352, 337, 334, 332, 329, 327, 325, + 320, 319, 317, 314, 311, 307, 304, 299, 296, 295, + 286, 283, 282, 277, 276, 260, 259, 256, 244, 235, + 234, 232, 231, 229, 228, 227, 219, 216, 215, 211, + 210, 209, 203, 200, 199, 197, 196, 195, 194, 193, + 192, 190, 177, 176, 175, 153, 149, 147, 144, 141, + 137, 133, 117, 93, 82, 69, 59, 48, 45, 44, + 39, 37, 14, 8, 7, 3, 556, 556, 556, 556, + + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556 } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -891,7 +881,7 @@ goto find_rule; \ #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; -#line 1 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 1 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" #define INITIAL 0 /*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===// // @@ -906,7 +896,7 @@ char *yytext; // //===----------------------------------------------------------------------===*/ #define YY_NEVER_INTERACTIVE 1 -#line 28 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 28 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" #include "ParserInternals.h" #include "llvm/Module.h" #include @@ -1039,7 +1029,7 @@ using namespace llvm; /* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing * it to deal with 64 bit numbers. */ -#line 1043 "Lexer.cpp" +#line 1033 "Lexer.cpp" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1190,10 +1180,10 @@ YY_DECL register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; -#line 186 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 186 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" -#line 1197 "Lexer.cpp" +#line 1187 "Lexer.cpp" if ( yy_init ) { @@ -1241,14 +1231,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 >= 573 ) + if ( yy_current_state >= 557 ) 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 != 572 ); + while ( yy_current_state != 556 ); yy_find_action: yy_current_state = *--yy_state_ptr; @@ -1286,656 +1276,636 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 188 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 188 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { /* Ignore comments for now */ } YY_BREAK case 2: YY_RULE_SETUP -#line 190 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 190 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return BEGINTOK; } YY_BREAK case 3: YY_RULE_SETUP -#line 191 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 191 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return ENDTOK; } YY_BREAK case 4: YY_RULE_SETUP -#line 192 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 192 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return TRUETOK; } YY_BREAK case 5: YY_RULE_SETUP -#line 193 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 193 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return FALSETOK; } YY_BREAK case 6: YY_RULE_SETUP -#line 194 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 194 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return DECLARE; } YY_BREAK case 7: YY_RULE_SETUP -#line 195 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 195 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return DEFINE; } YY_BREAK case 8: YY_RULE_SETUP -#line 196 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 196 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return GLOBAL; } YY_BREAK case 9: YY_RULE_SETUP -#line 197 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 197 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return CONSTANT; } YY_BREAK case 10: YY_RULE_SETUP -#line 198 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 198 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return INTERNAL; } YY_BREAK case 11: YY_RULE_SETUP -#line 199 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 199 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return LINKONCE; } YY_BREAK case 12: YY_RULE_SETUP -#line 200 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 200 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return WEAK; } YY_BREAK case 13: YY_RULE_SETUP -#line 201 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 201 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return APPENDING; } YY_BREAK case 14: YY_RULE_SETUP -#line 202 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 202 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return DLLIMPORT; } YY_BREAK case 15: YY_RULE_SETUP -#line 203 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 203 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return DLLEXPORT; } YY_BREAK case 16: YY_RULE_SETUP -#line 204 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 204 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return EXTERN_WEAK; } YY_BREAK case 17: YY_RULE_SETUP -#line 205 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 205 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return EXTERNAL; } YY_BREAK case 18: YY_RULE_SETUP -#line 206 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 206 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return IMPLEMENTATION; } YY_BREAK case 19: YY_RULE_SETUP -#line 207 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 207 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return ZEROINITIALIZER; } YY_BREAK case 20: YY_RULE_SETUP -#line 208 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 208 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return DOTDOTDOT; } YY_BREAK case 21: YY_RULE_SETUP -#line 209 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 209 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return UNDEF; } YY_BREAK case 22: YY_RULE_SETUP -#line 210 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 210 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return NULL_TOK; } YY_BREAK case 23: YY_RULE_SETUP -#line 211 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 211 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return TO; } YY_BREAK case 24: YY_RULE_SETUP -#line 212 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 212 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return TAIL; } YY_BREAK case 25: YY_RULE_SETUP -#line 213 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 213 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return TARGET; } YY_BREAK case 26: YY_RULE_SETUP -#line 214 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 214 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return TRIPLE; } YY_BREAK case 27: YY_RULE_SETUP -#line 215 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 215 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return DEPLIBS; } YY_BREAK case 28: YY_RULE_SETUP -#line 216 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 216 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return ENDIAN; } YY_BREAK case 29: YY_RULE_SETUP -#line 217 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 217 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return POINTERSIZE; } YY_BREAK case 30: YY_RULE_SETUP -#line 218 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 218 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return DATALAYOUT; } YY_BREAK case 31: YY_RULE_SETUP -#line 219 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 219 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return LITTLE; } YY_BREAK case 32: YY_RULE_SETUP -#line 220 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 220 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return BIG; } YY_BREAK case 33: YY_RULE_SETUP -#line 221 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 221 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return VOLATILE; } YY_BREAK case 34: YY_RULE_SETUP -#line 222 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 222 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return ALIGN; } YY_BREAK case 35: YY_RULE_SETUP -#line 223 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 223 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return SECTION; } YY_BREAK case 36: YY_RULE_SETUP -#line 224 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 224 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return MODULE; } YY_BREAK case 37: YY_RULE_SETUP -#line 225 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 225 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return ASM_TOK; } YY_BREAK case 38: YY_RULE_SETUP -#line 226 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 226 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return SIDEEFFECT; } YY_BREAK case 39: YY_RULE_SETUP -#line 228 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 228 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return CC_TOK; } YY_BREAK case 40: YY_RULE_SETUP -#line 229 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 229 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return CCC_TOK; } YY_BREAK case 41: YY_RULE_SETUP -#line 230 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 230 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return CSRETCC_TOK; } YY_BREAK case 42: YY_RULE_SETUP -#line 231 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 231 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return FASTCC_TOK; } YY_BREAK case 43: YY_RULE_SETUP -#line 232 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 232 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return COLDCC_TOK; } YY_BREAK case 44: YY_RULE_SETUP -#line 233 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 233 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return X86_STDCALLCC_TOK; } YY_BREAK case 45: YY_RULE_SETUP -#line 234 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 234 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return X86_FASTCALLCC_TOK; } YY_BREAK case 46: YY_RULE_SETUP -#line 236 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 236 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TY(Type::VoidTy, VOID); } YY_BREAK case 47: YY_RULE_SETUP -#line 237 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 237 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TY(Type::BoolTy, BOOL); } YY_BREAK case 48: YY_RULE_SETUP -#line 238 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" -{ RET_TY(Type::SByteTy, SBYTE); } +#line 238 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" +{ RET_TY(Type::Int8Ty, INT8); } YY_BREAK case 49: YY_RULE_SETUP -#line 239 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" -{ RET_TY(Type::UByteTy, UBYTE); } +#line 239 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" +{ RET_TY(Type::Int16Ty, INT16); } YY_BREAK case 50: YY_RULE_SETUP -#line 240 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" -{ RET_TY(Type::ShortTy, SHORT); } +#line 240 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" +{ RET_TY(Type::Int32Ty, INT32); } YY_BREAK case 51: YY_RULE_SETUP -#line 241 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" -{ RET_TY(Type::UShortTy,USHORT);} +#line 241 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" +{ RET_TY(Type::Int64Ty, INT64); } YY_BREAK case 52: YY_RULE_SETUP -#line 242 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" -{ RET_TY(Type::IntTy, INT); } - YY_BREAK -case 53: -YY_RULE_SETUP -#line 243 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" -{ RET_TY(Type::UIntTy, UINT); } - YY_BREAK -case 54: -YY_RULE_SETUP -#line 244 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" -{ RET_TY(Type::LongTy, LONG); } - YY_BREAK -case 55: -YY_RULE_SETUP -#line 245 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" -{ RET_TY(Type::ULongTy, ULONG); } - YY_BREAK -case 56: -YY_RULE_SETUP -#line 246 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 242 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TY(Type::FloatTy, FLOAT); } YY_BREAK -case 57: +case 53: YY_RULE_SETUP -#line 247 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 243 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TY(Type::DoubleTy,DOUBLE);} YY_BREAK -case 58: +case 54: YY_RULE_SETUP -#line 248 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 244 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TY(Type::LabelTy, LABEL); } YY_BREAK -case 59: +case 55: YY_RULE_SETUP -#line 249 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 245 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return TYPE; } YY_BREAK -case 60: +case 56: YY_RULE_SETUP -#line 250 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 246 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return OPAQUE; } YY_BREAK -case 61: +case 57: YY_RULE_SETUP -#line 252 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 248 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, Add, ADD); } YY_BREAK -case 62: +case 58: YY_RULE_SETUP -#line 253 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 249 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, Sub, SUB); } YY_BREAK -case 63: +case 59: YY_RULE_SETUP -#line 254 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 250 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, Mul, MUL); } YY_BREAK -case 64: +case 60: YY_RULE_SETUP -#line 255 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 251 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, UDiv, UDIV); } YY_BREAK -case 65: +case 61: YY_RULE_SETUP -#line 256 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 252 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, SDiv, SDIV); } YY_BREAK -case 66: +case 62: YY_RULE_SETUP -#line 257 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 253 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, FDiv, FDIV); } YY_BREAK -case 67: +case 63: YY_RULE_SETUP -#line 258 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 254 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, URem, UREM); } YY_BREAK -case 68: +case 64: YY_RULE_SETUP -#line 259 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 255 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, SRem, SREM); } YY_BREAK -case 69: +case 65: YY_RULE_SETUP -#line 260 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 256 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, FRem, FREM); } YY_BREAK -case 70: +case 66: YY_RULE_SETUP -#line 261 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 257 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, And, AND); } YY_BREAK -case 71: +case 67: YY_RULE_SETUP -#line 262 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 258 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, Or , OR ); } YY_BREAK -case 72: +case 68: YY_RULE_SETUP -#line 263 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 259 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(BinaryOpVal, Xor, XOR); } YY_BREAK -case 73: +case 69: YY_RULE_SETUP -#line 264 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 260 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, ICmp, ICMP); } YY_BREAK -case 74: +case 70: YY_RULE_SETUP -#line 265 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 261 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, FCmp, FCMP); } YY_BREAK -case 75: +case 71: YY_RULE_SETUP -#line 266 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 262 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return EQ; } YY_BREAK -case 76: +case 72: YY_RULE_SETUP -#line 267 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 263 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return NE; } YY_BREAK -case 77: +case 73: YY_RULE_SETUP -#line 268 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 264 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return SLT; } YY_BREAK -case 78: +case 74: YY_RULE_SETUP -#line 269 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 265 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return SGT; } YY_BREAK -case 79: +case 75: YY_RULE_SETUP -#line 270 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 266 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return SLE; } YY_BREAK -case 80: +case 76: YY_RULE_SETUP -#line 271 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 267 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return SGE; } YY_BREAK -case 81: +case 77: YY_RULE_SETUP -#line 272 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 268 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return ULT; } YY_BREAK -case 82: +case 78: YY_RULE_SETUP -#line 273 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 269 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return UGT; } YY_BREAK -case 83: +case 79: YY_RULE_SETUP -#line 274 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 270 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return ULE; } YY_BREAK -case 84: +case 80: YY_RULE_SETUP -#line 275 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 271 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return UGE; } YY_BREAK -case 85: +case 81: YY_RULE_SETUP -#line 276 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 272 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return OEQ; } YY_BREAK -case 86: +case 82: YY_RULE_SETUP -#line 277 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 273 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return ONE; } YY_BREAK -case 87: +case 83: YY_RULE_SETUP -#line 278 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 274 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return OLT; } YY_BREAK -case 88: +case 84: YY_RULE_SETUP -#line 279 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 275 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return OGT; } YY_BREAK -case 89: +case 85: YY_RULE_SETUP -#line 280 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 276 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return OLE; } YY_BREAK -case 90: +case 86: YY_RULE_SETUP -#line 281 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 277 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return OGE; } YY_BREAK -case 91: +case 87: YY_RULE_SETUP -#line 282 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 278 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return ORD; } YY_BREAK -case 92: +case 88: YY_RULE_SETUP -#line 283 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 279 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return UNO; } YY_BREAK -case 93: +case 89: YY_RULE_SETUP -#line 284 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 280 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return UEQ; } YY_BREAK -case 94: +case 90: YY_RULE_SETUP -#line 285 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 281 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return UNE; } YY_BREAK -case 95: +case 91: YY_RULE_SETUP -#line 287 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 283 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, PHI, PHI_TOK); } YY_BREAK -case 96: +case 92: YY_RULE_SETUP -#line 288 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 284 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, Call, CALL); } YY_BREAK -case 97: +case 93: YY_RULE_SETUP -#line 289 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 285 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, Trunc, TRUNC); } YY_BREAK -case 98: +case 94: YY_RULE_SETUP -#line 290 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 286 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, ZExt, ZEXT); } YY_BREAK -case 99: +case 95: YY_RULE_SETUP -#line 291 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 287 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, SExt, SEXT); } YY_BREAK -case 100: +case 96: YY_RULE_SETUP -#line 292 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 288 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, FPTrunc, FPTRUNC); } YY_BREAK -case 101: +case 97: YY_RULE_SETUP -#line 293 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 289 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, FPExt, FPEXT); } YY_BREAK -case 102: +case 98: YY_RULE_SETUP -#line 294 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 290 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, UIToFP, UITOFP); } YY_BREAK -case 103: +case 99: YY_RULE_SETUP -#line 295 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 291 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, SIToFP, SITOFP); } YY_BREAK -case 104: +case 100: YY_RULE_SETUP -#line 296 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 292 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, FPToUI, FPTOUI); } YY_BREAK -case 105: +case 101: YY_RULE_SETUP -#line 297 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 293 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, FPToSI, FPTOSI); } YY_BREAK -case 106: +case 102: YY_RULE_SETUP -#line 298 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 294 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, IntToPtr, INTTOPTR); } YY_BREAK -case 107: +case 103: YY_RULE_SETUP -#line 299 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 295 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, PtrToInt, PTRTOINT); } YY_BREAK -case 108: +case 104: YY_RULE_SETUP -#line 300 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 296 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(CastOpVal, BitCast, BITCAST); } YY_BREAK -case 109: +case 105: YY_RULE_SETUP -#line 301 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 297 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, Select, SELECT); } YY_BREAK -case 110: +case 106: YY_RULE_SETUP -#line 302 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 298 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, Shl, SHL); } YY_BREAK -case 111: +case 107: YY_RULE_SETUP -#line 303 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 299 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, LShr, LSHR); } YY_BREAK -case 112: +case 108: YY_RULE_SETUP -#line 304 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 300 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, AShr, ASHR); } YY_BREAK -case 113: +case 109: YY_RULE_SETUP -#line 305 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 301 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, VAArg , VAARG); } YY_BREAK -case 114: +case 110: YY_RULE_SETUP -#line 306 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 302 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Ret, RET); } YY_BREAK -case 115: +case 111: YY_RULE_SETUP -#line 307 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 303 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Br, BR); } YY_BREAK -case 116: +case 112: YY_RULE_SETUP -#line 308 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 304 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Switch, SWITCH); } YY_BREAK -case 117: +case 113: YY_RULE_SETUP -#line 309 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 305 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Invoke, INVOKE); } YY_BREAK -case 118: +case 114: YY_RULE_SETUP -#line 310 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 306 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Unwind, UNWIND); } YY_BREAK -case 119: +case 115: YY_RULE_SETUP -#line 311 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 307 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Unreachable, UNREACHABLE); } YY_BREAK -case 120: +case 116: YY_RULE_SETUP -#line 313 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 309 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, Malloc, MALLOC); } YY_BREAK -case 121: +case 117: YY_RULE_SETUP -#line 314 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 310 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, Alloca, ALLOCA); } YY_BREAK -case 122: +case 118: YY_RULE_SETUP -#line 315 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 311 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, Free, FREE); } YY_BREAK -case 123: +case 119: YY_RULE_SETUP -#line 316 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 312 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, Load, LOAD); } YY_BREAK -case 124: +case 120: YY_RULE_SETUP -#line 317 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 313 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, Store, STORE); } YY_BREAK -case 125: +case 121: YY_RULE_SETUP -#line 318 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 314 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); } YY_BREAK -case 126: +case 122: YY_RULE_SETUP -#line 320 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 316 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); } YY_BREAK -case 127: +case 123: YY_RULE_SETUP -#line 321 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 317 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); } YY_BREAK -case 128: +case 124: YY_RULE_SETUP -#line 322 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 318 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); } YY_BREAK -case 129: +case 125: YY_RULE_SETUP -#line 325 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 321 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { UnEscapeLexed(yytext+1); llvmAsmlval.StrVal = strdup(yytext+1); // Skip % return VAR_ID; } YY_BREAK -case 130: +case 126: YY_RULE_SETUP -#line 330 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 326 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { yytext[strlen(yytext)-1] = 0; // nuke colon UnEscapeLexed(yytext); @@ -1943,9 +1913,9 @@ YY_RULE_SETUP return LABELSTR; } YY_BREAK -case 131: +case 127: YY_RULE_SETUP -#line 336 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 332 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { yytext[strlen(yytext)-2] = 0; // nuke colon, end quote UnEscapeLexed(yytext+1); @@ -1953,9 +1923,9 @@ YY_RULE_SETUP return LABELSTR; } YY_BREAK -case 132: +case 128: YY_RULE_SETUP -#line 343 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 339 "/proj/llvm/llvm-3/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 @@ -1966,14 +1936,14 @@ YY_RULE_SETUP return STRINGCONSTANT; } YY_BREAK -case 133: +case 129: YY_RULE_SETUP -#line 354 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 350 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; } YY_BREAK -case 134: +case 130: YY_RULE_SETUP -#line 355 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 351 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { uint64_t Val = atoull(yytext+1); // +1: we have bigger negative range @@ -1983,17 +1953,17 @@ YY_RULE_SETUP return ESINT64VAL; } YY_BREAK -case 135: +case 131: YY_RULE_SETUP -#line 363 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 359 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { llvmAsmlval.UInt64Val = HexIntToVal(yytext+3); return yytext[0] == 's' ? ESINT64VAL : EUINT64VAL; } YY_BREAK -case 136: +case 132: YY_RULE_SETUP -#line 368 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 364 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { uint64_t Val = atoull(yytext+1); if ((unsigned)Val != Val) @@ -2002,9 +1972,9 @@ YY_RULE_SETUP return UINTVAL; } YY_BREAK -case 137: +case 133: YY_RULE_SETUP -#line 375 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 371 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { uint64_t Val = atoull(yytext+2); // +1: we have bigger negative range @@ -2014,18 +1984,18 @@ YY_RULE_SETUP return SINTVAL; } YY_BREAK -case 138: +case 134: YY_RULE_SETUP -#line 384 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 380 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { llvmAsmlval.FPVal = atof(yytext); return FPVAL; } YY_BREAK -case 139: +case 135: YY_RULE_SETUP -#line 385 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 381 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { llvmAsmlval.FPVal = HexToFP(yytext); return FPVAL; } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 387 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 383 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { /* Make sure to free the internal buffers for flex when we are * done reading our input! @@ -2034,22 +2004,22 @@ case YY_STATE_EOF(INITIAL): return EOF; } YY_BREAK -case 140: +case 136: YY_RULE_SETUP -#line 395 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 391 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { /* Ignore whitespace */ } YY_BREAK -case 141: +case 137: YY_RULE_SETUP -#line 396 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 392 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" { return yytext[0]; } YY_BREAK -case 142: +case 138: YY_RULE_SETUP -#line 398 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 394 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2053 "Lexer.cpp" +#line 2023 "Lexer.cpp" case YY_END_OF_BUFFER: { @@ -2336,7 +2306,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 >= 573 ) + if ( yy_current_state >= 557 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2366,11 +2336,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 >= 573 ) + if ( yy_current_state >= 557 ) 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 == 572); + yy_is_jam = (yy_current_state == 556); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -2927,5 +2897,5 @@ int main() return 0; } #endif -#line 398 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l" +#line 394 "/proj/llvm/llvm-3/lib/AsmParser/Lexer.l" diff --git a/lib/AsmParser/Lexer.l.cvs b/lib/AsmParser/Lexer.l.cvs index 2f681a6..58d21c3 100644 --- a/lib/AsmParser/Lexer.l.cvs +++ b/lib/AsmParser/Lexer.l.cvs @@ -235,14 +235,10 @@ x86_fastcallcc { return X86_FASTCALLCC_TOK; } void { RET_TY(Type::VoidTy, VOID); } bool { RET_TY(Type::BoolTy, BOOL); } -sbyte { RET_TY(Type::SByteTy, SBYTE); } -ubyte { RET_TY(Type::UByteTy, UBYTE); } -short { RET_TY(Type::ShortTy, SHORT); } -ushort { RET_TY(Type::UShortTy,USHORT);} -int { RET_TY(Type::IntTy, INT); } -uint { RET_TY(Type::UIntTy, UINT); } -long { RET_TY(Type::LongTy, LONG); } -ulong { RET_TY(Type::ULongTy, ULONG); } +i8 { RET_TY(Type::Int8Ty, INT8); } +i16 { RET_TY(Type::Int16Ty, INT16); } +i32 { RET_TY(Type::Int32Ty, INT32); } +i64 { RET_TY(Type::Int64Ty, INT64); } float { RET_TY(Type::FloatTy, FLOAT); } double { RET_TY(Type::DoubleTy,DOUBLE);} label { RET_TY(Type::LabelTy, LABEL); } diff --git a/lib/AsmParser/ParserInternals.h b/lib/AsmParser/ParserInternals.h index 79e367f..faeed1c 100644 --- a/lib/AsmParser/ParserInternals.h +++ b/lib/AsmParser/ParserInternals.h @@ -199,6 +199,29 @@ struct ValID { } }; +struct TypeWithAttrs { + llvm::PATypeHolder *Ty; + FunctionType::ParameterAttributes Attrs; +}; + +typedef std::vector TypeWithAttrsList; + +struct ArgListEntry { + FunctionType::ParameterAttributes Attrs; + llvm::PATypeHolder *Ty; + char *Name; +}; + +typedef std::vector ArgListType; + +struct ValueRefListEntry { + Value *Val; + FunctionType::ParameterAttributes Attrs; +}; + +typedef std::vector ValueRefList; + + } // End llvm namespace #endif diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs index b451433..cb04878 100644 --- a/lib/AsmParser/llvmAsmParser.cpp.cvs +++ b/lib/AsmParser/llvmAsmParser.cpp.cvs @@ -71,136 +71,131 @@ FPVAL = 262, VOID = 263, BOOL = 264, - SBYTE = 265, - UBYTE = 266, - SHORT = 267, - USHORT = 268, - INT = 269, - UINT = 270, - LONG = 271, - ULONG = 272, - FLOAT = 273, - DOUBLE = 274, - LABEL = 275, - TYPE = 276, - VAR_ID = 277, - LABELSTR = 278, - STRINGCONSTANT = 279, - IMPLEMENTATION = 280, - ZEROINITIALIZER = 281, - TRUETOK = 282, - FALSETOK = 283, - BEGINTOK = 284, - ENDTOK = 285, - DECLARE = 286, - DEFINE = 287, - GLOBAL = 288, - CONSTANT = 289, - SECTION = 290, - VOLATILE = 291, - TO = 292, - DOTDOTDOT = 293, - NULL_TOK = 294, - UNDEF = 295, - CONST = 296, - INTERNAL = 297, - LINKONCE = 298, - WEAK = 299, - APPENDING = 300, - DLLIMPORT = 301, - DLLEXPORT = 302, - EXTERN_WEAK = 303, - OPAQUE = 304, - NOT = 305, - EXTERNAL = 306, - TARGET = 307, - TRIPLE = 308, - ENDIAN = 309, - POINTERSIZE = 310, - LITTLE = 311, - BIG = 312, - ALIGN = 313, - DEPLIBS = 314, - CALL = 315, - TAIL = 316, - ASM_TOK = 317, - MODULE = 318, - SIDEEFFECT = 319, - CC_TOK = 320, - CCC_TOK = 321, - CSRETCC_TOK = 322, - FASTCC_TOK = 323, - COLDCC_TOK = 324, - X86_STDCALLCC_TOK = 325, - X86_FASTCALLCC_TOK = 326, - DATALAYOUT = 327, - RET = 328, - BR = 329, - SWITCH = 330, - INVOKE = 331, - UNWIND = 332, - UNREACHABLE = 333, - ADD = 334, - SUB = 335, - MUL = 336, - UDIV = 337, - SDIV = 338, - FDIV = 339, - UREM = 340, - SREM = 341, - FREM = 342, - AND = 343, - OR = 344, - XOR = 345, - ICMP = 346, - FCMP = 347, - EQ = 348, - NE = 349, - SLT = 350, - SGT = 351, - SLE = 352, - SGE = 353, - ULT = 354, - UGT = 355, - ULE = 356, - UGE = 357, - OEQ = 358, - ONE = 359, - OLT = 360, - OGT = 361, - OLE = 362, - OGE = 363, - ORD = 364, - UNO = 365, - UEQ = 366, - UNE = 367, - MALLOC = 368, - ALLOCA = 369, - FREE = 370, - LOAD = 371, - STORE = 372, - GETELEMENTPTR = 373, - TRUNC = 374, - ZEXT = 375, - SEXT = 376, - FPTRUNC = 377, - FPEXT = 378, - BITCAST = 379, - UITOFP = 380, - SITOFP = 381, - FPTOUI = 382, - FPTOSI = 383, - INTTOPTR = 384, - PTRTOINT = 385, - PHI_TOK = 386, - SELECT = 387, - SHL = 388, - LSHR = 389, - ASHR = 390, - VAARG = 391, - EXTRACTELEMENT = 392, - INSERTELEMENT = 393, - SHUFFLEVECTOR = 394 + INT8 = 265, + INT16 = 266, + INT32 = 267, + INT64 = 268, + FLOAT = 269, + DOUBLE = 270, + LABEL = 271, + TYPE = 272, + VAR_ID = 273, + LABELSTR = 274, + STRINGCONSTANT = 275, + IMPLEMENTATION = 276, + ZEROINITIALIZER = 277, + TRUETOK = 278, + FALSETOK = 279, + BEGINTOK = 280, + ENDTOK = 281, + DECLARE = 282, + DEFINE = 283, + GLOBAL = 284, + CONSTANT = 285, + SECTION = 286, + VOLATILE = 287, + TO = 288, + DOTDOTDOT = 289, + NULL_TOK = 290, + UNDEF = 291, + INTERNAL = 292, + LINKONCE = 293, + WEAK = 294, + APPENDING = 295, + DLLIMPORT = 296, + DLLEXPORT = 297, + EXTERN_WEAK = 298, + OPAQUE = 299, + NOT = 300, + EXTERNAL = 301, + TARGET = 302, + TRIPLE = 303, + ENDIAN = 304, + POINTERSIZE = 305, + LITTLE = 306, + BIG = 307, + ALIGN = 308, + DEPLIBS = 309, + CALL = 310, + TAIL = 311, + ASM_TOK = 312, + MODULE = 313, + SIDEEFFECT = 314, + CC_TOK = 315, + CCC_TOK = 316, + CSRETCC_TOK = 317, + FASTCC_TOK = 318, + COLDCC_TOK = 319, + X86_STDCALLCC_TOK = 320, + X86_FASTCALLCC_TOK = 321, + DATALAYOUT = 322, + RET = 323, + BR = 324, + SWITCH = 325, + INVOKE = 326, + UNWIND = 327, + UNREACHABLE = 328, + ADD = 329, + SUB = 330, + MUL = 331, + UDIV = 332, + SDIV = 333, + FDIV = 334, + UREM = 335, + SREM = 336, + FREM = 337, + AND = 338, + OR = 339, + XOR = 340, + ICMP = 341, + FCMP = 342, + EQ = 343, + NE = 344, + SLT = 345, + SGT = 346, + SLE = 347, + SGE = 348, + ULT = 349, + UGT = 350, + ULE = 351, + UGE = 352, + OEQ = 353, + ONE = 354, + OLT = 355, + OGT = 356, + OLE = 357, + OGE = 358, + ORD = 359, + UNO = 360, + UEQ = 361, + UNE = 362, + MALLOC = 363, + ALLOCA = 364, + FREE = 365, + LOAD = 366, + STORE = 367, + GETELEMENTPTR = 368, + TRUNC = 369, + ZEXT = 370, + SEXT = 371, + FPTRUNC = 372, + FPEXT = 373, + BITCAST = 374, + UITOFP = 375, + SITOFP = 376, + FPTOUI = 377, + FPTOSI = 378, + INTTOPTR = 379, + PTRTOINT = 380, + PHI_TOK = 381, + SELECT = 382, + SHL = 383, + LSHR = 384, + ASHR = 385, + VAARG = 386, + EXTRACTELEMENT = 387, + INSERTELEMENT = 388, + SHUFFLEVECTOR = 389 }; #endif /* Tokens. */ @@ -211,142 +206,137 @@ #define FPVAL 262 #define VOID 263 #define BOOL 264 -#define SBYTE 265 -#define UBYTE 266 -#define SHORT 267 -#define USHORT 268 -#define INT 269 -#define UINT 270 -#define LONG 271 -#define ULONG 272 -#define FLOAT 273 -#define DOUBLE 274 -#define LABEL 275 -#define TYPE 276 -#define VAR_ID 277 -#define LABELSTR 278 -#define STRINGCONSTANT 279 -#define IMPLEMENTATION 280 -#define ZEROINITIALIZER 281 -#define TRUETOK 282 -#define FALSETOK 283 -#define BEGINTOK 284 -#define ENDTOK 285 -#define DECLARE 286 -#define DEFINE 287 -#define GLOBAL 288 -#define CONSTANT 289 -#define SECTION 290 -#define VOLATILE 291 -#define TO 292 -#define DOTDOTDOT 293 -#define NULL_TOK 294 -#define UNDEF 295 -#define CONST 296 -#define INTERNAL 297 -#define LINKONCE 298 -#define WEAK 299 -#define APPENDING 300 -#define DLLIMPORT 301 -#define DLLEXPORT 302 -#define EXTERN_WEAK 303 -#define OPAQUE 304 -#define NOT 305 -#define EXTERNAL 306 -#define TARGET 307 -#define TRIPLE 308 -#define ENDIAN 309 -#define POINTERSIZE 310 -#define LITTLE 311 -#define BIG 312 -#define ALIGN 313 -#define DEPLIBS 314 -#define CALL 315 -#define TAIL 316 -#define ASM_TOK 317 -#define MODULE 318 -#define SIDEEFFECT 319 -#define CC_TOK 320 -#define CCC_TOK 321 -#define CSRETCC_TOK 322 -#define FASTCC_TOK 323 -#define COLDCC_TOK 324 -#define X86_STDCALLCC_TOK 325 -#define X86_FASTCALLCC_TOK 326 -#define DATALAYOUT 327 -#define RET 328 -#define BR 329 -#define SWITCH 330 -#define INVOKE 331 -#define UNWIND 332 -#define UNREACHABLE 333 -#define ADD 334 -#define SUB 335 -#define MUL 336 -#define UDIV 337 -#define SDIV 338 -#define FDIV 339 -#define UREM 340 -#define SREM 341 -#define FREM 342 -#define AND 343 -#define OR 344 -#define XOR 345 -#define ICMP 346 -#define FCMP 347 -#define EQ 348 -#define NE 349 -#define SLT 350 -#define SGT 351 -#define SLE 352 -#define SGE 353 -#define ULT 354 -#define UGT 355 -#define ULE 356 -#define UGE 357 -#define OEQ 358 -#define ONE 359 -#define OLT 360 -#define OGT 361 -#define OLE 362 -#define OGE 363 -#define ORD 364 -#define UNO 365 -#define UEQ 366 -#define UNE 367 -#define MALLOC 368 -#define ALLOCA 369 -#define FREE 370 -#define LOAD 371 -#define STORE 372 -#define GETELEMENTPTR 373 -#define TRUNC 374 -#define ZEXT 375 -#define SEXT 376 -#define FPTRUNC 377 -#define FPEXT 378 -#define BITCAST 379 -#define UITOFP 380 -#define SITOFP 381 -#define FPTOUI 382 -#define FPTOSI 383 -#define INTTOPTR 384 -#define PTRTOINT 385 -#define PHI_TOK 386 -#define SELECT 387 -#define SHL 388 -#define LSHR 389 -#define ASHR 390 -#define VAARG 391 -#define EXTRACTELEMENT 392 -#define INSERTELEMENT 393 -#define SHUFFLEVECTOR 394 +#define INT8 265 +#define INT16 266 +#define INT32 267 +#define INT64 268 +#define FLOAT 269 +#define DOUBLE 270 +#define LABEL 271 +#define TYPE 272 +#define VAR_ID 273 +#define LABELSTR 274 +#define STRINGCONSTANT 275 +#define IMPLEMENTATION 276 +#define ZEROINITIALIZER 277 +#define TRUETOK 278 +#define FALSETOK 279 +#define BEGINTOK 280 +#define ENDTOK 281 +#define DECLARE 282 +#define DEFINE 283 +#define GLOBAL 284 +#define CONSTANT 285 +#define SECTION 286 +#define VOLATILE 287 +#define TO 288 +#define DOTDOTDOT 289 +#define NULL_TOK 290 +#define UNDEF 291 +#define INTERNAL 292 +#define LINKONCE 293 +#define WEAK 294 +#define APPENDING 295 +#define DLLIMPORT 296 +#define DLLEXPORT 297 +#define EXTERN_WEAK 298 +#define OPAQUE 299 +#define NOT 300 +#define EXTERNAL 301 +#define TARGET 302 +#define TRIPLE 303 +#define ENDIAN 304 +#define POINTERSIZE 305 +#define LITTLE 306 +#define BIG 307 +#define ALIGN 308 +#define DEPLIBS 309 +#define CALL 310 +#define TAIL 311 +#define ASM_TOK 312 +#define MODULE 313 +#define SIDEEFFECT 314 +#define CC_TOK 315 +#define CCC_TOK 316 +#define CSRETCC_TOK 317 +#define FASTCC_TOK 318 +#define COLDCC_TOK 319 +#define X86_STDCALLCC_TOK 320 +#define X86_FASTCALLCC_TOK 321 +#define DATALAYOUT 322 +#define RET 323 +#define BR 324 +#define SWITCH 325 +#define INVOKE 326 +#define UNWIND 327 +#define UNREACHABLE 328 +#define ADD 329 +#define SUB 330 +#define MUL 331 +#define UDIV 332 +#define SDIV 333 +#define FDIV 334 +#define UREM 335 +#define SREM 336 +#define FREM 337 +#define AND 338 +#define OR 339 +#define XOR 340 +#define ICMP 341 +#define FCMP 342 +#define EQ 343 +#define NE 344 +#define SLT 345 +#define SGT 346 +#define SLE 347 +#define SGE 348 +#define ULT 349 +#define UGT 350 +#define ULE 351 +#define UGE 352 +#define OEQ 353 +#define ONE 354 +#define OLT 355 +#define OGT 356 +#define OLE 357 +#define OGE 358 +#define ORD 359 +#define UNO 360 +#define UEQ 361 +#define UNE 362 +#define MALLOC 363 +#define ALLOCA 364 +#define FREE 365 +#define LOAD 366 +#define STORE 367 +#define GETELEMENTPTR 368 +#define TRUNC 369 +#define ZEXT 370 +#define SEXT 371 +#define FPTRUNC 372 +#define FPEXT 373 +#define BITCAST 374 +#define UITOFP 375 +#define SITOFP 376 +#define FPTOUI 377 +#define FPTOSI 378 +#define INTTOPTR 379 +#define PTRTOINT 380 +#define PHI_TOK 381 +#define SELECT 382 +#define SHL 383 +#define LSHR 384 +#define ASHR 385 +#define VAARG 386 +#define EXTRACTELEMENT 387 +#define INSERTELEMENT 388 +#define SHUFFLEVECTOR 389 /* Copy the first part of user declarations. */ -#line 14 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 14 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" #include "ParserInternals.h" #include "llvm/CallingConv.h" @@ -355,12 +345,16 @@ #include "llvm/Module.h" #include "llvm/SymbolTable.h" #include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/Support/CommandLine.h" #include "llvm/ADT/STLExtras.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/Streams.h" #include #include #include +#ifndef NDEBUG +#define YYDEBUG 1 +#endif // The following is a gross hack. In order to rid the libAsmParser library of // exceptions, we have to have a way of getting the yyparse function to go into @@ -383,6 +377,11 @@ int yyparse(); namespace llvm { std::string CurFilename; +#if YYDEBUG +static cl::opt +Debug("debug-yacc", cl::desc("Print yacc debug state changes"), + cl::Hidden, cl::init(false)); +#endif } using namespace llvm; @@ -407,6 +406,7 @@ static GlobalVariable *CurGV; // destroyed when the function is completed. // typedef std::vector ValueList; // Numbered defs + static void ResolveDefinitions(std::map &LateResolvers, std::map *FutureLateResolvers = 0); @@ -1140,34 +1140,12 @@ static PATypeHolder HandleUpRefs(const Type *ty) { return Ty; } -// common code from the two 'RunVMAsmParser' functions -static Module* RunParser(Module * M) { - - llvmAsmlineno = 1; // Reset the current line number... - CurModule.CurrentModule = M; - - // Check to make sure the parser succeeded - if (yyparse()) { - if (ParserResult) - delete ParserResult; - return 0; - } - - // Check to make sure that parsing produced a result - if (!ParserResult) - return 0; - - // Reset ParserResult variable while saving its value for the result. - Module *Result = ParserResult; - ParserResult = 0; - - return Result; -} - //===----------------------------------------------------------------------===// // RunVMAsmParser - Define an interface to this parser //===----------------------------------------------------------------------===// // +static Module* RunParser(Module * M); + Module *llvm::RunVMAsmParser(const std::string &Filename, FILE *F) { set_scan_file(F); @@ -1207,23 +1185,25 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 855 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 843 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; - std::pair *ArgVal; llvm::BasicBlock *BasicBlockVal; llvm::TerminatorInst *TermInstVal; llvm::Instruction *InstVal; llvm::Constant *ConstVal; const llvm::Type *PrimType; + std::list *TypeList; llvm::PATypeHolder *TypeVal; llvm::Value *ValueVal; - - std::vector > *ArgList; std::vector *ValueList; - std::list *TypeList; + llvm::ArgListType *ArgList; + llvm::TypeWithAttrs TypeWithAttrs; + llvm::TypeWithAttrsList *TypeWithAttrsList; + llvm::ValueRefList *ValueRefList; + // Represent the RHS of PHI node std::list > *PHIList; @@ -1231,6 +1211,7 @@ typedef union YYSTYPE { std::vector *ConstVector; llvm::GlobalValue::LinkageTypes Linkage; + llvm::FunctionType::ParameterAttributes ParamAttrs; int64_t SInt64Val; uint64_t UInt64Val; int SIntVal; @@ -1251,7 +1232,7 @@ typedef union YYSTYPE { llvm::FCmpInst::Predicate FPredicate; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 1255 "llvmAsmParser.tab.c" +#line 1236 "llvmAsmParser.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -1263,7 +1244,7 @@ typedef union YYSTYPE { /* Line 219 of yacc.c. */ -#line 1267 "llvmAsmParser.tab.c" +#line 1248 "llvmAsmParser.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -1414,20 +1395,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 37 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1478 +#define YYLAST 1503 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 154 +#define YYNTOKENS 150 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 78 +#define YYNNTS 77 /* YYNRULES -- Number of rules. */ -#define YYNRULES 293 +#define YYNRULES 288 /* YYNRULES -- Number of states. */ -#define YYNSTATES 564 +#define YYNSTATES 572 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 394 +#define YYMAXUTOK 389 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1439,15 +1420,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, - 143, 144, 152, 2, 141, 2, 2, 2, 2, 2, + 138, 139, 140, 2, 136, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 148, 140, 149, 2, 2, 2, 2, 2, 2, 2, + 145, 135, 146, 2, 137, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 145, 142, 147, 2, 2, 2, 2, 2, 153, + 2, 142, 141, 144, 2, 2, 2, 2, 2, 149, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 146, 2, 2, 150, 2, 151, 2, 2, 2, 2, + 143, 2, 2, 147, 2, 148, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1473,8 +1454,7 @@ static const unsigned char yytranslate[] = 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139 + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134 }; #if YYDEBUG @@ -1488,160 +1468,160 @@ static const unsigned short int yyprhs[] = 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, - 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, - 140, 141, 143, 145, 147, 149, 151, 153, 155, 157, - 158, 160, 162, 164, 166, 168, 170, 171, 172, 174, - 176, 178, 180, 182, 184, 187, 188, 191, 192, 196, - 199, 200, 202, 203, 207, 209, 212, 214, 216, 218, - 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, - 240, 242, 244, 246, 248, 250, 252, 255, 260, 266, - 272, 276, 279, 285, 290, 293, 295, 299, 301, 305, - 307, 308, 313, 317, 321, 326, 331, 335, 338, 341, - 344, 347, 350, 353, 356, 359, 362, 365, 368, 371, - 378, 384, 393, 400, 407, 415, 423, 430, 437, 446, - 455, 459, 461, 463, 465, 467, 468, 470, 473, 474, - 478, 479, 483, 487, 489, 493, 494, 500, 501, 508, - 509, 516, 519, 523, 525, 527, 529, 533, 537, 541, - 545, 549, 553, 555, 556, 558, 560, 562, 563, 566, - 570, 572, 574, 578, 580, 581, 590, 592, 594, 598, - 600, 602, 605, 608, 609, 611, 613, 615, 617, 619, - 621, 623, 625, 627, 631, 633, 639, 641, 643, 645, - 647, 650, 653, 656, 660, 663, 664, 666, 669, 672, - 676, 686, 696, 705, 719, 721, 723, 730, 736, 739, - 746, 754, 756, 760, 762, 763, 766, 768, 774, 780, - 787, 794, 797, 802, 807, 814, 819, 824, 831, 838, - 841, 849, 851, 854, 855, 857, 858, 862, 869, 873, - 880, 883, 888, 895 + 119, 121, 123, 125, 128, 129, 131, 133, 135, 137, + 139, 141, 143, 145, 146, 148, 150, 151, 153, 155, + 157, 159, 160, 162, 164, 166, 168, 170, 172, 175, + 177, 179, 181, 185, 186, 189, 194, 195, 198, 199, + 203, 206, 207, 209, 210, 214, 216, 219, 221, 223, + 225, 227, 229, 231, 233, 235, 237, 239, 242, 244, + 247, 253, 259, 265, 271, 275, 278, 284, 289, 292, + 295, 298, 300, 304, 306, 310, 312, 313, 315, 319, + 324, 328, 332, 337, 342, 346, 349, 352, 355, 358, + 361, 364, 367, 370, 373, 376, 383, 389, 398, 405, + 412, 420, 428, 435, 442, 451, 460, 464, 466, 468, + 470, 472, 473, 475, 478, 479, 483, 484, 488, 492, + 494, 498, 502, 503, 509, 510, 517, 518, 525, 528, + 532, 534, 536, 538, 542, 546, 550, 554, 558, 562, + 564, 565, 567, 569, 571, 572, 578, 582, 584, 588, + 590, 591, 600, 602, 604, 608, 610, 612, 615, 618, + 619, 621, 623, 625, 627, 629, 631, 633, 635, 637, + 641, 643, 649, 651, 653, 655, 657, 660, 663, 666, + 670, 673, 674, 676, 679, 682, 686, 696, 706, 715, + 729, 731, 733, 740, 746, 749, 756, 764, 768, 774, + 775, 776, 780, 783, 785, 791, 797, 804, 811, 814, + 819, 824, 831, 836, 841, 848, 855, 858, 866, 868, + 870, 871, 875, 882, 886, 893, 896, 901, 908 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const short int yyrhs[] = { - 189, 0, -1, 5, -1, 6, -1, 79, -1, 80, + 186, 0, -1, 5, -1, 6, -1, 74, -1, 75, + -1, 76, -1, 77, -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, 114, -1, 115, -1, 116, -1, 117, -1, 118, -1, 119, -1, 120, -1, 121, -1, 122, -1, 123, - -1, 124, -1, 125, -1, 126, -1, 127, -1, 128, - -1, 129, -1, 130, -1, 133, -1, 134, -1, 135, + -1, 124, -1, 125, -1, 128, -1, 129, -1, 130, + -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, 94, -1, 95, -1, 96, -1, 97, -1, 98, -1, 99, -1, 100, -1, 101, -1, 102, -1, 103, -1, 104, -1, 105, -1, 106, -1, 107, - -1, 108, -1, 109, -1, 110, -1, 111, -1, 112, - -1, 99, -1, 100, -1, 101, -1, 102, -1, 27, - -1, 28, -1, 16, -1, 14, -1, 12, -1, 10, - -1, 17, -1, 15, -1, 13, -1, 11, -1, 162, - -1, 163, -1, 18, -1, 19, -1, 202, 140, -1, - -1, 42, -1, 44, -1, 43, -1, 45, -1, 47, - -1, 46, -1, 48, -1, 51, -1, -1, 46, -1, - 48, -1, 42, -1, 43, -1, 44, -1, 47, -1, - -1, -1, 66, -1, 67, -1, 68, -1, 69, -1, - 70, -1, 71, -1, 65, 4, -1, -1, 58, 4, - -1, -1, 141, 58, 4, -1, 35, 24, -1, -1, - 174, -1, -1, 141, 177, 176, -1, 174, -1, 58, - 4, -1, 180, -1, 8, -1, 182, -1, 8, -1, - 182, -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, 49, -1, 181, -1, - 215, -1, 142, 4, -1, 179, 143, 184, 144, -1, - 145, 4, 146, 182, 147, -1, 148, 4, 146, 182, - 149, -1, 150, 183, 151, -1, 150, 151, -1, 148, - 150, 183, 151, 149, -1, 148, 150, 151, 149, -1, - 182, 152, -1, 182, -1, 183, 141, 182, -1, 183, - -1, 183, 141, 38, -1, 38, -1, -1, 180, 145, - 187, 147, -1, 180, 145, 147, -1, 180, 153, 24, - -1, 180, 148, 187, 149, -1, 180, 150, 187, 151, - -1, 180, 150, 151, -1, 180, 39, -1, 180, 40, - -1, 180, 215, -1, 180, 186, -1, 180, 26, -1, - 162, 3, -1, 162, 4, -1, 163, 4, -1, 163, - 3, -1, 9, 27, -1, 9, 28, -1, 165, 7, - -1, 158, 143, 185, 37, 180, 144, -1, 118, 143, - 185, 229, 144, -1, 132, 143, 185, 141, 185, 141, - 185, 144, -1, 156, 143, 185, 141, 185, 144, -1, - 157, 143, 185, 141, 185, 144, -1, 91, 160, 143, - 185, 141, 185, 144, -1, 92, 161, 143, 185, 141, - 185, 144, -1, 159, 143, 185, 141, 185, 144, -1, - 137, 143, 185, 141, 185, 144, -1, 138, 143, 185, - 141, 185, 141, 185, 144, -1, 139, 143, 185, 141, - 185, 141, 185, 144, -1, 187, 141, 185, -1, 185, - -1, 33, -1, 34, -1, 190, -1, -1, 191, -1, - 190, 191, -1, -1, 32, 192, 211, -1, -1, 31, - 193, 212, -1, 63, 62, 197, -1, 25, -1, 166, - 21, 178, -1, -1, 166, 188, 185, 194, 176, -1, - -1, 166, 167, 188, 185, 195, 176, -1, -1, 166, - 168, 188, 180, 196, 176, -1, 52, 199, -1, 59, - 140, 200, -1, 24, -1, 57, -1, 56, -1, 54, - 140, 198, -1, 55, 140, 4, -1, 53, 140, 24, - -1, 72, 140, 24, -1, 145, 201, 147, -1, 201, - 141, 24, -1, 24, -1, -1, 22, -1, 24, -1, - 202, -1, -1, 180, 203, -1, 205, 141, 204, -1, - 204, -1, 205, -1, 205, 141, 38, -1, 38, -1, - -1, 171, 178, 202, 143, 206, 144, 175, 172, -1, - 29, -1, 150, -1, 170, 207, 208, -1, 30, -1, - 151, -1, 218, 210, -1, 169, 207, -1, -1, 64, - -1, 3, -1, 4, -1, 7, -1, 27, -1, 28, - -1, 39, -1, 40, -1, 26, -1, 148, 187, 149, - -1, 186, -1, 62, 213, 24, 141, 24, -1, 155, - -1, 202, -1, 215, -1, 214, -1, 180, 216, -1, - 218, 219, -1, 209, 219, -1, 220, 166, 221, -1, - 220, 223, -1, -1, 23, -1, 73, 217, -1, 73, - 8, -1, 74, 20, 216, -1, 74, 9, 216, 141, - 20, 216, 141, 20, 216, -1, 75, 164, 216, 141, - 20, 216, 145, 222, 147, -1, 75, 164, 216, 141, - 20, 216, 145, 147, -1, 76, 171, 178, 216, 143, - 226, 144, 37, 20, 216, 77, 20, 216, -1, 77, - -1, 78, -1, 222, 164, 214, 141, 20, 216, -1, - 164, 214, 141, 20, 216, -1, 166, 228, -1, 180, - 145, 216, 141, 216, 147, -1, 224, 141, 145, 216, - 141, 216, 147, -1, 217, -1, 225, 141, 217, -1, - 225, -1, -1, 61, 60, -1, 60, -1, 156, 180, - 216, 141, 216, -1, 157, 180, 216, 141, 216, -1, - 91, 160, 180, 216, 141, 216, -1, 92, 161, 180, - 216, 141, 216, -1, 50, 217, -1, 159, 217, 141, - 217, -1, 158, 217, 37, 180, -1, 132, 217, 141, - 217, 141, 217, -1, 136, 217, 141, 180, -1, 137, - 217, 141, 217, -1, 138, 217, 141, 217, 141, 217, - -1, 139, 217, 141, 217, 141, 217, -1, 131, 224, - -1, 227, 171, 178, 216, 143, 226, 144, -1, 231, - -1, 141, 225, -1, -1, 36, -1, -1, 113, 180, - 173, -1, 113, 180, 141, 15, 216, 173, -1, 114, - 180, 173, -1, 114, 180, 141, 15, 216, 173, -1, - 115, 217, -1, 230, 116, 180, 216, -1, 230, 117, - 217, 141, 180, 216, -1, 118, 180, 216, 229, -1 + -1, 94, -1, 95, -1, 96, -1, 97, -1, 23, + -1, 24, -1, 13, -1, 12, -1, 11, -1, 10, + -1, 14, -1, 15, -1, 199, 135, -1, -1, 37, + -1, 39, -1, 38, -1, 40, -1, 42, -1, 41, + -1, 43, -1, 46, -1, -1, 41, -1, 43, -1, + -1, 37, -1, 38, -1, 39, -1, 42, -1, -1, + 61, -1, 62, -1, 63, -1, 64, -1, 65, -1, + 66, -1, 60, 4, -1, 115, -1, 116, -1, 166, + -1, 167, 136, 166, -1, -1, 137, 166, -1, 137, + 138, 167, 139, -1, -1, 53, 4, -1, -1, 136, + 53, 4, -1, 31, 20, -1, -1, 171, -1, -1, + 136, 174, 173, -1, 171, -1, 53, 4, -1, 9, + -1, 10, -1, 11, -1, 12, -1, 13, -1, 14, + -1, 15, -1, 16, -1, 44, -1, 175, -1, 176, + 140, -1, 211, -1, 141, 4, -1, 176, 168, 138, + 180, 139, -1, 8, 168, 138, 180, 139, -1, 142, + 4, 143, 176, 144, -1, 145, 4, 143, 176, 146, + -1, 147, 181, 148, -1, 147, 148, -1, 145, 147, + 181, 148, 146, -1, 145, 147, 148, 146, -1, 176, + 168, -1, 176, 168, -1, 8, 168, -1, 177, -1, + 179, 136, 177, -1, 179, -1, 179, 136, 34, -1, + 34, -1, -1, 176, -1, 181, 136, 176, -1, 176, + 142, 184, 144, -1, 176, 142, 144, -1, 176, 149, + 20, -1, 176, 145, 184, 146, -1, 176, 147, 184, + 148, -1, 176, 147, 148, -1, 176, 35, -1, 176, + 36, -1, 176, 211, -1, 176, 183, -1, 176, 22, + -1, 158, 3, -1, 158, 4, -1, 9, 23, -1, + 9, 24, -1, 159, 7, -1, 154, 138, 182, 33, + 176, 139, -1, 113, 138, 182, 222, 139, -1, 127, + 138, 182, 136, 182, 136, 182, 139, -1, 152, 138, + 182, 136, 182, 139, -1, 153, 138, 182, 136, 182, + 139, -1, 86, 156, 138, 182, 136, 182, 139, -1, + 87, 157, 138, 182, 136, 182, 139, -1, 155, 138, + 182, 136, 182, 139, -1, 132, 138, 182, 136, 182, + 139, -1, 133, 138, 182, 136, 182, 136, 182, 139, + -1, 134, 138, 182, 136, 182, 136, 182, 139, -1, + 184, 136, 182, -1, 182, -1, 29, -1, 30, -1, + 187, -1, -1, 188, -1, 187, 188, -1, -1, 28, + 189, 207, -1, -1, 27, 190, 208, -1, 58, 57, + 194, -1, 21, -1, 160, 17, 176, -1, 160, 17, + 8, -1, -1, 160, 185, 182, 191, 173, -1, -1, + 160, 161, 185, 182, 192, 173, -1, -1, 160, 162, + 185, 176, 193, 173, -1, 47, 196, -1, 54, 135, + 197, -1, 20, -1, 52, -1, 51, -1, 49, 135, + 195, -1, 50, 135, 4, -1, 48, 135, 20, -1, + 67, 135, 20, -1, 142, 198, 144, -1, 198, 136, + 20, -1, 20, -1, -1, 18, -1, 20, -1, 199, + -1, -1, 201, 136, 176, 168, 200, -1, 176, 168, + 200, -1, 201, -1, 201, 136, 34, -1, 34, -1, + -1, 165, 178, 199, 138, 202, 139, 172, 169, -1, + 25, -1, 147, -1, 164, 203, 204, -1, 26, -1, + 148, -1, 214, 206, -1, 163, 203, -1, -1, 59, + -1, 3, -1, 4, -1, 7, -1, 23, -1, 24, + -1, 35, -1, 36, -1, 22, -1, 145, 184, 146, + -1, 183, -1, 57, 209, 20, 136, 20, -1, 151, + -1, 199, -1, 211, -1, 210, -1, 176, 212, -1, + 214, 215, -1, 205, 215, -1, 216, 160, 217, -1, + 216, 219, -1, -1, 19, -1, 68, 213, -1, 68, + 8, -1, 69, 16, 212, -1, 69, 9, 212, 136, + 16, 212, 136, 16, 212, -1, 70, 158, 212, 136, + 16, 212, 142, 218, 144, -1, 70, 158, 212, 136, + 16, 212, 142, 144, -1, 71, 165, 178, 212, 138, + 221, 139, 33, 16, 212, 72, 16, 212, -1, 72, + -1, 73, -1, 218, 158, 210, 136, 16, 212, -1, + 158, 210, 136, 16, 212, -1, 160, 224, -1, 176, + 142, 212, 136, 212, 144, -1, 220, 136, 142, 212, + 136, 212, 144, -1, 176, 212, 168, -1, 221, 136, + 176, 212, 168, -1, -1, -1, 222, 136, 213, -1, + 56, 55, -1, 55, -1, 152, 176, 212, 136, 212, + -1, 153, 176, 212, 136, 212, -1, 86, 156, 176, + 212, 136, 212, -1, 87, 157, 176, 212, 136, 212, + -1, 45, 213, -1, 155, 213, 136, 213, -1, 154, + 213, 33, 176, -1, 127, 213, 136, 213, 136, 213, + -1, 131, 213, 136, 176, -1, 132, 213, 136, 213, + -1, 133, 213, 136, 213, 136, 213, -1, 134, 213, + 136, 213, 136, 213, -1, 126, 220, -1, 223, 165, + 178, 212, 138, 221, 139, -1, 226, -1, 32, -1, + -1, 108, 176, 170, -1, 108, 176, 136, 12, 212, + 170, -1, 109, 176, 170, -1, 109, 176, 136, 12, + 212, 170, -1, 110, 213, -1, 225, 111, 176, 212, + -1, 225, 112, 213, 136, 176, 212, -1, 113, 176, + 212, 222, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 989, 989, 990, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1001, 1001, 1001, 1002, 1002, 1002, 1002, - 1002, 1002, 1003, 1003, 1003, 1003, 1003, 1003, 1004, 1004, - 1004, 1006, 1006, 1007, 1007, 1008, 1008, 1009, 1009, 1010, - 1010, 1014, 1014, 1015, 1015, 1016, 1016, 1017, 1017, 1018, - 1018, 1019, 1019, 1020, 1020, 1021, 1022, 1027, 1027, 1027, - 1027, 1028, 1028, 1028, 1028, 1029, 1029, 1030, 1030, 1033, - 1037, 1043, 1044, 1045, 1046, 1047, 1051, 1052, 1053, 1057, - 1058, 1059, 1063, 1064, 1065, 1066, 1067, 1070, 1071, 1072, - 1073, 1074, 1075, 1076, 1077, 1086, 1087, 1093, 1094, 1102, - 1110, 1111, 1116, 1117, 1118, 1123, 1137, 1137, 1138, 1138, - 1140, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, 1151, - 1151, 1151, 1151, 1152, 1156, 1160, 1168, 1176, 1189, 1194, - 1206, 1216, 1220, 1230, 1234, 1245, 1250, 1256, 1257, 1261, - 1265, 1276, 1302, 1316, 1346, 1372, 1393, 1406, 1416, 1421, - 1482, 1489, 1497, 1503, 1509, 1515, 1521, 1525, 1529, 1537, - 1549, 1570, 1578, 1584, 1595, 1600, 1605, 1614, 1620, 1626, - 1635, 1639, 1647, 1647, 1658, 1663, 1671, 1672, 1676, 1676, - 1680, 1680, 1683, 1686, 1698, 1720, 1720, 1729, 1729, 1737, - 1737, 1745, 1748, 1754, 1767, 1768, 1770, 1774, 1783, 1787, - 1792, 1794, 1799, 1804, 1813, 1813, 1814, 1814, 1816, 1823, - 1829, 1836, 1840, 1846, 1851, 1856, 1951, 1951, 1953, 1961, - 1961, 1963, 1968, 1978, 1982, 1987, 1991, 1995, 1999, 2003, - 2007, 2011, 2015, 2019, 2044, 2048, 2062, 2066, 2072, 2072, - 2078, 2083, 2087, 2096, 2107, 2116, 2128, 2141, 2145, 2149, - 2154, 2163, 2182, 2191, 2247, 2251, 2258, 2269, 2282, 2291, - 2300, 2310, 2314, 2321, 2321, 2323, 2327, 2332, 2351, 2366, - 2377, 2388, 2401, 2410, 2421, 2429, 2434, 2440, 2446, 2452, - 2467, 2526, 2533, 2536, 2541, 2545, 2552, 2557, 2563, 2568, - 2574, 2582, 2594, 2609 + 0, 983, 983, 984, 994, 994, 994, 994, 994, 994, + 994, 994, 994, 995, 995, 995, 996, 996, 996, 996, + 996, 996, 997, 997, 997, 997, 997, 997, 998, 998, + 998, 1000, 1000, 1001, 1001, 1002, 1002, 1003, 1003, 1004, + 1004, 1008, 1008, 1009, 1009, 1010, 1010, 1011, 1011, 1012, + 1012, 1013, 1013, 1014, 1014, 1015, 1016, 1021, 1021, 1021, + 1021, 1022, 1022, 1025, 1029, 1035, 1036, 1037, 1038, 1039, + 1043, 1044, 1045, 1049, 1050, 1051, 1055, 1056, 1057, 1058, + 1059, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1076, + 1077, 1080, 1081, 1086, 1087, 1088, 1093, 1094, 1100, 1101, + 1109, 1117, 1118, 1123, 1124, 1125, 1130, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1143, 1146, 1150, 1154, 1161, 1166, + 1174, 1192, 1210, 1215, 1227, 1237, 1241, 1251, 1258, 1265, + 1273, 1279, 1284, 1291, 1292, 1299, 1306, 1314, 1319, 1330, + 1358, 1374, 1403, 1431, 1452, 1467, 1479, 1486, 1549, 1558, + 1568, 1574, 1580, 1584, 1588, 1596, 1610, 1631, 1639, 1645, + 1656, 1661, 1666, 1675, 1681, 1687, 1696, 1700, 1708, 1708, + 1719, 1724, 1732, 1733, 1737, 1737, 1741, 1741, 1744, 1747, + 1759, 1783, 1794, 1794, 1803, 1803, 1811, 1811, 1821, 1824, + 1830, 1843, 1844, 1846, 1850, 1859, 1863, 1868, 1870, 1875, + 1880, 1889, 1889, 1890, 1890, 1892, 1902, 1913, 1917, 1926, + 1935, 1940, 2038, 2038, 2040, 2048, 2048, 2050, 2055, 2066, + 2070, 2075, 2079, 2083, 2087, 2091, 2095, 2099, 2103, 2107, + 2132, 2136, 2150, 2154, 2160, 2160, 2166, 2175, 2179, 2188, + 2199, 2208, 2220, 2233, 2237, 2241, 2246, 2255, 2274, 2283, + 2350, 2354, 2361, 2372, 2385, 2394, 2405, 2415, 2423, 2431, + 2434, 2435, 2441, 2445, 2450, 2471, 2488, 2501, 2514, 2527, + 2536, 2549, 2557, 2564, 2570, 2576, 2582, 2597, 2659, 2664, + 2668, 2675, 2682, 2690, 2697, 2705, 2713, 2727, 2744 }; #endif @@ -1651,43 +1631,43 @@ static const unsigned short int yyrline[] = static const char *const yytname[] = { "$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL", "SINTVAL", - "UINTVAL", "FPVAL", "VOID", "BOOL", "SBYTE", "UBYTE", "SHORT", "USHORT", - "INT", "UINT", "LONG", "ULONG", "FLOAT", "DOUBLE", "LABEL", "TYPE", - "VAR_ID", "LABELSTR", "STRINGCONSTANT", "IMPLEMENTATION", - "ZEROINITIALIZER", "TRUETOK", "FALSETOK", "BEGINTOK", "ENDTOK", - "DECLARE", "DEFINE", "GLOBAL", "CONSTANT", "SECTION", "VOLATILE", "TO", - "DOTDOTDOT", "NULL_TOK", "UNDEF", "CONST", "INTERNAL", "LINKONCE", - "WEAK", "APPENDING", "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "OPAQUE", - "NOT", "EXTERNAL", "TARGET", "TRIPLE", "ENDIAN", "POINTERSIZE", "LITTLE", - "BIG", "ALIGN", "DEPLIBS", "CALL", "TAIL", "ASM_TOK", "MODULE", - "SIDEEFFECT", "CC_TOK", "CCC_TOK", "CSRETCC_TOK", "FASTCC_TOK", - "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", "DATALAYOUT", - "RET", "BR", "SWITCH", "INVOKE", "UNWIND", "UNREACHABLE", "ADD", "SUB", - "MUL", "UDIV", "SDIV", "FDIV", "UREM", "SREM", "FREM", "AND", "OR", - "XOR", "ICMP", "FCMP", "EQ", "NE", "SLT", "SGT", "SLE", "SGE", "ULT", - "UGT", "ULE", "UGE", "OEQ", "ONE", "OLT", "OGT", "OLE", "OGE", "ORD", - "UNO", "UEQ", "UNE", "MALLOC", "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", "'='", "','", "'\\\\'", "'('", "')'", - "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'", "'*'", "'c'", "$accept", - "INTVAL", "ArithmeticOps", "LogicalOps", "CastOps", "ShiftOps", - "IPredicates", "FPredicates", "SIntType", "UIntType", "IntType", - "FPType", "OptAssign", "GVInternalLinkage", "GVExternalLinkage", - "FnDeclareLinkage", "FunctionLinkage", "OptCallingConv", "OptAlign", - "OptCAlign", "SectionString", "OptSection", "GlobalVarAttributes", - "GlobalVarAttribute", "TypesV", "UpRTypesV", "Types", "PrimType", - "UpRTypes", "TypeListI", "ArgTypeListI", "ConstVal", "ConstExpr", - "ConstVector", "GlobalType", "Module", "DefinitionList", "Definition", - "@1", "@2", "@3", "@4", "@5", "AsmBlock", "BigOrLittle", - "TargetDefinition", "LibrariesDefinition", "LibList", "Name", "OptName", - "ArgVal", "ArgListH", "ArgList", "FunctionHeaderH", "BEGIN", + "UINTVAL", "FPVAL", "VOID", "BOOL", "INT8", "INT16", "INT32", "INT64", + "FLOAT", "DOUBLE", "LABEL", "TYPE", "VAR_ID", "LABELSTR", + "STRINGCONSTANT", "IMPLEMENTATION", "ZEROINITIALIZER", "TRUETOK", + "FALSETOK", "BEGINTOK", "ENDTOK", "DECLARE", "DEFINE", "GLOBAL", + "CONSTANT", "SECTION", "VOLATILE", "TO", "DOTDOTDOT", "NULL_TOK", + "UNDEF", "INTERNAL", "LINKONCE", "WEAK", "APPENDING", "DLLIMPORT", + "DLLEXPORT", "EXTERN_WEAK", "OPAQUE", "NOT", "EXTERNAL", "TARGET", + "TRIPLE", "ENDIAN", "POINTERSIZE", "LITTLE", "BIG", "ALIGN", "DEPLIBS", + "CALL", "TAIL", "ASM_TOK", "MODULE", "SIDEEFFECT", "CC_TOK", "CCC_TOK", + "CSRETCC_TOK", "FASTCC_TOK", "COLDCC_TOK", "X86_STDCALLCC_TOK", + "X86_FASTCALLCC_TOK", "DATALAYOUT", "RET", "BR", "SWITCH", "INVOKE", + "UNWIND", "UNREACHABLE", "ADD", "SUB", "MUL", "UDIV", "SDIV", "FDIV", + "UREM", "SREM", "FREM", "AND", "OR", "XOR", "ICMP", "FCMP", "EQ", "NE", + "SLT", "SGT", "SLE", "SGE", "ULT", "UGT", "ULE", "UGE", "OEQ", "ONE", + "OLT", "OGT", "OLE", "OGE", "ORD", "UNO", "UEQ", "UNE", "MALLOC", + "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", + "'='", "','", "'@'", "'('", "')'", "'*'", "'\\\\'", "'['", "'x'", "']'", + "'<'", "'>'", "'{'", "'}'", "'c'", "$accept", "INTVAL", "ArithmeticOps", + "LogicalOps", "CastOps", "ShiftOps", "IPredicates", "FPredicates", + "IntType", "FPType", "OptAssign", "GVInternalLinkage", + "GVExternalLinkage", "FunctionDeclareLinkage", "FunctionDefineLinkage", + "OptCallingConv", "ParamAttr", "ParamAttrList", "OptParamAttrs", + "OptAlign", "OptCAlign", "SectionString", "OptSection", + "GlobalVarAttributes", "GlobalVarAttribute", "PrimType", "Types", + "ArgType", "ResultType", "ArgTypeList", "ArgTypeListI", "TypeListI", + "ConstVal", "ConstExpr", "ConstVector", "GlobalType", "Module", + "DefinitionList", "Definition", "@1", "@2", "@3", "@4", "@5", "AsmBlock", + "BigOrLittle", "TargetDefinition", "LibrariesDefinition", "LibList", + "Name", "OptName", "ArgListH", "ArgList", "FunctionHeaderH", "BEGIN", "FunctionHeader", "END", "Function", "FunctionProto", "OptSideEffect", "ConstValueRef", "SymbolicValueRef", "ValueRef", "ResolvedVal", "BasicBlockList", "BasicBlock", "InstructionList", "BBTerminatorInst", - "JumpTable", "Inst", "PHIList", "ValueRefList", "ValueRefListE", - "OptTailCall", "InstVal", "IndexList", "OptVolatile", "MemoryInst", 0 + "JumpTable", "Inst", "PHIList", "ValueRefList", "IndexList", + "OptTailCall", "InstVal", "OptVolatile", "MemoryInst", 0 }; #endif @@ -1709,45 +1689,43 @@ static const unsigned short int yytoknum[] = 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 61, 44, 92, 40, 41, 91, 120, 93, 60, 62, - 123, 125, 42, 99 + 385, 386, 387, 388, 389, 61, 44, 64, 40, 41, + 42, 92, 91, 120, 93, 60, 62, 123, 125, 99 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const unsigned char yyr1[] = { - 0, 154, 155, 155, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 157, 157, 157, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 159, 159, - 159, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 162, 162, 162, - 162, 163, 163, 163, 163, 164, 164, 165, 165, 166, - 166, 167, 167, 167, 167, 167, 168, 168, 168, 169, - 169, 169, 170, 170, 170, 170, 170, 171, 171, 171, - 171, 171, 171, 171, 171, 172, 172, 173, 173, 174, - 175, 175, 176, 176, 177, 177, 178, 178, 179, 179, - 180, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 182, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 183, 183, 184, 184, 184, - 184, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 187, 187, 188, 188, 189, 189, 190, 190, 192, 191, - 193, 191, 191, 191, 191, 194, 191, 195, 191, 196, - 191, 191, 191, 197, 198, 198, 199, 199, 199, 199, - 200, 201, 201, 201, 202, 202, 203, 203, 204, 205, - 205, 206, 206, 206, 206, 207, 208, 208, 209, 210, - 210, 211, 212, 213, 213, 214, 214, 214, 214, 214, - 214, 214, 214, 214, 214, 214, 215, 215, 216, 216, - 217, 218, 218, 219, 220, 220, 220, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 222, 222, 223, 224, - 224, 225, 225, 226, 226, 227, 227, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 229, 229, 230, 230, 231, 231, 231, 231, - 231, 231, 231, 231 + 0, 150, 151, 151, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 153, 153, 153, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 155, 155, + 155, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 158, 158, 158, + 158, 159, 159, 160, 160, 161, 161, 161, 161, 161, + 162, 162, 162, 163, 163, 163, 164, 164, 164, 164, + 164, 165, 165, 165, 165, 165, 165, 165, 165, 166, + 166, 167, 167, 168, 168, 168, 169, 169, 170, 170, + 171, 172, 172, 173, 173, 174, 174, 175, 175, 175, + 175, 175, 175, 175, 175, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 177, 178, + 178, 179, 179, 180, 180, 180, 180, 181, 181, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 184, 184, 185, 185, + 186, 186, 187, 187, 189, 188, 190, 188, 188, 188, + 188, 188, 191, 188, 192, 188, 193, 188, 188, 188, + 194, 195, 195, 196, 196, 196, 196, 197, 198, 198, + 198, 199, 199, 200, 200, 201, 201, 202, 202, 202, + 202, 203, 204, 204, 205, 206, 206, 207, 208, 209, + 209, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 211, 211, 212, 212, 213, 214, 214, 215, + 216, 216, 216, 217, 217, 217, 217, 217, 217, 217, + 217, 217, 218, 218, 219, 220, 220, 221, 221, 221, + 222, 222, 223, 223, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, 224, 225, + 225, 226, 226, 226, 226, 226, 226, 226, 226 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1759,30 +1737,29 @@ static const unsigned char yyr2[] = 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, 1, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 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, 2, 4, 5, 5, - 3, 2, 5, 4, 2, 1, 3, 1, 3, 1, - 0, 4, 3, 3, 4, 4, 3, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, - 5, 8, 6, 6, 7, 7, 6, 6, 8, 8, - 3, 1, 1, 1, 1, 0, 1, 2, 0, 3, - 0, 3, 3, 1, 3, 0, 5, 0, 6, 0, - 6, 2, 3, 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, 2, 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, 6, - 6, 2, 4, 4, 6, 4, 4, 6, 6, 2, - 7, 1, 2, 0, 1, 0, 3, 6, 3, 6, - 2, 4, 6, 4 + 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 3, 0, 2, 4, 0, 2, 0, 3, + 2, 0, 1, 0, 3, 1, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, + 5, 5, 5, 5, 3, 2, 5, 4, 2, 2, + 2, 1, 3, 1, 3, 1, 0, 1, 3, 4, + 3, 3, 4, 4, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 6, 5, 8, 6, 6, + 7, 7, 6, 6, 8, 8, 3, 1, 1, 1, + 1, 0, 1, 2, 0, 3, 0, 3, 3, 1, + 3, 3, 0, 5, 0, 6, 0, 6, 2, 3, + 1, 1, 1, 3, 3, 3, 3, 3, 3, 1, + 0, 1, 1, 1, 0, 5, 3, 1, 3, 1, + 0, 8, 1, 1, 3, 1, 1, 2, 2, 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, 3, 5, 0, + 0, 3, 2, 1, 5, 5, 6, 6, 2, 4, + 4, 6, 4, 4, 6, 6, 2, 7, 1, 1, + 0, 3, 6, 3, 6, 2, 4, 6, 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -1790,525 +1767,534 @@ static const unsigned char yyr2[] = means the default is an error. */ static const unsigned short int yydefact[] = { - 70, 204, 205, 183, 180, 178, 0, 0, 0, 0, - 0, 70, 176, 0, 79, 86, 0, 0, 0, 0, - 191, 0, 0, 0, 172, 173, 71, 73, 72, 74, - 76, 75, 77, 78, 0, 0, 0, 1, 177, 69, - 80, 81, 87, 181, 82, 83, 84, 85, 87, 245, - 179, 245, 0, 0, 0, 0, 203, 192, 193, 182, - 2, 3, 107, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 236, 184, 0, 106, 124, 110, 237, 125, 0, 0, - 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 0, 0, 0, 0, 185, 0, 88, 89, - 90, 91, 92, 93, 0, 222, 0, 246, 242, 70, - 219, 220, 221, 241, 198, 195, 194, 196, 197, 199, - 202, 0, 126, 0, 0, 0, 131, 135, 0, 140, - 134, 187, 189, 156, 157, 152, 153, 155, 154, 158, - 151, 147, 148, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 0, 0, 0, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 0, 28, 29, 30, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 150, 149, 102, 94, 0, - 216, 217, 218, 285, 244, 0, 200, 0, 0, 0, - 0, 0, 130, 139, 137, 0, 102, 102, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 0, 55, - 56, 51, 52, 53, 54, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, - 0, 142, 171, 0, 0, 146, 0, 143, 0, 0, - 0, 0, 0, 186, 0, 284, 0, 266, 0, 0, - 0, 0, 87, 254, 255, 0, 0, 0, 0, 0, + 64, 201, 202, 179, 176, 174, 0, 0, 0, 0, + 0, 64, 172, 0, 73, 76, 0, 0, 0, 0, + 188, 0, 0, 0, 168, 169, 65, 67, 66, 68, + 70, 69, 71, 72, 0, 0, 0, 1, 173, 63, + 74, 75, 81, 177, 77, 78, 79, 80, 81, 241, + 175, 241, 0, 0, 0, 0, 200, 189, 190, 178, + 2, 3, 181, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 0, 0, 0, 0, 232, 116, 180, 233, + 118, 0, 0, 93, 107, 108, 109, 110, 111, 112, + 113, 0, 0, 93, 182, 0, 82, 83, 84, 85, + 86, 87, 0, 218, 0, 242, 238, 64, 215, 216, + 217, 237, 195, 192, 191, 193, 194, 196, 199, 0, + 0, 0, 119, 0, 0, 0, 125, 137, 0, 117, + 0, 184, 186, 152, 153, 150, 151, 154, 149, 145, + 146, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 0, 0, 0, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 0, 28, + 29, 30, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 148, 147, 103, 88, 93, 93, 0, + 212, 213, 214, 280, 240, 0, 197, 89, 90, 0, + 94, 136, 0, 0, 0, 0, 0, 124, 136, 103, + 103, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 0, 55, 56, 51, 52, 53, 54, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 0, 0, + 0, 0, 0, 0, 140, 167, 0, 0, 144, 0, + 141, 0, 0, 0, 0, 0, 183, 130, 129, 0, + 279, 0, 263, 0, 0, 0, 0, 81, 250, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 243, 87, 258, 0, 281, 201, 108, 108, 133, - 0, 136, 0, 127, 188, 190, 0, 0, 283, 0, - 0, 0, 0, 0, 141, 144, 145, 0, 0, 0, - 0, 0, 0, 104, 102, 214, 0, 271, 265, 248, - 247, 0, 0, 60, 64, 59, 63, 58, 62, 57, - 61, 65, 66, 0, 0, 0, 0, 97, 97, 290, - 0, 0, 279, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 128, 129, 132, 138, 0, - 0, 0, 0, 0, 0, 0, 0, 170, 0, 0, - 0, 0, 99, 105, 103, 213, 207, 210, 211, 0, - 225, 226, 227, 232, 228, 229, 230, 231, 223, 0, - 234, 239, 238, 240, 0, 249, 0, 0, 0, 0, - 0, 286, 0, 288, 283, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 261, 282, 160, 0, 0, 0, 0, 0, 0, - 0, 0, 206, 208, 0, 100, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 293, 0, 0, - 0, 275, 276, 0, 0, 0, 0, 273, 272, 0, - 291, 0, 0, 0, 0, 0, 167, 0, 0, 162, - 163, 159, 166, 212, 209, 101, 95, 0, 233, 0, - 0, 264, 0, 0, 97, 98, 97, 0, 0, 0, - 0, 0, 267, 268, 264, 0, 164, 165, 262, 0, - 0, 0, 0, 215, 0, 0, 0, 263, 0, 269, - 270, 0, 287, 289, 0, 0, 274, 277, 278, 0, - 292, 161, 168, 169, 96, 235, 0, 0, 0, 259, - 0, 280, 0, 252, 0, 0, 0, 260, 250, 0, - 251, 0, 0, 0, 0, 0, 0, 0, 0, 257, - 0, 0, 256, 253 + 0, 0, 0, 0, 0, 0, 239, 81, 254, 0, + 278, 198, 91, 0, 135, 93, 131, 133, 0, 93, + 93, 127, 0, 138, 0, 185, 187, 0, 0, 260, + 0, 0, 0, 0, 0, 139, 142, 143, 0, 0, + 0, 0, 0, 0, 105, 103, 210, 93, 268, 262, + 244, 243, 0, 0, 60, 59, 58, 57, 0, 0, + 0, 0, 98, 98, 285, 93, 93, 276, 0, 0, + 0, 0, 0, 93, 93, 0, 0, 0, 0, 0, + 0, 95, 128, 0, 121, 122, 123, 126, 120, 0, + 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, + 0, 100, 106, 104, 209, 93, 207, 0, 221, 222, + 223, 228, 224, 225, 226, 227, 219, 0, 230, 235, + 234, 236, 0, 245, 0, 0, 93, 93, 0, 281, + 0, 283, 260, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 93, 0, 92, 134, 132, + 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, + 93, 0, 204, 0, 101, 220, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 0, 0, + 272, 273, 0, 0, 0, 0, 270, 269, 0, 286, + 0, 0, 0, 261, 0, 163, 0, 0, 158, 159, + 155, 162, 203, 206, 208, 93, 102, 96, 0, 229, + 0, 0, 259, 0, 0, 98, 99, 98, 0, 0, + 0, 0, 0, 264, 265, 259, 93, 160, 161, 0, + 0, 0, 204, 0, 211, 0, 0, 0, 93, 0, + 266, 267, 0, 282, 284, 0, 0, 271, 274, 275, + 0, 287, 157, 164, 165, 205, 97, 231, 0, 0, + 93, 0, 0, 255, 0, 277, 0, 248, 0, 0, + 257, 93, 0, 256, 246, 0, 247, 0, 93, 0, + 0, 0, 258, 0, 0, 0, 0, 253, 0, 0, + 252, 249 }; /* YYDEFGOTO[NTERM-NUM]. */ static const short int yydefgoto[] = { - -1, 80, 191, 192, 193, 194, 228, 245, 102, 103, - 343, 104, 9, 34, 35, 42, 48, 114, 513, 411, - 323, 486, 263, 324, 81, 82, 105, 84, 85, 138, - 215, 252, 400, 253, 36, 10, 11, 12, 15, 14, - 197, 216, 217, 59, 127, 20, 57, 131, 86, 443, - 387, 388, 389, 115, 202, 49, 122, 50, 43, 447, - 401, 87, 403, 431, 51, 118, 119, 291, 545, 204, - 352, 517, 518, 292, 293, 372, 294, 295 + -1, 76, 179, 180, 181, 182, 221, 238, 91, 92, + 9, 34, 35, 42, 48, 102, 200, 293, 130, 514, + 409, 324, 487, 256, 325, 77, 93, 296, 189, 297, + 298, 128, 245, 398, 246, 36, 10, 11, 12, 15, + 14, 185, 209, 210, 59, 115, 20, 57, 119, 79, + 483, 386, 387, 103, 192, 49, 110, 50, 43, 446, + 399, 80, 401, 328, 51, 106, 107, 286, 549, 194, + 347, 519, 371, 287, 288, 289, 290 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -420 +#define YYPACT_NINF -444 static const short int yypact[] = { - 64, -420, -420, -420, -420, -420, 45, -80, 49, 59, - 124, 118, -420, -14, -33, 159, 8, 11, 32, 38, - -420, -10, 121, 1149, -420, -420, -420, -420, -420, -420, - -420, -420, -420, -420, 141, 141, 1195, -420, -420, -420, - -420, -420, 143, -420, -420, -420, -420, -420, 143, 157, - -420, -12, 191, 148, 179, 197, 201, -420, -420, -420, - -420, -420, 90, -420, -420, -420, -420, -420, -420, -420, - -420, -420, -420, -420, -420, -420, 227, 233, 4, 34, - -420, -420, 99, -420, -420, -62, -420, -420, 1195, 1240, - -420, 190, 216, 220, 232, 241, 247, 267, 269, 271, - 246, 285, 275, 277, 287, 523, -420, 278, -420, -420, - -420, -420, -420, -420, 1149, -420, -19, -420, -420, 63, - -420, -420, -420, -420, -420, -420, -420, -420, -420, -420, - -420, -13, -420, 149, 150, 574, -420, -62, -84, 934, - -420, -420, -420, -420, -420, -420, -420, -420, -420, -420, - -420, -420, -420, -420, -420, -420, -420, -420, -420, -420, - -420, -420, -420, -420, -420, 231, 87, 154, -420, -420, - -420, -420, -420, -420, -420, -420, -420, -420, -420, -420, - 155, -420, -420, -420, 156, 158, 160, 982, 1195, 669, - 280, 162, 163, 165, 166, -420, -420, 169, -420, 63, - -420, -420, -420, 1339, -420, 288, -420, 1240, 1240, 164, - -57, 1240, -420, -420, 170, 173, 169, 169, -420, -420, - -420, -420, -420, -420, -420, -420, -420, -420, 171, -420, - -420, -420, -420, -420, -420, -420, -420, -420, -420, -420, - -420, -420, -420, -420, -420, 175, 1195, 1195, 1195, 1195, - 1195, -420, -420, 5, -86, -420, -32, -420, 1195, 1195, - 1195, 1195, 24, -420, 176, -420, 1240, -420, 260, 1260, - 88, 147, 143, -420, -420, 231, 87, 1240, 1240, 1240, - 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, - 1240, -420, 143, -420, 168, -420, -420, 19, -5, -420, - 185, -62, 1002, -420, -420, -420, 1195, 1195, 194, 195, - 196, 202, 203, 1195, -420, -420, -420, 204, 205, 301, - 206, 318, 345, -420, 169, 1047, 704, -420, -420, 90, - -420, 704, 704, -420, -420, -420, -420, -420, -420, -420, - -420, -420, -420, 704, 1149, 1240, 1240, 209, 210, -420, - 704, 207, 219, 221, 222, 226, 228, 229, 704, 704, - 331, 230, 1149, 1240, 1240, -420, -420, -420, -420, 234, - 235, 1240, 236, 1195, 1195, 1195, 1195, -420, 1195, 1195, - 1240, 1195, -420, -420, -420, -420, 63, -420, 237, 238, - -420, -420, -420, -420, -420, -420, -420, -420, 309, 1195, - -420, -420, -420, -420, 240, -420, 244, 704, 704, 704, - 20, -420, 21, -420, 194, 704, 243, 1240, 1240, 1240, - 1240, 1240, 245, 248, 1240, 1240, 704, 704, 249, 1195, - 1195, -420, 250, -420, 251, 255, 252, 259, 261, 262, - 268, 270, -420, -420, 1093, 339, -420, 353, -28, 359, - 383, 272, 263, 276, 704, 414, 704, -420, 279, 704, - 283, -420, -420, 284, 286, 704, 704, -420, -420, 289, - -420, 1240, 292, 293, 1240, 1195, -420, 1195, 1195, -420, - -420, -420, -420, -420, -420, -420, 370, 290, -420, 704, - 704, 1240, 704, 704, 297, -420, 297, 704, 298, 1240, - 1240, 1240, -420, -420, 1240, 704, -420, -420, -420, 296, - 299, 300, 425, -420, 406, 304, 307, 250, 312, -420, - -420, 375, -420, -420, 294, 704, -420, -420, -420, 315, - -420, -420, -420, -420, -420, -420, 422, 9, 416, -420, - 313, -420, 704, -420, 841, 60, 441, -420, -420, 322, - -420, 841, 704, 444, 324, 389, 704, 447, 449, -420, - 704, 704, -420, -420 + 76, -444, -444, -444, -444, -444, -14, -77, 12, 548, + 89, 91, -444, -40, 79, 116, -36, -29, -11, -3, + -444, 14, 119, 949, -444, -444, -444, -444, -444, -444, + -444, -444, -444, -444, 15, 15, 1230, -444, -444, -444, + -444, -444, 131, -444, -444, -444, -444, -444, 131, 124, + -444, -2, 130, -12, 173, 179, 188, -444, -444, -444, + -444, -444, 25, -444, -444, -444, -444, -444, -444, -444, + -444, -444, 212, 214, 4, 72, -444, -444, 44, -444, + -444, 1230, 1271, 103, 152, 207, 225, 243, 260, 230, + 241, 262, 269, 575, -444, 263, -444, -444, -444, -444, + -444, -444, 1288, -444, -16, -444, -444, 117, -444, -444, + -444, -444, -444, -444, -444, -444, -444, -444, -444, -19, + -84, 140, -444, 136, 139, 539, -444, 44, -99, -444, + 150, -444, 44, -444, -444, -444, -444, -444, -444, -444, + -444, -444, -444, -444, -444, -444, -444, -444, -444, -444, + -444, -444, -444, 77, 283, 151, -444, -444, -444, -444, + -444, -444, -444, -444, -444, -444, -444, -444, 154, -444, + -444, -444, 156, 157, 158, 806, 1230, 720, 270, 159, + 162, 166, 170, -444, -444, 155, -444, 103, 20, 117, + -444, -444, -444, 1369, -444, 289, -444, -444, -444, 153, + -444, 1123, 1271, 1271, 164, -98, 1271, -444, 1123, 155, + 155, -444, -444, -444, -444, -444, -444, -444, -444, -444, + -444, 174, -444, -444, -444, -444, -444, -444, -444, -444, + -444, -444, -444, -444, -444, -444, -444, -444, 175, 1230, + 1230, 1230, 1230, 1230, -444, -444, -15, -90, -444, -93, + -444, 1230, 1230, 1230, 1230, -5, -444, 140, 150, 177, + -444, 1271, -444, 256, 1329, 84, 176, 131, -444, -444, + 77, 283, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, -444, 131, -444, 160, + -444, -444, -444, 5, -444, 20, -444, 178, 180, -4, + -39, -444, 181, 44, 182, -444, -444, 1230, 1230, -444, + 184, 186, 187, 190, 1230, -444, -444, -444, 192, 193, + 291, 194, 311, 328, -444, 155, 1169, 756, -444, -444, + 25, -444, 899, 899, -444, -444, -444, -444, 899, 1288, + 1271, 1271, 67, 85, -444, 756, -27, 197, 201, 202, + 203, 205, 206, 756, 756, 310, 208, 1288, 1271, 1271, + 153, -444, 150, 1186, -444, -444, -444, -444, -444, 209, + 210, 73, 1230, 1230, 1230, 1230, -444, 1230, 1230, 1271, + 1230, -444, -444, -444, -444, 20, 211, 213, -444, -444, + -444, -444, -444, -444, -444, -444, 290, 1230, -444, -444, + -444, -444, 215, -444, 221, 899, 756, 756, 13, -444, + 17, -444, -444, 899, 216, 1271, 1271, 1271, 1271, 1271, + 223, 224, 1271, 1271, 899, 756, 226, -444, -444, -444, + 1230, 1230, 1271, -444, 231, 235, 234, 240, 236, 252, + -66, 258, 10, 1213, 317, -444, 330, -71, 382, 386, + 266, 271, 272, 899, 401, 899, 278, 279, 899, 281, + 44, -444, 282, 288, 899, 899, 44, -444, 292, -444, + 1271, 280, 287, -444, 1230, -444, 1230, 1230, -444, -444, + -444, -444, -444, -444, -444, 20, -444, 374, 293, -444, + 899, 899, 1271, 899, 899, 297, -444, 297, 899, 298, + 1271, 1271, 1271, -444, -444, 1271, 756, -444, -444, 296, + 301, 305, 10, 424, -444, 416, 309, 295, 756, 88, + -444, -444, 395, -444, -444, 306, 899, -444, -444, -444, + 100, -444, -444, -444, -444, -444, -444, -444, 433, 3, + 103, 1271, 418, -444, 308, -444, 899, -444, 1031, 8, + -444, 756, 437, -444, -444, 319, -444, 1031, 103, 899, + 440, 321, -444, 387, 899, 442, 444, -444, 899, 899, + -444, -444 }; /* YYPGOTO[NTERM-NUM]. */ static const short int yypgoto[] = { - -420, -420, 291, 295, 302, 303, 198, 199, -269, -268, - -415, -420, 351, -420, -420, -420, -420, -231, -420, -341, - 26, -420, -188, -420, -110, -420, -23, -420, -70, -6, - -420, -20, 367, -183, 256, -420, -420, 463, -420, -420, - -420, -420, -420, -420, -420, -420, -420, -420, 1, -420, - 35, -420, -420, 432, -420, -420, -420, -420, -420, -420, - -419, -43, 76, -252, -420, 435, -420, -420, -420, -420, - -420, 116, -16, -420, -420, 75, -420, -420 + -444, -444, 268, 277, 294, 299, 218, 191, -262, -444, + 356, -444, -444, -444, -444, -245, -196, -444, -60, -444, + -336, 27, -444, -199, -444, -444, -23, 101, -306, -444, + 264, 348, -9, 383, -171, 239, -444, -444, 464, -444, + -444, -444, -444, -444, -444, -444, -444, -444, -444, 1, + -31, -444, -444, 438, -444, -444, -444, -444, -444, -444, + -443, -52, 78, -217, -444, 439, -444, -444, -444, -444, + -444, -10, 81, -444, -444, -444, -444 }; /* 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 -176 +#define YYTABLE_NINF -172 static const short int yytable[] = { - 83, 13, 341, 342, 199, 254, 256, 413, 134, 137, - 200, 117, 13, 40, 327, 41, 106, 330, 120, 333, - 334, 335, 336, 337, 338, 339, 340, 349, 304, 305, - 353, 354, 355, 356, 357, 454, 456, 360, 361, 60, - 61, 344, 90, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 313, 1, 211, 2, 321, - 21, 362, 196, 315, -175, 137, 142, 212, 141, 137, - 333, 334, 335, 336, 337, 338, 339, 340, 455, 455, - 23, -108, 322, 75, 211, 1, 1, 2, 2, 3, - 140, 83, 24, 25, 300, 4, 5, 331, 16, 17, - 18, 26, 27, 28, 29, 30, 31, 32, 332, 313, - 33, 22, 428, 313, 229, 230, 6, 19, -174, 316, - 13, 488, 544, 7, 37, 549, 39, 8, 205, 210, - 551, 201, 554, 214, 206, 56, 384, 297, 298, 121, - 1, 301, 2, 3, 366, 58, 313, 140, 52, 4, - 5, 53, 314, 522, 135, 523, 543, 333, 334, 335, - 336, 337, 338, 339, 340, 460, 365, 462, 463, 464, - 6, 140, 54, 468, 24, 25, 76, 7, 55, 77, - 117, 8, 78, 128, 79, 136, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 264, 44, 45, 46, 125, 126, 47, 550, 107, 108, - 109, 110, 111, 112, 113, 124, 448, 143, 144, -60, - -60, 129, 508, -64, -64, 130, 308, 309, 310, 311, - 312, 132, 301, -109, 407, -59, -59, 133, 317, 318, - 319, 320, 139, 326, -63, -63, 326, 526, 527, 528, - -58, -58, 426, -67, 347, 348, 326, 350, 351, 326, - 326, 326, 326, 326, 358, 359, 326, 326, 341, 342, - -62, -62, -57, -57, -61, -61, 341, 342, 145, 146, - 147, 148, 198, 402, 363, 364, 369, 370, 402, 402, - 88, 89, -68, 377, 149, 207, 208, 246, 247, 248, - 402, 249, 386, 250, 257, 258, 259, 402, 260, 261, - 262, 302, 296, 299, 306, 402, 402, 303, 307, 325, - 328, 83, 408, 409, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 367, 371, 373, 374, 380, 83, - 427, 326, 382, 375, 376, 378, 379, 381, 326, 383, - 410, 412, 415, 434, 435, 436, 437, 440, 438, 439, - 416, 441, 417, 418, 402, 402, 402, 419, 424, 420, - 421, 425, 402, 446, 321, 429, 430, 487, 444, 489, - 433, 449, 445, 402, 402, 450, 465, 442, 459, 466, - 471, 474, 475, 477, 326, 461, 326, 326, 326, 476, - 478, 467, 326, 490, 492, 479, 480, 404, 405, 472, - 473, 402, 481, 402, 482, 491, 402, 493, 495, 406, - 497, 386, 402, 402, 499, 500, 414, 501, 512, 534, - 535, 514, 504, 455, 422, 423, 506, 507, 521, 525, - 531, 539, 542, 532, 533, 536, 402, 402, 505, 402, - 402, 326, 537, 546, 402, 509, 538, 510, 511, 541, - 547, 552, 402, 553, 556, 557, 558, 560, 326, 561, - 203, 485, 195, 345, 38, 346, 326, 326, 326, 484, - 116, 326, 402, 451, 452, 453, 123, 432, 529, 457, - 0, 458, 0, 0, 287, 0, 0, 0, 288, 402, - 0, 0, 469, 470, 0, 289, 290, 0, 0, 402, - 0, 0, 0, 402, 0, 0, 0, 402, 402, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 60, 61, - 494, 0, 496, 0, 0, 498, 0, 0, 0, 0, - 0, 502, 503, 0, 0, 1, 0, 2, 0, 150, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 151, 152, 0, 515, 516, 0, 519, 520, - 0, 0, 0, 524, 0, 0, 0, 0, 0, 60, - 61, 530, 90, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 0, 1, 0, 2, 0, - 0, 540, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 0, 0, 548, 0, - 0, 0, 0, 75, 0, 0, 0, 0, 555, 0, - 0, 0, 559, 0, 0, 0, 562, 563, 0, 0, - 0, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 0, 180, 181, 182, 183, 0, - 184, 185, 186, 0, 0, 0, 0, 0, 187, 0, - 0, 188, 0, 189, 60, 61, 190, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 74, - 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 390, 391, 60, - 61, 392, 0, 0, 0, 0, 76, 0, 75, 77, - 0, 0, 78, 0, 79, 209, 1, 0, 2, 0, - 393, 394, 395, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 396, 397, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 398, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 0, 0, 77, 0, 0, 78, 0, 79, - 255, 0, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, - 0, 184, 185, 186, 390, 391, 0, 0, 392, 0, - 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 393, 394, 395, + 78, 13, 121, 292, 338, 247, 249, 411, 124, 190, + 305, 306, 13, 334, 335, 336, 337, 105, 334, 335, + 336, 337, 339, 121, 108, 453, 322, 94, 1, 455, + 2, 197, 198, 405, 16, 17, 18, 206, 206, 113, + 114, 184, 357, 314, 24, 25, 314, 331, 323, 207, + 302, 424, 127, 19, 199, 317, 316, 344, 21, 132, + 348, 349, 350, 351, 352, 314, 454, 355, 356, 22, + 454, 120, 131, 480, 129, 489, -171, 60, 61, 188, + 83, 63, 64, 65, 66, 67, 68, 69, 70, 37, + 1, -170, 2, 332, 1, 39, 2, 3, 120, 52, + 333, 129, 127, 4, 5, 555, 53, 366, 13, 1, + 120, 2, 3, 129, 561, 413, 71, 195, 4, 5, + 40, 314, 41, 6, 54, 196, 383, 257, 258, 315, + 7, 191, 55, 120, 8, 1, 129, 2, 6, 58, + 365, 360, 426, 105, 361, 7, 109, 547, 208, 8, + 112, 125, 556, 44, 45, 46, 56, 120, 47, 523, + 129, 524, 120, -93, 427, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 133, 134, 116, 295, 299, + 300, 120, -93, 303, 129, 295, 334, 335, 336, 337, + 259, 95, 96, 97, 98, 99, 100, 101, 459, 117, + 461, 462, 463, 408, 120, -93, 467, 129, 118, 432, + -60, -60, 433, 72, 73, 473, 122, 74, 123, 75, + 126, 410, 120, -93, 541, 129, 447, 542, -59, -59, + 309, 310, 311, 312, 313, 362, 541, -61, 327, 545, + 120, 327, 318, 319, 320, 321, -58, -58, -62, 342, + 343, 327, 345, 346, 327, 327, 327, 327, 327, 353, + 354, 327, 327, -57, -57, 135, 136, 186, 197, 198, + 121, 358, 359, 81, 82, 400, 137, 548, 201, 202, + 400, 400, 203, 527, 528, 529, 400, 557, 208, 239, + 250, 255, 240, 400, 241, 242, 243, 251, 369, 370, + 252, 400, 400, 385, 253, 376, 222, 223, 254, 291, + 301, 329, 307, 308, 363, 326, 188, 406, 407, 364, + 372, 368, 373, 374, 379, 442, 375, 367, 377, 378, + 380, 381, 382, 414, 188, 425, 327, 415, 416, 417, + 295, 418, 419, 422, 423, 430, 431, 443, 322, 445, + 488, 448, 444, 400, 400, 400, 440, 449, 458, 464, + 465, 400, 470, 434, 435, 436, 437, 474, 438, 439, + 476, 441, 400, 400, 475, 478, 477, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 479, 327, 460, 327, 327, 327, 481, 490, 466, + 327, 400, 491, 400, 492, 496, 400, 493, 494, 327, + 402, 403, 400, 400, 432, 498, 404, 500, 501, 507, + 485, 471, 472, 412, 502, 512, 508, 513, 536, 515, + 505, 420, 421, 522, 526, 532, 537, 539, 400, 400, + 533, 400, 400, 482, 534, 538, 400, 506, 454, 546, + 543, 552, 553, 559, 400, 560, 564, 565, 568, 566, + 569, 282, 341, 193, 429, 509, 400, 510, 511, 518, + 283, 486, 304, 205, 400, 38, 183, 327, 327, 327, + 550, 535, 518, 450, 451, 452, 104, 284, 340, 0, + 111, 457, 285, 456, 400, 530, 0, 0, 562, 400, + 0, 0, 468, 469, 0, 0, 0, 400, 0, 0, + 0, 0, 400, 482, 0, 0, 400, 400, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 396, 397, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 495, 0, 497, 0, 0, 499, 0, 0, 0, + 0, 0, 503, 504, 60, 61, 0, 83, 63, 64, + 65, 66, 67, 68, 69, 70, 0, 1, 0, 2, + 0, 0, 0, 0, 0, 23, 0, 0, 516, 517, + 0, 520, 521, 0, 0, 0, 525, 24, 25, 0, + 60, 61, 0, 71, 531, 26, 27, 28, 29, 30, + 31, 32, 0, 1, 33, 2, 540, 138, 0, 0, + 0, 0, 0, 0, 544, 0, 0, 0, 0, 0, + 139, 140, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 554, 0, 0, 0, 0, 558, + 0, 0, 0, 0, 0, 0, 0, 563, 0, 0, + 0, 0, 567, 0, 0, 0, 570, 571, 0, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 398, 0, 0, 0, 0, 0, 0, + 72, 73, 0, 0, 74, 0, 75, 204, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 0, 168, 169, 170, 171, 0, 172, 173, 174, + 0, 0, 120, 0, 0, 129, 0, 175, 0, 0, + 176, 0, 177, 0, 178, 60, 61, 0, 83, 84, + 85, 86, 87, 88, 89, 90, 70, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 388, + 389, 60, 61, 390, 71, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 2, 0, 391, 392, + 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 394, 395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 0, 0, 0, 0, 0, 60, - 61, 0, 90, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 0, 1, 0, 2, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 213, 180, 181, 182, 183, 0, 184, 185, - 186, 0, 0, 75, 0, 0, 0, 60, 61, 399, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 74, 0, 1, 0, 2, 60, 61, 0, - 90, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 0, 1, 0, 2, 0, 0, 0, - 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, - 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 75, 60, 61, 0, 90, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 0, 1, - 0, 2, 0, 0, 0, 0, 76, 0, 0, 77, - 0, 0, 78, 0, 79, 385, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 75, 0, 60, 61, - 0, 90, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 0, 1, 0, 2, 0, 0, - 0, 0, 0, 0, 76, 0, 0, 77, 0, 251, - 78, 483, 79, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 75, 0, 76, 0, 0, 77, 0, 0, - 78, 0, 79, 0, 60, 61, 0, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, - 0, 0, 77, 0, 0, 78, 0, 79, 75, 0, - 60, 61, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 74, 0, 1, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 76, 0, 0, 77, 0, - 0, 78, 0, 79, 75, 60, 61, 0, 90, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 0, 1, 0, 2, 60, 61, 0, 329, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 0, 1, 0, 2, 0, 0, 0, 0, 75, - 0, 76, 0, 0, 77, 0, 0, 78, 0, 79, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, + 0, 60, 61, 396, 83, 84, 85, 86, 87, 88, + 89, 90, 70, 0, 1, 0, 2, 0, 0, 0, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 0, 0, 0, 0, 0, 0, + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 72, 73, 0, 0, 74, 0, 75, 248, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 0, 168, 169, 170, 171, 0, 172, 173, + 174, 0, 0, 120, 0, 0, 129, 0, 0, 0, + 0, 397, 388, 389, 60, 61, 390, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 0, 391, 392, 393, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 394, 395, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 72, 73, 0, + 244, 74, 0, 75, 60, 61, 396, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 0, 1, 0, 2, + 0, 0, 0, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 0, 0, 0, + 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 0, 168, 169, 170, 171, + 0, 172, 173, 174, 388, 389, 0, 0, 390, 0, + 0, 0, 0, 0, 397, 0, 0, 0, 0, 0, + 0, 0, 0, 391, 392, 393, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 394, 395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, - 77, 0, 0, 78, 0, 79, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 396, 0, + 72, 73, 0, 0, 74, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 60, 61, + 0, 83, 63, 64, 65, 66, 67, 68, 69, 70, + 0, 1, 0, 2, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 294, 168, 169, + 170, 171, 0, 172, 173, 174, 0, 71, 0, 0, + 0, 0, 0, 0, 60, 61, 397, 83, 63, 64, + 65, 66, 67, 68, 69, 70, 0, 1, 0, 2, + 0, 60, 61, 0, 83, 63, 64, 65, 66, 67, + 68, 69, 70, 384, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 71, 0, 0, 0, 0, 60, 61, + 428, 83, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 1, 0, 2, 0, 60, 61, 0, 83, 84, + 85, 86, 87, 88, 89, 90, 70, 484, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 71, 0, 0, + 0, 0, 0, 0, 72, 73, 0, 0, 74, 0, + 75, 0, 0, 0, 71, 0, 60, 61, 0, 83, + 63, 64, 65, 66, 67, 68, 69, 70, 0, 1, + 0, 2, 0, 60, 61, 0, 187, 63, 64, 65, + 66, 67, 68, 69, 70, 0, 1, 0, 2, 0, + 72, 73, 0, 0, 74, 71, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 72, 73, 0, + 0, 74, 71, 75, 60, 61, 0, 330, 63, 64, + 65, 66, 67, 68, 69, 70, 0, 1, 0, 2, + 0, 0, 0, 0, 72, 73, 0, 0, 74, 0, + 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 72, 73, 71, 0, 74, 0, 75, 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, 265, 0, 0, 0, 0, - 0, 0, 76, 0, 0, 77, 0, 0, 78, 266, - 79, 0, 0, 0, 0, 0, 0, 0, 0, 267, - 268, 0, 76, 0, 0, 77, 0, 0, 78, 0, - 79, 0, 269, 270, 271, 272, 273, 274, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 275, 276, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 260, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 73, 261, 0, 74, 0, 75, 0, + 0, 0, 0, 0, 262, 263, 0, 0, 0, 72, + 73, 0, 0, 74, 0, 75, 0, 264, 265, 266, + 267, 268, 269, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 270, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 277, 278, 279, 0, 0, 280, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 281, 282, 181, 182, 183, 283, 284, 285, 286 + 72, 73, 0, 0, 74, 0, 75, 272, 273, 274, + 0, 0, 275, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 276, 277, 169, 170, 171, + 278, 279, 280, 281 }; static const short int yycheck[] = { - 23, 0, 271, 271, 114, 188, 189, 348, 4, 79, - 29, 23, 11, 46, 266, 48, 36, 269, 30, 10, - 11, 12, 13, 14, 15, 16, 17, 279, 216, 217, - 282, 283, 284, 285, 286, 15, 15, 289, 290, 5, - 6, 272, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 141, 22, 141, 24, 35, - 140, 292, 105, 149, 0, 135, 89, 151, 88, 139, - 10, 11, 12, 13, 14, 15, 16, 17, 58, 58, - 21, 143, 58, 49, 141, 22, 22, 24, 24, 25, - 152, 114, 33, 34, 151, 31, 32, 9, 53, 54, - 55, 42, 43, 44, 45, 46, 47, 48, 20, 141, - 51, 62, 364, 141, 27, 28, 52, 72, 0, 151, - 119, 149, 537, 59, 0, 544, 140, 63, 141, 135, - 545, 150, 551, 139, 147, 145, 324, 207, 208, 151, - 22, 211, 24, 25, 149, 24, 141, 152, 140, 31, - 32, 140, 147, 494, 150, 496, 147, 10, 11, 12, - 13, 14, 15, 16, 17, 417, 147, 419, 420, 421, - 52, 152, 140, 425, 33, 34, 142, 59, 140, 145, - 23, 63, 148, 4, 150, 151, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 199, 42, 43, 44, 56, 57, 47, 147, 65, 66, - 67, 68, 69, 70, 71, 24, 399, 27, 28, 3, - 4, 24, 474, 3, 4, 24, 246, 247, 248, 249, - 250, 4, 302, 143, 344, 3, 4, 4, 258, 259, - 260, 261, 143, 266, 3, 4, 269, 499, 500, 501, - 3, 4, 362, 7, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 537, 537, - 3, 4, 3, 4, 3, 4, 545, 545, 3, 4, - 3, 4, 4, 326, 116, 117, 306, 307, 331, 332, - 34, 35, 7, 313, 7, 146, 146, 143, 143, 143, - 343, 143, 325, 143, 24, 143, 143, 350, 143, 143, - 141, 141, 24, 149, 143, 358, 359, 144, 143, 143, - 60, 344, 345, 346, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 149, 141, 141, 141, 37, 362, - 363, 364, 24, 141, 141, 141, 141, 141, 371, 4, - 141, 141, 145, 373, 374, 375, 376, 380, 378, 379, - 141, 381, 141, 141, 407, 408, 409, 141, 37, 141, - 141, 141, 415, 64, 35, 141, 141, 24, 141, 20, - 144, 141, 144, 426, 427, 141, 141, 386, 145, 141, - 141, 141, 141, 141, 417, 418, 419, 420, 421, 144, - 141, 424, 425, 20, 141, 144, 144, 331, 332, 429, - 430, 454, 144, 456, 144, 143, 459, 141, 4, 343, - 141, 444, 465, 466, 141, 141, 350, 141, 58, 4, - 24, 141, 143, 58, 358, 359, 144, 144, 141, 141, - 144, 147, 20, 144, 144, 141, 489, 490, 471, 492, - 493, 474, 145, 37, 497, 475, 144, 477, 478, 144, - 147, 20, 505, 141, 20, 141, 77, 20, 491, 20, - 119, 445, 105, 275, 11, 276, 499, 500, 501, 444, - 48, 504, 525, 407, 408, 409, 51, 371, 504, 414, - -1, 415, -1, -1, 203, -1, -1, -1, 203, 542, - -1, -1, 426, 427, -1, 203, 203, -1, -1, 552, - -1, -1, -1, 556, -1, -1, -1, 560, 561, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5, 6, - 454, -1, 456, -1, -1, 459, -1, -1, -1, -1, - -1, 465, 466, -1, -1, 22, -1, 24, -1, 26, + 23, 0, 62, 199, 266, 176, 177, 343, 4, 25, + 209, 210, 11, 10, 11, 12, 13, 19, 10, 11, + 12, 13, 267, 83, 26, 12, 31, 36, 18, 12, + 20, 115, 116, 339, 48, 49, 50, 136, 136, 51, + 52, 93, 287, 136, 29, 30, 136, 264, 53, 148, + 148, 357, 75, 67, 138, 148, 146, 274, 135, 82, + 277, 278, 279, 280, 281, 136, 53, 284, 285, 57, + 53, 137, 81, 139, 140, 146, 0, 5, 6, 102, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, + 18, 0, 20, 9, 18, 135, 20, 21, 137, 135, + 16, 140, 125, 27, 28, 548, 135, 146, 107, 18, + 137, 20, 21, 140, 557, 142, 44, 136, 27, 28, + 41, 136, 43, 47, 135, 144, 325, 187, 188, 144, + 54, 147, 135, 137, 58, 18, 140, 20, 47, 20, + 144, 136, 359, 19, 139, 54, 148, 144, 138, 58, + 20, 147, 144, 37, 38, 39, 142, 137, 42, 495, + 140, 497, 137, 138, 360, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 23, 24, 4, 201, 202, + 203, 137, 138, 206, 140, 208, 10, 11, 12, 13, + 189, 60, 61, 62, 63, 64, 65, 66, 415, 20, + 417, 418, 419, 136, 137, 138, 423, 140, 20, 136, + 3, 4, 139, 141, 142, 432, 4, 145, 4, 147, + 148, 136, 137, 138, 136, 140, 397, 139, 3, 4, + 239, 240, 241, 242, 243, 295, 136, 7, 261, 139, + 137, 264, 251, 252, 253, 254, 3, 4, 7, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 3, 4, 3, 4, 4, 115, 116, + 330, 111, 112, 34, 35, 327, 7, 539, 138, 143, + 332, 333, 143, 500, 501, 502, 338, 549, 138, 138, + 20, 136, 138, 345, 138, 138, 138, 138, 307, 308, + 138, 353, 354, 326, 138, 314, 23, 24, 138, 20, + 146, 55, 138, 138, 136, 138, 339, 340, 341, 139, + 136, 139, 136, 136, 33, 385, 136, 146, 136, 136, + 136, 20, 4, 136, 357, 358, 359, 136, 136, 136, + 363, 136, 136, 33, 136, 136, 136, 136, 31, 59, + 20, 136, 139, 405, 406, 407, 379, 136, 142, 136, + 136, 413, 136, 372, 373, 374, 375, 136, 377, 378, + 136, 380, 424, 425, 139, 139, 136, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 139, 415, 416, 417, 418, 419, 139, 16, 422, + 423, 453, 16, 455, 138, 4, 458, 136, 136, 432, + 332, 333, 464, 465, 136, 136, 338, 136, 136, 139, + 443, 430, 431, 345, 136, 485, 139, 53, 4, 136, + 138, 353, 354, 136, 136, 139, 20, 142, 490, 491, + 139, 493, 494, 442, 139, 136, 498, 470, 53, 16, + 144, 33, 144, 16, 506, 136, 16, 136, 16, 72, + 16, 193, 271, 107, 363, 474, 518, 476, 477, 492, + 193, 444, 208, 125, 526, 11, 93, 500, 501, 502, + 540, 512, 505, 405, 406, 407, 48, 193, 270, -1, + 51, 413, 193, 412, 546, 505, -1, -1, 558, 551, + -1, -1, 424, 425, -1, -1, -1, 559, -1, -1, + -1, -1, 564, 512, -1, -1, 568, 569, 541, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 39, 40, -1, 489, 490, -1, 492, 493, - -1, -1, -1, 497, -1, -1, -1, -1, -1, 5, - 6, 505, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, -1, 22, -1, 24, -1, - -1, 525, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, -1, 542, -1, - -1, -1, -1, 49, -1, -1, -1, -1, 552, -1, - -1, -1, 556, -1, -1, -1, 560, 561, -1, -1, - -1, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, -1, 132, 133, 134, 135, -1, - 137, 138, 139, -1, -1, -1, -1, -1, 145, -1, - -1, 148, -1, 150, 5, 6, 153, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - -1, 22, -1, 24, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, -1, -1, -1, -1, 142, -1, 49, 145, - -1, -1, 148, -1, 150, 151, 22, -1, 24, -1, - 26, 27, 28, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 39, 40, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, + -1, 453, -1, 455, -1, -1, 458, -1, -1, -1, + -1, -1, 464, 465, 5, 6, -1, 8, 9, 10, + 11, 12, 13, 14, 15, 16, -1, 18, -1, 20, + -1, -1, -1, -1, -1, 17, -1, -1, 490, 491, + -1, 493, 494, -1, -1, -1, 498, 29, 30, -1, + 5, 6, -1, 44, 506, 37, 38, 39, 40, 41, + 42, 43, -1, 18, 46, 20, 518, 22, -1, -1, + -1, -1, -1, -1, 526, -1, -1, -1, -1, -1, + 35, 36, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 546, -1, -1, -1, -1, 551, + -1, -1, -1, -1, -1, -1, -1, 559, -1, -1, + -1, -1, 564, -1, -1, -1, 568, 569, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 142, -1, -1, 145, -1, -1, 148, -1, 150, - 151, -1, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, -1, 132, 133, 134, 135, - -1, 137, 138, 139, 3, 4, -1, -1, 7, -1, - -1, -1, 148, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 26, 27, 28, + 141, 142, -1, -1, 145, -1, 147, 148, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, -1, 127, 128, 129, 130, -1, 132, 133, 134, + -1, -1, 137, -1, -1, 140, -1, 142, -1, -1, + 145, -1, 147, -1, 149, 5, 6, -1, 8, 9, + 10, 11, 12, 13, 14, 15, 16, -1, 18, -1, + 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, + 4, 5, 6, 7, 44, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 18, -1, 20, -1, 22, 23, + 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 35, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5, 6, 57, 8, 9, 10, 11, 12, 13, + 14, 15, 16, -1, 18, -1, 20, -1, -1, -1, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, -1, -1, -1, -1, -1, + 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 141, 142, -1, -1, 145, -1, 147, 148, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, -1, 127, 128, 129, 130, -1, 132, 133, + 134, -1, -1, 137, -1, -1, 140, -1, -1, -1, + -1, 145, 3, 4, 5, 6, 7, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, -1, 20, + -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 35, 36, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 141, 142, -1, + 144, 145, -1, 147, 5, 6, 57, 8, 9, 10, + 11, 12, 13, 14, 15, 16, -1, 18, -1, 20, + -1, -1, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, -1, -1, + -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 62, -1, -1, -1, -1, -1, -1, + -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, + -1, 132, 133, 134, 3, 4, -1, -1, 7, -1, + -1, -1, -1, -1, 145, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 35, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, -1, -1, -1, -1, -1, 5, - 6, -1, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, -1, 22, -1, 24, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 38, 132, 133, 134, 135, -1, 137, 138, - 139, -1, -1, 49, -1, -1, -1, 5, 6, 148, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, -1, 22, -1, 24, 5, 6, -1, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, -1, 22, -1, 24, -1, -1, -1, - -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, - 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 49, 5, 6, -1, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, -1, 22, - -1, 24, -1, -1, -1, -1, 142, -1, -1, 145, - -1, -1, 148, -1, 150, 38, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 49, -1, 5, 6, + -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, + 141, 142, -1, -1, 145, -1, 147, -1, -1, -1, + -1, -1, -1, -1, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5, 6, -1, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, -1, 22, -1, 24, -1, -1, - -1, -1, -1, -1, 142, -1, -1, 145, -1, 147, - 148, 38, 150, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 49, -1, 142, -1, -1, 145, -1, -1, - 148, -1, 150, -1, 5, 6, -1, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - -1, 22, -1, 24, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 142, - -1, -1, 145, -1, -1, 148, -1, 150, 49, -1, - 5, 6, -1, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, -1, 22, -1, 24, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 142, -1, -1, 145, -1, - -1, 148, -1, 150, 49, 5, 6, -1, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, -1, 22, -1, 24, 5, 6, -1, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, -1, 22, -1, 24, -1, -1, -1, -1, 49, - -1, 142, -1, -1, 145, -1, -1, 148, -1, 150, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, - -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, 142, -1, -1, - 145, -1, -1, 148, -1, 150, -1, -1, -1, -1, + -1, 18, -1, 20, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 34, 127, 128, + 129, 130, -1, 132, 133, 134, -1, 44, -1, -1, + -1, -1, -1, -1, 5, 6, 145, 8, 9, 10, + 11, 12, 13, 14, 15, 16, -1, 18, -1, 20, + -1, 5, 6, -1, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 34, 18, -1, 20, -1, -1, -1, + -1, -1, -1, 44, -1, -1, -1, -1, 5, 6, + 34, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 44, 18, -1, 20, -1, 5, 6, -1, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 34, 18, -1, + 20, -1, -1, -1, -1, -1, -1, 44, -1, -1, + -1, -1, -1, -1, 141, 142, -1, -1, 145, -1, + 147, -1, -1, -1, 44, -1, 5, 6, -1, 8, + 9, 10, 11, 12, 13, 14, 15, 16, -1, 18, + -1, 20, -1, 5, 6, -1, 8, 9, 10, 11, + 12, 13, 14, 15, 16, -1, 18, -1, 20, -1, + 141, 142, -1, -1, 145, 44, 147, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 141, 142, -1, + -1, 145, 44, 147, 5, 6, -1, 8, 9, 10, + 11, 12, 13, 14, 15, 16, -1, 18, -1, 20, + -1, -1, -1, -1, 141, 142, -1, -1, 145, -1, + 147, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 141, 142, 44, -1, 145, -1, 147, -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, 36, -1, -1, -1, -1, - -1, -1, 142, -1, -1, 145, -1, -1, 148, 50, - 150, -1, -1, -1, -1, -1, -1, -1, -1, 60, - 61, -1, 142, -1, -1, 145, -1, -1, 148, -1, - 150, -1, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 141, 142, 45, -1, 145, -1, 147, -1, + -1, -1, -1, -1, 55, 56, -1, -1, -1, 141, + 142, -1, -1, 145, -1, 147, -1, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 113, 114, 115, -1, -1, 118, 119, 120, + 141, 142, -1, -1, 145, -1, 147, 108, 109, 110, + -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139 + 131, 132, 133, 134 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const unsigned char yystos[] = { - 0, 22, 24, 25, 31, 32, 52, 59, 63, 166, - 189, 190, 191, 202, 193, 192, 53, 54, 55, 72, - 199, 140, 62, 21, 33, 34, 42, 43, 44, 45, - 46, 47, 48, 51, 167, 168, 188, 0, 191, 140, - 46, 48, 169, 212, 42, 43, 44, 47, 170, 209, - 211, 218, 140, 140, 140, 140, 145, 200, 24, 197, + 0, 18, 20, 21, 27, 28, 47, 54, 58, 160, + 186, 187, 188, 199, 190, 189, 48, 49, 50, 67, + 196, 135, 57, 17, 29, 30, 37, 38, 39, 40, + 41, 42, 43, 46, 161, 162, 185, 0, 188, 135, + 41, 43, 163, 208, 37, 38, 39, 42, 164, 205, + 207, 214, 135, 135, 135, 135, 142, 197, 20, 194, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 49, 142, 145, 148, 150, - 155, 178, 179, 180, 181, 182, 202, 215, 188, 188, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 162, 163, 165, 180, 185, 65, 66, 67, - 68, 69, 70, 71, 171, 207, 207, 23, 219, 220, - 30, 151, 210, 219, 24, 56, 57, 198, 4, 24, - 24, 201, 4, 4, 4, 150, 151, 182, 183, 143, - 152, 185, 180, 27, 28, 3, 4, 3, 4, 7, - 26, 39, 40, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 132, 133, 134, 135, 137, 138, 139, 145, 148, 150, - 153, 156, 157, 158, 159, 186, 215, 194, 4, 178, - 29, 150, 208, 166, 223, 141, 147, 146, 146, 151, - 183, 141, 151, 38, 183, 184, 195, 196, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 160, 27, - 28, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 161, 143, 143, 143, 143, - 143, 147, 185, 187, 187, 151, 187, 24, 143, 143, - 143, 143, 141, 176, 202, 36, 50, 60, 61, 73, - 74, 75, 76, 77, 78, 91, 92, 113, 114, 115, - 118, 131, 132, 136, 137, 138, 139, 156, 157, 158, - 159, 221, 227, 228, 230, 231, 24, 182, 182, 149, - 151, 182, 141, 144, 176, 176, 143, 143, 185, 185, - 185, 185, 185, 141, 147, 149, 151, 185, 185, 185, - 185, 35, 58, 174, 177, 143, 180, 217, 60, 8, - 217, 9, 20, 10, 11, 12, 13, 14, 15, 16, - 17, 162, 163, 164, 171, 160, 161, 180, 180, 217, - 180, 180, 224, 217, 217, 217, 217, 217, 180, 180, - 217, 217, 171, 116, 117, 147, 149, 149, 38, 185, - 185, 141, 229, 141, 141, 141, 141, 185, 141, 141, - 37, 141, 24, 4, 176, 38, 180, 204, 205, 206, - 3, 4, 7, 26, 27, 28, 39, 40, 62, 148, - 186, 214, 215, 216, 216, 216, 216, 178, 180, 180, - 141, 173, 141, 173, 216, 145, 141, 141, 141, 141, - 141, 141, 216, 216, 37, 141, 178, 180, 217, 141, - 141, 217, 225, 144, 185, 185, 185, 185, 185, 185, - 180, 185, 202, 203, 141, 144, 64, 213, 187, 141, - 141, 216, 216, 216, 15, 58, 15, 229, 216, 145, - 217, 180, 217, 217, 217, 141, 141, 180, 217, 216, - 216, 141, 185, 185, 141, 141, 144, 141, 141, 144, - 144, 144, 144, 38, 204, 174, 175, 24, 149, 20, - 20, 143, 141, 141, 216, 4, 216, 141, 216, 141, - 141, 141, 216, 216, 143, 180, 144, 144, 217, 185, - 185, 185, 58, 172, 141, 216, 216, 225, 226, 216, - 216, 141, 173, 173, 216, 141, 217, 217, 217, 226, - 216, 144, 144, 144, 4, 24, 141, 145, 144, 147, - 216, 144, 20, 147, 164, 222, 37, 147, 216, 214, - 147, 164, 20, 141, 214, 216, 20, 141, 77, 216, - 20, 20, 216, 216 + 16, 44, 141, 142, 145, 147, 151, 175, 176, 199, + 211, 185, 185, 8, 9, 10, 11, 12, 13, 14, + 15, 158, 159, 176, 182, 60, 61, 62, 63, 64, + 65, 66, 165, 203, 203, 19, 215, 216, 26, 148, + 206, 215, 20, 51, 52, 195, 4, 20, 20, 198, + 137, 168, 4, 4, 4, 147, 148, 176, 181, 140, + 168, 182, 176, 23, 24, 3, 4, 7, 22, 35, + 36, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, + 129, 130, 132, 133, 134, 142, 145, 147, 149, 152, + 153, 154, 155, 183, 211, 191, 4, 8, 176, 178, + 25, 147, 204, 160, 219, 136, 144, 115, 116, 138, + 166, 138, 143, 143, 148, 181, 136, 148, 138, 192, + 193, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 156, 23, 24, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 157, 138, + 138, 138, 138, 138, 144, 182, 184, 184, 148, 184, + 20, 138, 138, 138, 138, 136, 173, 168, 168, 199, + 32, 45, 55, 56, 68, 69, 70, 71, 72, 73, + 86, 87, 108, 109, 110, 113, 126, 127, 131, 132, + 133, 134, 152, 153, 154, 155, 217, 223, 224, 225, + 226, 20, 166, 167, 34, 176, 177, 179, 180, 176, + 176, 146, 148, 176, 180, 173, 173, 138, 138, 182, + 182, 182, 182, 182, 136, 144, 146, 148, 182, 182, + 182, 182, 31, 53, 171, 174, 138, 176, 213, 55, + 8, 213, 9, 16, 10, 11, 12, 13, 158, 165, + 156, 157, 176, 176, 213, 176, 176, 220, 213, 213, + 213, 213, 213, 176, 176, 213, 213, 165, 111, 112, + 136, 139, 168, 136, 139, 144, 146, 146, 139, 182, + 182, 222, 136, 136, 136, 136, 182, 136, 136, 33, + 136, 20, 4, 173, 34, 176, 201, 202, 3, 4, + 7, 22, 23, 24, 35, 36, 57, 145, 183, 210, + 211, 212, 212, 212, 212, 178, 176, 176, 136, 170, + 136, 170, 212, 142, 136, 136, 136, 136, 136, 136, + 212, 212, 33, 136, 178, 176, 213, 166, 34, 177, + 136, 136, 136, 139, 182, 182, 182, 182, 182, 182, + 176, 182, 168, 136, 139, 59, 209, 184, 136, 136, + 212, 212, 212, 12, 53, 12, 222, 212, 142, 213, + 176, 213, 213, 213, 136, 136, 176, 213, 212, 212, + 136, 182, 182, 213, 136, 139, 136, 136, 139, 139, + 139, 139, 199, 200, 34, 176, 171, 172, 20, 146, + 16, 16, 138, 136, 136, 212, 4, 212, 136, 212, + 136, 136, 136, 212, 212, 138, 176, 139, 139, 182, + 182, 182, 168, 53, 169, 136, 212, 212, 176, 221, + 212, 212, 136, 170, 170, 212, 136, 213, 213, 213, + 221, 212, 139, 139, 139, 200, 4, 20, 136, 142, + 212, 136, 139, 144, 212, 139, 16, 144, 158, 218, + 168, 176, 33, 144, 212, 210, 144, 158, 212, 16, + 136, 210, 168, 212, 16, 136, 72, 212, 16, 16, + 212, 212 }; #define yyerrok (yyerrstatus = 0) @@ -2978,7 +2964,7 @@ yyreduce: switch (yyn) { case 3: -#line 990 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 984 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range! GEN_ERROR("Value too large for type!"); @@ -2988,283 +2974,320 @@ yyreduce: break; case 31: -#line 1006 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1000 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;} break; case 32: -#line 1006 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1000 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;} break; case 33: -#line 1007 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1001 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;} break; case 34: -#line 1007 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1001 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;} break; case 35: -#line 1008 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1002 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;} break; case 36: -#line 1008 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1002 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;} break; case 37: -#line 1009 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1003 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;} break; case 38: -#line 1009 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1003 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;} break; case 39: -#line 1010 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1004 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;} break; case 40: -#line 1010 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1004 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;} break; case 41: -#line 1014 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1008 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;} break; case 42: -#line 1014 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1008 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;} break; case 43: -#line 1015 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1009 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;} break; case 44: -#line 1015 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1009 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;} break; case 45: -#line 1016 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1010 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;} break; case 46: -#line 1016 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1010 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;} break; case 47: -#line 1017 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1011 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;} break; case 48: -#line 1017 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1011 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;} break; case 49: -#line 1018 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1012 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;} break; case 50: -#line 1018 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1012 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;} break; case 51: -#line 1019 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1013 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;} break; case 52: -#line 1019 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1013 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;} break; case 53: -#line 1020 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1014 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;} break; case 54: -#line 1020 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1014 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;} break; case 55: -#line 1021 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1015 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;} break; case 56: -#line 1022 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1016 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;} break; - case 69: -#line 1033 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 63: +#line 1025 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[-1].StrVal); CHECK_FOR_ERROR ;} break; - case 70: -#line 1037 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 64: +#line 1029 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; CHECK_FOR_ERROR ;} break; - case 71: -#line 1043 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 65: +#line 1035 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; - case 72: -#line 1044 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 66: +#line 1036 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; - case 73: -#line 1045 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 67: +#line 1037 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; - case 74: -#line 1046 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 68: +#line 1038 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;} break; - case 75: -#line 1047 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 69: +#line 1039 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; - case 76: -#line 1051 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 70: +#line 1043 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; - case 77: -#line 1052 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 71: +#line 1044 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; - case 78: -#line 1053 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 72: +#line 1045 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} + break; + + case 73: +#line 1049 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} + break; + + case 74: +#line 1050 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} + break; + + case 75: +#line 1051 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} + break; + + case 76: +#line 1055 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; + case 77: +#line 1056 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} + break; + + case 78: +#line 1057 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} + break; + case 79: -#line 1057 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { /*default*/ ;} +#line 1058 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 80: -#line 1058 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { CurFun.Linkage = GlobalValue::DLLImportLinkage; ;} +#line 1059 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; case 81: -#line 1059 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { CurFun.Linkage = GlobalValue::ExternalWeakLinkage; ;} +#line 1062 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::C; ;} break; case 82: -#line 1063 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} +#line 1063 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::C; ;} break; case 83: -#line 1064 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} +#line 1064 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::CSRet; ;} break; case 84: -#line 1065 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} +#line 1065 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::Fast; ;} break; case 85: -#line 1066 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} +#line 1066 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::Cold; ;} break; case 86: -#line 1067 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} +#line 1067 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::X86_StdCall; ;} break; case 87: -#line 1070 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.UIntVal) = CallingConv::C; ;} +#line 1068 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::X86_FastCall; ;} break; case 88: -#line 1071 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.UIntVal) = CallingConv::C; ;} +#line 1069 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { + if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val)) + GEN_ERROR("Calling conv too large!"); + (yyval.UIntVal) = (yyvsp[0].UInt64Val); + CHECK_FOR_ERROR + ;} break; case 89: -#line 1072 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.UIntVal) = CallingConv::CSRet; ;} +#line 1076 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = FunctionType::ZExtAttribute; ;} break; case 90: -#line 1073 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.UIntVal) = CallingConv::Fast; ;} +#line 1077 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = FunctionType::SExtAttribute; ;} break; case 91: -#line 1074 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.UIntVal) = CallingConv::Cold; ;} +#line 1080 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = (yyvsp[0].ParamAttrs); ;} break; case 92: -#line 1075 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.UIntVal) = CallingConv::X86_StdCall; ;} +#line 1081 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-2].ParamAttrs) | (yyvsp[0].ParamAttrs)); + ;} break; case 93: -#line 1076 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.UIntVal) = CallingConv::X86_FastCall; ;} +#line 1086 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;} break; case 94: -#line 1077 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { - if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val)) - GEN_ERROR("Calling conv too large!"); - (yyval.UIntVal) = (yyvsp[0].UInt64Val); - CHECK_FOR_ERROR - ;} +#line 1087 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = (yyvsp[0].ParamAttrs); ;} break; case 95: -#line 1086 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.UIntVal) = 0; ;} +#line 1088 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = (yyvsp[-1].ParamAttrs); ;} break; case 96: -#line 1087 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 1093 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = 0; ;} + break; + + case 97: +#line 1094 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3273,13 +3296,13 @@ yyreduce: ;} break; - case 97: -#line 1093 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 98: +#line 1100 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = 0; ;} break; - case 98: -#line 1094 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 99: +#line 1101 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3288,8 +3311,8 @@ yyreduce: ;} break; - case 99: -#line 1102 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 100: +#line 1109 "/proj/llvm/llvm-3/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] == '\\') @@ -3299,28 +3322,28 @@ yyreduce: ;} break; - case 100: -#line 1110 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 101: +#line 1117 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; - case 101: -#line 1111 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 102: +#line 1118 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[0].StrVal); ;} break; - case 102: -#line 1116 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 103: +#line 1123 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" {;} break; - case 103: -#line 1117 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 104: +#line 1124 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" {;} break; - case 104: -#line 1118 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 105: +#line 1125 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurGV->setSection((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -3328,8 +3351,8 @@ yyreduce: ;} break; - case 105: -#line 1123 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 106: +#line 1130 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val))) GEN_ERROR("Alignment must be a power of two!"); @@ -3338,53 +3361,44 @@ yyreduce: ;} break; - case 107: -#line 1137 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); ;} - break; - - case 109: -#line 1138 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); ;} - break; - - case 110: -#line 1140 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 115: +#line 1146 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); - (yyval.TypeVal) = (yyvsp[0].TypeVal); + (yyval.TypeVal) = new PATypeHolder(OpaqueType::get()); CHECK_FOR_ERROR ;} break; - case 123: -#line 1152 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 116: +#line 1150 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - (yyval.TypeVal) = new PATypeHolder(OpaqueType::get()); + (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); CHECK_FOR_ERROR ;} break; - case 124: -#line 1156 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { - (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); + case 117: +#line 1154 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { // Pointer type? + if (*(yyvsp[-1].TypeVal) == 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); CHECK_FOR_ERROR ;} break; - case 125: -#line 1160 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 118: +#line 1161 "/proj/llvm/llvm-3/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); -;} + const Type* tmp = getTypeVal((yyvsp[0].ValIDVal)); + CHECK_FOR_ERROR + (yyval.TypeVal) = new PATypeHolder(tmp); + ;} break; - case 126: -#line 1168 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 119: +#line 1166 "/proj/llvm/llvm-3/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 @@ -3395,25 +3409,51 @@ yyreduce: ;} break; - case 127: -#line 1176 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { // Function derived type? + case 120: +#line 1174 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { std::vector Params; - for (std::list::iterator I = (yyvsp[-1].TypeList)->begin(), - E = (yyvsp[-1].TypeList)->end(); I != E; ++I) - Params.push_back(*I); + std::vector Attrs; + Attrs.push_back((yyvsp[-3].ParamAttrs)); + for (TypeWithAttrsList::iterator I=(yyvsp[-1].TypeWithAttrsList)->begin(), E=(yyvsp[-1].TypeWithAttrsList)->end(); I != E; ++I) { + Params.push_back(I->Ty->get()); + if (I->Ty->get() != Type::VoidTy) + Attrs.push_back(I->Attrs); + } 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))); - delete (yyvsp[-1].TypeList); // Delete the argument list - delete (yyvsp[-3].TypeVal); // Delete the return type handle + FunctionType *FT = FunctionType::get(*(yyvsp[-4].TypeVal), Params, isVarArg, Attrs); + delete (yyvsp[-1].TypeWithAttrsList); // Delete the argument list + delete (yyvsp[-4].TypeVal); // Delete the return type handle + (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT)); CHECK_FOR_ERROR ;} break; - case 128: -#line 1189 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 121: +#line 1192 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { + std::vector Params; + std::vector Attrs; + Attrs.push_back((yyvsp[-3].ParamAttrs)); + for (TypeWithAttrsList::iterator I=(yyvsp[-1].TypeWithAttrsList)->begin(), E=(yyvsp[-1].TypeWithAttrsList)->end(); I != E; ++I) { + Params.push_back(I->Ty->get()); + if (I->Ty->get() != Type::VoidTy) + Attrs.push_back(I->Attrs); + } + bool isVarArg = Params.size() && Params.back() == Type::VoidTy; + if (isVarArg) Params.pop_back(); + + FunctionType *FT = FunctionType::get((yyvsp[-4].PrimType), Params, isVarArg, Attrs); + delete (yyvsp[-1].TypeWithAttrsList); // Delete the argument list + (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT)); + CHECK_FOR_ERROR + ;} + break; + + case 122: +#line 1210 "/proj/llvm/llvm-3/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); @@ -3421,8 +3461,8 @@ yyreduce: ;} break; - case 129: -#line 1194 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 123: +#line 1215 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Packed array type? const llvm::Type* ElemTy = (yyvsp[-1].TypeVal)->get(); if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val)) @@ -3437,8 +3477,8 @@ yyreduce: ;} break; - case 130: -#line 1206 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 124: +#line 1227 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Structure type? std::vector Elements; for (std::list::iterator I = (yyvsp[-1].TypeList)->begin(), @@ -3451,16 +3491,16 @@ yyreduce: ;} break; - case 131: -#line 1216 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 125: +#line 1237 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Empty structure type? (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector())); CHECK_FOR_ERROR ;} break; - case 132: -#line 1220 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 126: +#line 1241 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { std::vector Elements; for (std::list::iterator I = (yyvsp[-2].TypeList)->begin(), @@ -3473,69 +3513,111 @@ yyreduce: ;} break; - case 133: -#line 1230 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 127: +#line 1251 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Empty structure type? (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector(), true)); CHECK_FOR_ERROR ;} break; - case 134: -#line 1234 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { // Pointer type? - if (*(yyvsp[-1].TypeVal) == 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); + case 128: +#line 1258 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeWithAttrs).Ty = (yyvsp[-1].TypeVal); + (yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs); + ;} + break; + + case 129: +#line 1265 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + if (!(*(yyvsp[-1].TypeVal))->isFirstClassType()) + GEN_ERROR("LLVM functions cannot return aggregate types!"); + (yyval.TypeWithAttrs).Ty = (yyvsp[-1].TypeVal); + (yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs); + ;} + break; + + case 130: +#line 1273 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeWithAttrs).Ty = new PATypeHolder(Type::VoidTy); + (yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs); + ;} + break; + + case 131: +#line 1279 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); + (yyval.TypeWithAttrsList)->push_back((yyvsp[0].TypeWithAttrs)); CHECK_FOR_ERROR ;} break; - case 135: -#line 1245 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 132: +#line 1284 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - (yyval.TypeList) = new std::list(); - (yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); + ((yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList))->push_back((yyvsp[0].TypeWithAttrs)); CHECK_FOR_ERROR ;} break; - case 136: -#line 1250 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 134: +#line 1292 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); + (yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList); + TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; + TWA.Ty = new PATypeHolder(Type::VoidTy); + (yyval.TypeWithAttrsList)->push_back(TWA); CHECK_FOR_ERROR ;} break; - case 138: -#line 1257 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 135: +#line 1299 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(Type::VoidTy); + (yyval.TypeWithAttrsList) = new TypeWithAttrsList; + TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; + TWA.Ty = new PATypeHolder(Type::VoidTy); + (yyval.TypeWithAttrsList)->push_back(TWA); CHECK_FOR_ERROR ;} break; - case 139: -#line 1261 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 136: +#line 1306 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - ((yyval.TypeList) = new std::list())->push_back(Type::VoidTy); + (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); CHECK_FOR_ERROR ;} break; - case 140: -#line 1265 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 137: +#line 1314 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeList) = new std::list(); + (yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); CHECK_FOR_ERROR ;} break; - case 141: -#line 1276 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 138: +#line 1319 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { + ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); + CHECK_FOR_ERROR + ;} + break; + + case 139: +#line 1330 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); const ArrayType *ATy = dyn_cast((yyvsp[-3].TypeVal)->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + @@ -3563,9 +3645,11 @@ yyreduce: ;} break; - case 142: -#line 1302 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 140: +#line 1358 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); const ArrayType *ATy = dyn_cast((yyvsp[-2].TypeVal)->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + @@ -3581,9 +3665,11 @@ yyreduce: ;} break; - case 143: -#line 1316 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 141: +#line 1374 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); const ArrayType *ATy = dyn_cast((yyvsp[-2].TypeVal)->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + @@ -3597,13 +3683,10 @@ yyreduce: itostr((int)(EndStr-(yyvsp[0].StrVal))) + " when array has size " + itostr(NumElements) + "!"); std::vector Vals; - if (ETy == Type::SByteTy) { - for (signed char *C = (signed char *)(yyvsp[0].StrVal); C != (signed char *)EndStr; ++C) - Vals.push_back(ConstantInt::get(ETy, *C)); - } else if (ETy == Type::UByteTy) { + if (ETy == Type::Int8Ty) { for (unsigned char *C = (unsigned char *)(yyvsp[0].StrVal); - C != (unsigned char*)EndStr; ++C) - Vals.push_back(ConstantInt::get(ETy, *C)); + C != (unsigned char*)EndStr; ++C) + Vals.push_back(ConstantInt::get(ETy, *C)); } else { free((yyvsp[0].StrVal)); GEN_ERROR("Cannot build string arrays of non byte sized elements!"); @@ -3615,9 +3698,11 @@ yyreduce: ;} break; - case 144: -#line 1346 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 142: +#line 1403 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); const PackedType *PTy = dyn_cast((yyvsp[-3].TypeVal)->get()); if (PTy == 0) GEN_ERROR("Cannot make packed constant with type: '" + @@ -3645,8 +3730,8 @@ yyreduce: ;} break; - case 145: -#line 1372 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 143: +#line 1431 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { const StructType *STy = dyn_cast((yyvsp[-3].TypeVal)->get()); if (STy == 0) @@ -3670,9 +3755,11 @@ yyreduce: ;} break; - case 146: -#line 1393 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 144: +#line 1452 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); const StructType *STy = dyn_cast((yyvsp[-2].TypeVal)->get()); if (STy == 0) GEN_ERROR("Cannot make struct constant with type: '" + @@ -3687,9 +3774,11 @@ yyreduce: ;} break; - case 147: -#line 1406 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 145: +#line 1467 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); const PointerType *PTy = dyn_cast((yyvsp[-1].TypeVal)->get()); if (PTy == 0) GEN_ERROR("Cannot make null pointer constant with type: '" + @@ -3701,18 +3790,22 @@ yyreduce: ;} break; - case 148: -#line 1416 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 146: +#line 1479 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); (yyval.ConstVal) = UndefValue::get((yyvsp[-1].TypeVal)->get()); delete (yyvsp[-1].TypeVal); CHECK_FOR_ERROR ;} break; - case 149: -#line 1421 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 147: +#line 1486 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); const PointerType *Ty = dyn_cast((yyvsp[-1].TypeVal)->get()); if (Ty == 0) GEN_ERROR("Global const reference must be a pointer type!"); @@ -3775,9 +3868,11 @@ yyreduce: ;} break; - case 150: -#line 1482 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 148: +#line 1549 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); if ((yyvsp[-1].TypeVal)->get() != (yyvsp[0].ConstVal)->getType()) GEN_ERROR("Mismatched types for constant expression!"); (yyval.ConstVal) = (yyvsp[0].ConstVal); @@ -3786,9 +3881,11 @@ yyreduce: ;} break; - case 151: -#line 1489 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 149: +#line 1558 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); const Type *Ty = (yyvsp[-1].TypeVal)->get(); if (isa(Ty) || Ty == Type::LabelTy || isa(Ty)) GEN_ERROR("Cannot create a null initialized value of this type!"); @@ -3798,8 +3895,8 @@ yyreduce: ;} break; - case 152: -#line 1497 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 150: +#line 1568 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); @@ -3808,8 +3905,8 @@ yyreduce: ;} break; - case 153: -#line 1503 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 151: +#line 1574 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); @@ -3818,44 +3915,24 @@ yyreduce: ;} break; - case 154: -#line 1509 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { // integral constants - if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val))) - GEN_ERROR("Constant value doesn't fit in type!"); - (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val)); - CHECK_FOR_ERROR - ;} - break; - - case 155: -#line 1515 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { - if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val))) - GEN_ERROR("Constant value doesn't fit in type!"); - (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val)); - CHECK_FOR_ERROR - ;} - break; - - case 156: -#line 1521 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 152: +#line 1580 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Boolean constants (yyval.ConstVal) = ConstantBool::getTrue(); CHECK_FOR_ERROR ;} break; - case 157: -#line 1525 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 153: +#line 1584 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Boolean constants (yyval.ConstVal) = ConstantBool::getFalse(); CHECK_FOR_ERROR ;} break; - case 158: -#line 1529 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 154: +#line 1588 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Float & Double constants if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal))) GEN_ERROR("Floating point constant invalid for type!!"); @@ -3864,9 +3941,11 @@ yyreduce: ;} break; - case 159: -#line 1537 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 155: +#line 1596 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); Constant *Val = (yyvsp[-3].ConstVal); const Type *Ty = (yyvsp[-1].TypeVal)->get(); if (!Val->getType()->isFirstClassType()) @@ -3880,8 +3959,8 @@ yyreduce: ;} break; - case 160: -#line 1549 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 156: +#line 1610 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!isa((yyvsp[-2].ConstVal)->getType())) GEN_ERROR("GetElementPtr requires a pointer operand!"); @@ -3905,8 +3984,8 @@ yyreduce: ;} break; - case 161: -#line 1570 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 157: +#line 1631 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-5].ConstVal)->getType() != Type::BoolTy) GEN_ERROR("Select condition must be of boolean type!"); @@ -3917,8 +3996,8 @@ yyreduce: ;} break; - case 162: -#line 1578 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 158: +#line 1639 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Binary operator types must match!"); @@ -3927,8 +4006,8 @@ yyreduce: ;} break; - case 163: -#line 1584 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 159: +#line 1645 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Logical operator types must match!"); @@ -3942,8 +4021,8 @@ yyreduce: ;} break; - case 164: -#line 1595 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 160: +#line 1656 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("icmp operand types must match!"); @@ -3951,8 +4030,8 @@ yyreduce: ;} break; - case 165: -#line 1600 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 161: +#line 1661 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("fcmp operand types must match!"); @@ -3960,11 +4039,11 @@ yyreduce: ;} break; - case 166: -#line 1605 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 162: +#line 1666 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - if ((yyvsp[-1].ConstVal)->getType() != Type::UByteTy) - GEN_ERROR("Shift count for shift constant must be unsigned byte!"); + if ((yyvsp[-1].ConstVal)->getType() != Type::Int8Ty) + GEN_ERROR("Shift count for shift constant must be i8 type!"); if (!(yyvsp[-3].ConstVal)->getType()->isInteger()) GEN_ERROR("Shift constant expression requires integer operand!"); CHECK_FOR_ERROR; @@ -3973,8 +4052,8 @@ yyreduce: ;} break; - case 167: -#line 1614 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 163: +#line 1675 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid extractelement operands!"); @@ -3983,8 +4062,8 @@ yyreduce: ;} break; - case 168: -#line 1620 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 164: +#line 1681 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid insertelement operands!"); @@ -3993,8 +4072,8 @@ yyreduce: ;} break; - case 169: -#line 1626 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 165: +#line 1687 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid shufflevector operands!"); @@ -4003,16 +4082,16 @@ yyreduce: ;} break; - case 170: -#line 1635 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 166: +#line 1696 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal)); CHECK_FOR_ERROR ;} break; - case 171: -#line 1639 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 167: +#line 1700 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ConstVector) = new std::vector(); (yyval.ConstVector)->push_back((yyvsp[0].ConstVal)); @@ -4020,18 +4099,18 @@ yyreduce: ;} break; - case 172: -#line 1647 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 168: +#line 1708 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; ;} break; - case 173: -#line 1647 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 169: +#line 1708 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; ;} break; - case 174: -#line 1658 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 170: +#line 1719 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -4039,8 +4118,8 @@ yyreduce: ;} break; - case 175: -#line 1663 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 171: +#line 1724 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -4048,40 +4127,40 @@ yyreduce: ;} break; - case 178: -#line 1676 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 174: +#line 1737 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = false ;} break; - case 179: -#line 1676 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 175: +#line 1737 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurFun.FunctionDone(); CHECK_FOR_ERROR ;} break; - case 180: -#line 1680 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 176: +#line 1741 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = true; ;} break; - case 181: -#line 1680 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 177: +#line 1741 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 182: -#line 1683 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 178: +#line 1744 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 183: -#line 1686 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 179: +#line 1747 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Emit an error if there are any unresolved types left. if (!CurModule.LateResolveTypes.empty()) { @@ -4096,9 +4175,11 @@ yyreduce: ;} break; - case 184: -#line 1698 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 180: +#line 1759 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); // Eagerly resolve types. This is not an optimization, this is a // requirement that is due to the fact that we could have this: // @@ -4122,8 +4203,23 @@ yyreduce: ;} break; - case 185: -#line 1720 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 181: +#line 1783 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { + ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].PrimType)); + + if (!setTypeName((yyvsp[0].PrimType), (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].PrimType)); + } + CHECK_FOR_ERROR + ;} + break; + + case 182: +#line 1794 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { /* "Externally Visible" Linkage */ if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!"); @@ -4133,15 +4229,15 @@ yyreduce: ;} break; - case 186: -#line 1726 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 183: +#line 1800 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ;} break; - case 187: -#line 1729 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 184: +#line 1803 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!"); @@ -4150,46 +4246,48 @@ yyreduce: ;} break; - case 188: -#line 1734 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 185: +#line 1808 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ;} break; - case 189: -#line 1737 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 186: +#line 1811 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), (yyvsp[-2].Linkage), (yyvsp[-1].BoolVal), *(yyvsp[0].TypeVal), 0); CHECK_FOR_ERROR delete (yyvsp[0].TypeVal); ;} break; - case 190: -#line 1741 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 187: +#line 1817 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; CHECK_FOR_ERROR ;} break; - case 191: -#line 1745 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 188: +#line 1821 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 192: -#line 1748 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 189: +#line 1824 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 193: -#line 1754 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 190: +#line 1830 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true); @@ -4204,26 +4302,26 @@ yyreduce: ;} break; - case 194: -#line 1767 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 191: +#line 1843 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Endianness) = Module::BigEndian; ;} break; - case 195: -#line 1768 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 192: +#line 1844 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Endianness) = Module::LittleEndian; ;} break; - case 196: -#line 1770 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 193: +#line 1846 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setEndianness((yyvsp[0].Endianness)); CHECK_FOR_ERROR ;} break; - case 197: -#line 1774 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 194: +#line 1850 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UInt64Val) == 32) CurModule.CurrentModule->setPointerSize(Module::Pointer32); @@ -4235,24 +4333,24 @@ yyreduce: ;} break; - case 198: -#line 1783 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 195: +#line 1859 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); ;} break; - case 199: -#line 1787 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 196: +#line 1863 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); ;} break; - case 201: -#line 1794 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 198: +#line 1870 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4260,8 +4358,8 @@ yyreduce: ;} break; - case 202: -#line 1799 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 199: +#line 1875 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4269,106 +4367,114 @@ yyreduce: ;} break; - case 203: -#line 1804 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 200: +#line 1880 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 207: -#line 1814 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 204: +#line 1890 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; - case 208: -#line 1816 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 205: +#line 1892 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - if (*(yyvsp[-1].TypeVal) == Type::VoidTy) - GEN_ERROR("void typed arguments are invalid!"); - (yyval.ArgVal) = new std::pair((yyvsp[-1].TypeVal), (yyvsp[0].StrVal)); - CHECK_FOR_ERROR -;} - break; - - case 209: -#line 1823 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { - (yyval.ArgList) = (yyvsp[-2].ArgList); - (yyvsp[-2].ArgList)->push_back(*(yyvsp[0].ArgVal)); - delete (yyvsp[0].ArgVal); + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); + if (*(yyvsp[-2].TypeVal) == Type::VoidTy) + GEN_ERROR("void typed arguments are invalid!"); + ArgListEntry E; E.Attrs = (yyvsp[-1].ParamAttrs); E.Ty = (yyvsp[-2].TypeVal); E.Name = (yyvsp[0].StrVal); + (yyval.ArgList) = (yyvsp[-4].ArgList); + (yyvsp[-4].ArgList)->push_back(E); CHECK_FOR_ERROR ;} break; - case 210: -#line 1829 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 206: +#line 1902 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - (yyval.ArgList) = new std::vector >(); - (yyval.ArgList)->push_back(*(yyvsp[0].ArgVal)); - delete (yyvsp[0].ArgVal); + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); + if (*(yyvsp[-2].TypeVal) == Type::VoidTy) + GEN_ERROR("void typed arguments are invalid!"); + ArgListEntry E; E.Attrs = (yyvsp[-1].ParamAttrs); E.Ty = (yyvsp[-2].TypeVal); E.Name = (yyvsp[0].StrVal); + (yyval.ArgList) = new ArgListType; + (yyval.ArgList)->push_back(E); CHECK_FOR_ERROR ;} break; - case 211: -#line 1836 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 207: +#line 1913 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[0].ArgList); CHECK_FOR_ERROR ;} break; - case 212: -#line 1840 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 208: +#line 1917 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); - (yyval.ArgList)->push_back(std::pair(new PATypeHolder(Type::VoidTy), 0)); + struct ArgListEntry E; + E.Ty = new PATypeHolder(Type::VoidTy); + E.Name = 0; + E.Attrs = FunctionType::NoAttributeSet; + (yyval.ArgList)->push_back(E); CHECK_FOR_ERROR ;} break; - case 213: -#line 1846 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 209: +#line 1926 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - (yyval.ArgList) = new std::vector >(); - (yyval.ArgList)->push_back(std::make_pair(new PATypeHolder(Type::VoidTy), (char*)0)); + (yyval.ArgList) = new ArgListType; + struct ArgListEntry E; + E.Ty = new PATypeHolder(Type::VoidTy); + E.Name = 0; + E.Attrs = FunctionType::NoAttributeSet; + (yyval.ArgList)->push_back(E); CHECK_FOR_ERROR ;} break; - case 214: -#line 1851 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 210: +#line 1935 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = 0; CHECK_FOR_ERROR ;} break; - case 215: -#line 1857 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 211: +#line 1941 "/proj/llvm/llvm-3/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) - GEN_ERROR("LLVM functions cannot return aggregate types!"); - std::vector ParamTypeList; + std::vector ParamAttrs; + ParamAttrs.push_back((yyvsp[-6].TypeWithAttrs).Attrs); if ((yyvsp[-3].ArgList)) { // If there are arguments... - for (std::vector >::iterator I = (yyvsp[-3].ArgList)->begin(); - I != (yyvsp[-3].ArgList)->end(); ++I) - ParamTypeList.push_back(I->first->get()); + for (ArgListType::iterator I = (yyvsp[-3].ArgList)->begin(); I != (yyvsp[-3].ArgList)->end(); ++I) { + const Type* Ty = I->Ty->get(); + ParamTypeList.push_back(Ty); + if (Ty != Type::VoidTy) + ParamAttrs.push_back(I->Attrs); + } } bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy; if (isVarArg) ParamTypeList.pop_back(); - const FunctionType *FT = FunctionType::get(*(yyvsp[-6].TypeVal), ParamTypeList, isVarArg); + FunctionType *FT = FunctionType::get(*(yyvsp[-6].TypeWithAttrs).Ty, ParamTypeList, isVarArg, + ParamAttrs); const PointerType *PFT = PointerType::get(FT); - delete (yyvsp[-6].TypeVal); + delete (yyvsp[-6].TypeWithAttrs).Ty; ValID ID; if (!FunctionName.empty()) { @@ -4422,19 +4528,19 @@ 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&& + assert((yyvsp[-3].ArgList)->back().Ty->get() == Type::VoidTy && (yyvsp[-3].ArgList)->back().Name == 0&& "Not a varargs marker!"); - delete (yyvsp[-3].ArgList)->back().first; + delete (yyvsp[-3].ArgList)->back().Ty; (yyvsp[-3].ArgList)->pop_back(); // Delete the last entry } Function::arg_iterator ArgIt = Fn->arg_begin(); - for (std::vector >::iterator I = (yyvsp[-3].ArgList)->begin(); - I != (yyvsp[-3].ArgList)->end(); ++I, ++ArgIt) { - delete I->first; // Delete the typeholder... - - setValueName(ArgIt, I->second); // Insert arg into symtab... + unsigned Idx = 1; + for (ArgListType::iterator I = (yyvsp[-3].ArgList)->begin(); I != (yyvsp[-3].ArgList)->end(); ++I, ++ArgIt) { + delete I->Ty; // Delete the typeholder... + setValueName(ArgIt, I->Name); // Insert arg into symtab... CHECK_FOR_ERROR InsertValue(ArgIt); + Idx++; } delete (yyvsp[-3].ArgList); // We're now done with the argument list @@ -4443,8 +4549,8 @@ yyreduce: ;} break; - case 218: -#line 1953 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 214: +#line 2040 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -4454,105 +4560,106 @@ yyreduce: ;} break; - case 221: -#line 1963 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 217: +#line 2050 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR ;} break; - case 222: -#line 1968 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 218: +#line 2055 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + CurFun.CurrentFunction->setLinkage((yyvsp[-1].Linkage)); (yyval.FunctionVal) = CurFun.CurrentFunction; CurFun.FunctionDone(); CHECK_FOR_ERROR ;} break; - case 223: -#line 1978 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 219: +#line 2066 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 224: -#line 1982 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 220: +#line 2070 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 225: -#line 1987 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 221: +#line 2075 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // A reference to a direct constant (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val)); CHECK_FOR_ERROR ;} break; - case 226: -#line 1991 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 222: +#line 2079 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val)); CHECK_FOR_ERROR ;} break; - case 227: -#line 1995 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 223: +#line 2083 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Perhaps it's an FP constant? (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal)); CHECK_FOR_ERROR ;} break; - case 228: -#line 1999 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 224: +#line 2087 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create(ConstantBool::getTrue()); CHECK_FOR_ERROR ;} break; - case 229: -#line 2003 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 225: +#line 2091 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create(ConstantBool::getFalse()); CHECK_FOR_ERROR ;} break; - case 230: -#line 2007 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 226: +#line 2095 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createNull(); CHECK_FOR_ERROR ;} break; - case 231: -#line 2011 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 227: +#line 2099 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createUndef(); CHECK_FOR_ERROR ;} break; - case 232: -#line 2015 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 228: +#line 2103 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // A vector zero constant. (yyval.ValIDVal) = ValID::createZeroInit(); CHECK_FOR_ERROR ;} break; - case 233: -#line 2019 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 229: +#line 2107 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized packed vector const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType(); int NumElements = (yyvsp[-1].ConstVector)->size(); @@ -4580,16 +4687,16 @@ yyreduce: ;} break; - case 234: -#line 2044 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 230: +#line 2132 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal)); CHECK_FOR_ERROR ;} break; - case 235: -#line 2048 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 231: +#line 2136 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { char *End = UnEscapeLexed((yyvsp[-2].StrVal), true); std::string AsmStr = std::string((yyvsp[-2].StrVal), End); @@ -4602,48 +4709,51 @@ yyreduce: ;} break; - case 236: -#line 2062 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 232: +#line 2150 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Is it an integer reference...? (yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal)); CHECK_FOR_ERROR ;} break; - case 237: -#line 2066 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 233: +#line 2154 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Is it a named reference...? (yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal)); CHECK_FOR_ERROR ;} break; - case 240: -#line 2078 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 236: +#line 2166 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - (yyval.ValueVal) = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal)); delete (yyvsp[-1].TypeVal); + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + (yyval.ValueVal) = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal)); + delete (yyvsp[-1].TypeVal); CHECK_FOR_ERROR ;} break; - case 241: -#line 2083 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 237: +#line 2175 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR ;} break; - case 242: -#line 2087 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 238: +#line 2179 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Do not allow functions with 0 basic blocks (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR ;} break; - case 243: -#line 2096 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 239: +#line 2188 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal)); CHECK_FOR_ERROR @@ -4656,8 +4766,8 @@ yyreduce: ;} break; - case 244: -#line 2107 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 240: +#line 2199 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (CastInst *CI1 = dyn_cast((yyvsp[0].InstVal))) if (CastInst *CI2 = dyn_cast(CI1->getOperand(0))) @@ -4669,8 +4779,8 @@ yyreduce: ;} break; - case 245: -#line 2116 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 241: +#line 2208 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BasicBlockVal) = getBBVal(ValID::create((int)CurFun.NextBBNum++), true); CHECK_FOR_ERROR @@ -4685,8 +4795,8 @@ yyreduce: ;} break; - case 246: -#line 2128 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 242: +#line 2220 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BasicBlockVal) = getBBVal(ValID::create((yyvsp[0].StrVal)), true); CHECK_FOR_ERROR @@ -4701,24 +4811,24 @@ yyreduce: ;} break; - case 247: -#line 2141 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 243: +#line 2233 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Return with a result... (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal)); CHECK_FOR_ERROR ;} break; - case 248: -#line 2145 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 244: +#line 2237 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Return with no result... (yyval.TermInstVal) = new ReturnInst(); CHECK_FOR_ERROR ;} break; - case 249: -#line 2149 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 245: +#line 2241 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Unconditional Branch... BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR @@ -4726,8 +4836,8 @@ yyreduce: ;} break; - case 250: -#line 2154 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 246: +#line 2246 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal)); CHECK_FOR_ERROR @@ -4739,8 +4849,8 @@ yyreduce: ;} break; - case 251: -#line 2163 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 247: +#line 2255 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal((yyvsp[-7].PrimType), (yyvsp[-6].ValIDVal)); CHECK_FOR_ERROR @@ -4762,8 +4872,8 @@ yyreduce: ;} break; - case 252: -#line 2182 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 248: +#line 2274 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal((yyvsp[-6].PrimType), (yyvsp[-5].ValIDVal)); CHECK_FOR_ERROR @@ -4775,26 +4885,28 @@ yyreduce: ;} break; - case 253: -#line 2192 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 249: +#line 2284 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - const PointerType *PFTy; - const FunctionType *Ty; - if (!(PFTy = dyn_cast((yyvsp[-10].TypeVal)->get())) || + // Handle the short syntax + const PointerType *PFTy = 0; + const FunctionType *Ty = 0; + if (!(PFTy = dyn_cast((yyvsp[-10].TypeWithAttrs).Ty->get())) || !(Ty = dyn_cast(PFTy->getElementType()))) { // Pull out the types of all of the arguments... std::vector ParamTypes; - if ((yyvsp[-7].ValueList)) { - for (std::vector::iterator I = (yyvsp[-7].ValueList)->begin(), E = (yyvsp[-7].ValueList)->end(); - I != E; ++I) - ParamTypes.push_back((*I)->getType()); + FunctionType::ParamAttrsList ParamAttrs; + ParamAttrs.push_back((yyvsp[-10].TypeWithAttrs).Attrs); + for (ValueRefList::iterator I = (yyvsp[-7].ValueRefList)->begin(), E = (yyvsp[-7].ValueRefList)->end(); I != E; ++I) { + const Type *Ty = I->Val->getType(); + if (Ty == Type::VoidTy) + GEN_ERROR("Short call syntax cannot be used with varargs"); + ParamTypes.push_back(Ty); + ParamAttrs.push_back(I->Attrs); } - 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].TypeWithAttrs).Ty->get(), ParamTypes, false, ParamAttrs); PFTy = PointerType::get(Ty); } @@ -4805,53 +4917,62 @@ yyreduce: BasicBlock *Except = getBBVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR - // Create the call node... - if (!(yyvsp[-7].ValueList)) { // Has no arguments? - (yyval.TermInstVal) = new InvokeInst(V, Normal, Except, std::vector()); + // Check the arguments + ValueList Args; + if ((yyvsp[-7].ValueRefList)->empty()) { // Has no arguments? + // Make sure no arguments is a good thing! + if (Ty->getNumParams() != 0) + GEN_ERROR("No arguments passed to a function that " + "expects arguments!"); } else { // Has arguments? // Loop through FunctionType's arguments and ensure they are specified // correctly! - // FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - std::vector::iterator ArgI = (yyvsp[-7].ValueList)->begin(), ArgE = (yyvsp[-7].ValueList)->end(); + ValueRefList::iterator ArgI = (yyvsp[-7].ValueRefList)->begin(), ArgE = (yyvsp[-7].ValueRefList)->end(); - for (; ArgI != ArgE && I != E; ++ArgI, ++I) - if ((*ArgI)->getType() != *I) - GEN_ERROR("Parameter " +(*ArgI)->getName()+ " is not of type '" + + for (; ArgI != ArgE && I != E; ++ArgI, ++I) { + if (ArgI->Val->getType() != *I) + GEN_ERROR("Parameter " + ArgI->Val->getName()+ " is not of type '" + (*I)->getDescription() + "'!"); + Args.push_back(ArgI->Val); + } - if (I != E || (ArgI != ArgE && !Ty->isVarArg())) + if (Ty->isVarArg()) { + if (I == E) + for (; ArgI != ArgE; ++ArgI) + Args.push_back(ArgI->Val); // push the remaining varargs + } else if (I != E || ArgI != ArgE) GEN_ERROR("Invalid number of parameters detected!"); - - (yyval.TermInstVal) = new InvokeInst(V, Normal, Except, *(yyvsp[-7].ValueList)); } - cast((yyval.TermInstVal))->setCallingConv((yyvsp[-11].UIntVal)); - - delete (yyvsp[-10].TypeVal); - delete (yyvsp[-7].ValueList); + + // Create the InvokeInst + InvokeInst *II = new InvokeInst(V, Normal, Except, Args); + II->setCallingConv((yyvsp[-11].UIntVal)); + (yyval.TermInstVal) = II; + delete (yyvsp[-7].ValueRefList); CHECK_FOR_ERROR ;} break; - case 254: -#line 2247 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 250: +#line 2350 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnwindInst(); CHECK_FOR_ERROR ;} break; - case 255: -#line 2251 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 251: +#line 2354 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnreachableInst(); CHECK_FOR_ERROR ;} break; - case 256: -#line 2258 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 252: +#line 2361 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = (yyvsp[-5].JumpTable); Constant *V = cast(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); @@ -4865,8 +4986,8 @@ yyreduce: ;} break; - case 257: -#line 2269 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 253: +#line 2372 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = new std::vector >(); Constant *V = cast(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); @@ -4881,8 +5002,8 @@ yyreduce: ;} break; - case 258: -#line 2282 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 254: +#line 2385 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Is this definition named?? if so, assign the name... setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal)); @@ -4893,9 +5014,11 @@ yyreduce: ;} break; - case 259: -#line 2291 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 255: +#line 2394 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Used for PHI nodes + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-5].TypeVal))->getDescription()); (yyval.PHIList) = new std::list >(); Value* tmpVal = getVal(*(yyvsp[-5].TypeVal), (yyvsp[-3].ValIDVal)); CHECK_FOR_ERROR @@ -4906,8 +5029,8 @@ yyreduce: ;} break; - case 260: -#line 2300 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 256: +#line 2405 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.PHIList) = (yyvsp[-6].PHIList); Value* tmpVal = getVal((yyvsp[-6].PHIList)->front().first->getType(), (yyvsp[-3].ValIDVal)); @@ -4918,47 +5041,70 @@ yyreduce: ;} break; - case 261: -#line 2310 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { // Used for call statements, and memory insts... - (yyval.ValueList) = new std::vector(); - (yyval.ValueList)->push_back((yyvsp[0].ValueVal)); + case 257: +#line 2415 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); + // Used for call and invoke instructions + (yyval.ValueRefList) = new ValueRefList(); + ValueRefListEntry E; E.Attrs = (yyvsp[0].ParamAttrs); E.Val = getVal((yyvsp[-2].TypeVal)->get(), (yyvsp[-1].ValIDVal)); + (yyval.ValueRefList)->push_back(E); ;} break; - case 262: -#line 2314 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 258: +#line 2423 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - (yyval.ValueList) = (yyvsp[-2].ValueList); - (yyvsp[-2].ValueList)->push_back((yyvsp[0].ValueVal)); + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); + (yyval.ValueRefList) = (yyvsp[-4].ValueRefList); + ValueRefListEntry E; E.Attrs = (yyvsp[0].ParamAttrs); E.Val = getVal((yyvsp[-2].TypeVal)->get(), (yyvsp[-1].ValIDVal)); + (yyval.ValueRefList)->push_back(E); CHECK_FOR_ERROR ;} break; - case 264: -#line 2321 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.ValueList) = 0; ;} + case 259: +#line 2431 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.ValueRefList) = new ValueRefList(); ;} break; - case 265: -#line 2323 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 260: +#line 2434 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { (yyval.ValueList) = new std::vector(); ;} + break; + + case 261: +#line 2435 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ValueList) = (yyvsp[-2].ValueList); + (yyval.ValueList)->push_back((yyvsp[0].ValueVal)); + CHECK_FOR_ERROR + ;} + break; + + case 262: +#line 2441 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 266: -#line 2327 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 263: +#line 2445 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 267: -#line 2332 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 264: +#line 2450 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); if (!(*(yyvsp[-3].TypeVal))->isInteger() && !(*(yyvsp[-3].TypeVal))->isFloatingPoint() && !isa((*(yyvsp[-3].TypeVal)).get())) GEN_ERROR( @@ -4979,9 +5125,11 @@ yyreduce: ;} break; - case 268: -#line 2351 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 265: +#line 2471 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); if (!(*(yyvsp[-3].TypeVal))->isIntegral()) { if (!isa((yyvsp[-3].TypeVal)->get()) || !cast((yyvsp[-3].TypeVal)->get())->getElementType()->isIntegral()) @@ -4998,9 +5146,11 @@ yyreduce: ;} break; - case 269: -#line 2366 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 266: +#line 2488 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); if (isa((*(yyvsp[-3].TypeVal)).get())) GEN_ERROR("Packed types not supported by icmp instruction"); Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); @@ -5013,9 +5163,11 @@ yyreduce: ;} break; - case 270: -#line 2377 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 267: +#line 2501 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); if (isa((*(yyvsp[-3].TypeVal)).get())) GEN_ERROR("Packed types not supported by fcmp instruction"); Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); @@ -5028,8 +5180,8 @@ yyreduce: ;} break; - case 271: -#line 2388 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 268: +#line 2514 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { cerr << "WARNING: Use of eliminated 'not' instruction:" << " Replacing with 'xor'.\n"; @@ -5045,11 +5197,11 @@ yyreduce: ;} break; - case 272: -#line 2401 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 269: +#line 2527 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { - if ((yyvsp[0].ValueVal)->getType() != Type::UByteTy) - GEN_ERROR("Shift amount must be ubyte!"); + if ((yyvsp[0].ValueVal)->getType() != Type::Int8Ty) + GEN_ERROR("Shift amount must be i8 type!"); if (!(yyvsp[-2].ValueVal)->getType()->isInteger()) GEN_ERROR("Shift constant expression requires integer operand!"); CHECK_FOR_ERROR; @@ -5058,9 +5210,11 @@ yyreduce: ;} break; - case 273: -#line 2410 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 270: +#line 2536 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); Value* Val = (yyvsp[-2].ValueVal); const Type* Ty = (yyvsp[0].TypeVal)->get(); if (!Val->getType()->isFirstClassType()) @@ -5068,13 +5222,13 @@ yyreduce: Val->getType()->getDescription() + "'!"); if (!Ty->isFirstClassType()) GEN_ERROR("cast to a non-primitive type: '" + Ty->getDescription() +"'!"); - (yyval.InstVal) = CastInst::create((yyvsp[-3].CastOpVal), (yyvsp[-2].ValueVal), (yyvsp[0].TypeVal)->get()); + (yyval.InstVal) = CastInst::create((yyvsp[-3].CastOpVal), Val, (yyvsp[0].TypeVal)->get()); delete (yyvsp[0].TypeVal); ;} break; - case 274: -#line 2421 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 271: +#line 2549 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-4].ValueVal)->getType() != Type::BoolTy) GEN_ERROR("select condition must be boolean!"); @@ -5085,17 +5239,19 @@ yyreduce: ;} break; - case 275: -#line 2429 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 272: +#line 2557 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); (yyval.InstVal) = new VAArgInst((yyvsp[-2].ValueVal), *(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); CHECK_FOR_ERROR ;} break; - case 276: -#line 2434 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 273: +#line 2564 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid extractelement operands!"); @@ -5104,8 +5260,8 @@ yyreduce: ;} break; - case 277: -#line 2440 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 274: +#line 2570 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid insertelement operands!"); @@ -5114,8 +5270,8 @@ yyreduce: ;} break; - case 278: -#line 2446 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 275: +#line 2576 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid shufflevector operands!"); @@ -5124,8 +5280,8 @@ yyreduce: ;} break; - case 279: -#line 2452 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 276: +#line 2582 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { const Type *Ty = (yyvsp[0].PHIList)->front().first->getType(); if (!Ty->isFirstClassType()) @@ -5143,121 +5299,112 @@ yyreduce: ;} break; - case 280: -#line 2467 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 277: +#line 2597 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + + // Handle the short syntax const PointerType *PFTy = 0; const FunctionType *Ty = 0; - - if (!(PFTy = dyn_cast((yyvsp[-4].TypeVal)->get())) || + if (!(PFTy = dyn_cast((yyvsp[-4].TypeWithAttrs).Ty->get())) || !(Ty = dyn_cast(PFTy->getElementType()))) { // Pull out the types of all of the arguments... std::vector ParamTypes; - if ((yyvsp[-1].ValueList)) { - for (std::vector::iterator I = (yyvsp[-1].ValueList)->begin(), E = (yyvsp[-1].ValueList)->end(); - I != E; ++I) - ParamTypes.push_back((*I)->getType()); + FunctionType::ParamAttrsList ParamAttrs; + ParamAttrs.push_back((yyvsp[-4].TypeWithAttrs).Attrs); + for (ValueRefList::iterator I = (yyvsp[-1].ValueRefList)->begin(), E = (yyvsp[-1].ValueRefList)->end(); I != E; ++I) { + const Type *Ty = I->Val->getType(); + if (Ty == Type::VoidTy) + GEN_ERROR("Short call syntax cannot be used with varargs"); + ParamTypes.push_back(Ty); + ParamAttrs.push_back(I->Attrs); } - bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; - if (isVarArg) ParamTypes.pop_back(); - - if (!(*(yyvsp[-4].TypeVal))->isFirstClassType() && *(yyvsp[-4].TypeVal) != Type::VoidTy) - GEN_ERROR("LLVM functions cannot return aggregate types!"); - - Ty = FunctionType::get((yyvsp[-4].TypeVal)->get(), ParamTypes, isVarArg); + Ty = FunctionType::get((yyvsp[-4].TypeWithAttrs).Ty->get(), ParamTypes, false, ParamAttrs); PFTy = PointerType::get(Ty); } Value *V = getVal(PFTy, (yyvsp[-3].ValIDVal)); // Get the function we're calling... CHECK_FOR_ERROR - // Create the call node... - if (!(yyvsp[-1].ValueList)) { // Has no arguments? + // Check the arguments + ValueList Args; + if ((yyvsp[-1].ValueRefList)->empty()) { // Has no arguments? // Make sure no arguments is a good thing! if (Ty->getNumParams() != 0) GEN_ERROR("No arguments passed to a function that " "expects arguments!"); - - (yyval.InstVal) = new CallInst(V, std::vector()); } else { // Has arguments? // Loop through FunctionType's arguments and ensure they are specified // correctly! // FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - std::vector::iterator ArgI = (yyvsp[-1].ValueList)->begin(), ArgE = (yyvsp[-1].ValueList)->end(); + ValueRefList::iterator ArgI = (yyvsp[-1].ValueRefList)->begin(), ArgE = (yyvsp[-1].ValueRefList)->end(); - for (; ArgI != ArgE && I != E; ++ArgI, ++I) - if ((*ArgI)->getType() != *I) - GEN_ERROR("Parameter " +(*ArgI)->getName()+ " is not of type '" + + for (; ArgI != ArgE && I != E; ++ArgI, ++I) { + if (ArgI->Val->getType() != *I) + GEN_ERROR("Parameter " + ArgI->Val->getName()+ " is not of type '" + (*I)->getDescription() + "'!"); - - if (I != E || (ArgI != ArgE && !Ty->isVarArg())) + Args.push_back(ArgI->Val); + } + if (Ty->isVarArg()) { + if (I == E) + for (; ArgI != ArgE; ++ArgI) + Args.push_back(ArgI->Val); // push the remaining varargs + } else if (I != E || ArgI != ArgE) GEN_ERROR("Invalid number of parameters detected!"); - - (yyval.InstVal) = new CallInst(V, *(yyvsp[-1].ValueList)); } - cast((yyval.InstVal))->setTailCall((yyvsp[-6].BoolVal)); - cast((yyval.InstVal))->setCallingConv((yyvsp[-5].UIntVal)); - delete (yyvsp[-4].TypeVal); - delete (yyvsp[-1].ValueList); + // Create the call node + CallInst *CI = new CallInst(V, Args); + CI->setTailCall((yyvsp[-6].BoolVal)); + CI->setCallingConv((yyvsp[-5].UIntVal)); + (yyval.InstVal) = CI; + delete (yyvsp[-1].ValueRefList); CHECK_FOR_ERROR ;} break; - case 281: -#line 2526 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 278: +#line 2659 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.InstVal) = (yyvsp[0].InstVal); CHECK_FOR_ERROR ;} break; - case 282: -#line 2533 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { - (yyval.ValueList) = (yyvsp[0].ValueList); - CHECK_FOR_ERROR - ;} - break; - - case 283: -#line 2536 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { - (yyval.ValueList) = new std::vector(); - CHECK_FOR_ERROR - ;} - break; - - case 284: -#line 2541 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 279: +#line 2664 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 285: -#line 2545 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 280: +#line 2668 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 286: -#line 2552 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 281: +#line 2675 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); (yyval.InstVal) = new MallocInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal)); delete (yyvsp[-1].TypeVal); CHECK_FOR_ERROR ;} break; - case 287: -#line 2557 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 282: +#line 2682 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal)); CHECK_FOR_ERROR (yyval.InstVal) = new MallocInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal)); @@ -5265,18 +5412,22 @@ yyreduce: ;} break; - case 288: -#line 2563 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 283: +#line 2690 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); (yyval.InstVal) = new AllocaInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal)); delete (yyvsp[-1].TypeVal); CHECK_FOR_ERROR ;} break; - case 289: -#line 2568 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 284: +#line 2697 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal)); CHECK_FOR_ERROR (yyval.InstVal) = new AllocaInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal)); @@ -5284,8 +5435,8 @@ yyreduce: ;} break; - case 290: -#line 2574 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 285: +#line 2705 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!isa((yyvsp[0].ValueVal)->getType())) GEN_ERROR("Trying to free nonpointer type " + @@ -5295,9 +5446,11 @@ yyreduce: ;} break; - case 291: -#line 2582 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 286: +#line 2713 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); if (!isa((yyvsp[-1].TypeVal)->get())) GEN_ERROR("Can't load from nonpointer type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5311,9 +5464,11 @@ yyreduce: ;} break; - case 292: -#line 2594 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 287: +#line 2727 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); const PointerType *PT = dyn_cast((yyvsp[-1].TypeVal)->get()); if (!PT) GEN_ERROR("Can't store to a nonpointer type: " + @@ -5330,9 +5485,11 @@ yyreduce: ;} break; - case 293: -#line 2609 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" + case 288: +#line 2744 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); if (!isa((yyvsp[-2].TypeVal)->get())) GEN_ERROR("getelementptr insn requires pointer operand!"); @@ -5352,7 +5509,7 @@ yyreduce: } /* Line 1126 of yacc.c. */ -#line 5356 "llvmAsmParser.tab.c" +#line 5513 "llvmAsmParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -5620,8 +5777,35 @@ yyreturn: } -#line 2624 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 2761 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + + +// common code from the two 'RunVMAsmParser' functions +static Module* RunParser(Module * M) { + + llvmAsmlineno = 1; // Reset the current line number... + CurModule.CurrentModule = M; +#if YYDEBUG + yydebug = Debug; +#endif + // Check to make sure the parser succeeded + if (yyparse()) { + if (ParserResult) + delete ParserResult; + return 0; + } + + // Check to make sure that parsing produced a result + if (!ParserResult) + return 0; + + // Reset ParserResult variable while saving its value for the result. + Module *Result = ParserResult; + ParserResult = 0; + + return Result; +} void llvm::GenerateError(const std::string &message, int LineNo) { if (LineNo == -1) LineNo = llvmAsmlineno; diff --git a/lib/AsmParser/llvmAsmParser.h.cvs b/lib/AsmParser/llvmAsmParser.h.cvs index e249522..46cdcc5 100644 --- a/lib/AsmParser/llvmAsmParser.h.cvs +++ b/lib/AsmParser/llvmAsmParser.h.cvs @@ -36,136 +36,131 @@ FPVAL = 262, VOID = 263, BOOL = 264, - SBYTE = 265, - UBYTE = 266, - SHORT = 267, - USHORT = 268, - INT = 269, - UINT = 270, - LONG = 271, - ULONG = 272, - FLOAT = 273, - DOUBLE = 274, - LABEL = 275, - TYPE = 276, - VAR_ID = 277, - LABELSTR = 278, - STRINGCONSTANT = 279, - IMPLEMENTATION = 280, - ZEROINITIALIZER = 281, - TRUETOK = 282, - FALSETOK = 283, - BEGINTOK = 284, - ENDTOK = 285, - DECLARE = 286, - DEFINE = 287, - GLOBAL = 288, - CONSTANT = 289, - SECTION = 290, - VOLATILE = 291, - TO = 292, - DOTDOTDOT = 293, - NULL_TOK = 294, - UNDEF = 295, - CONST = 296, - INTERNAL = 297, - LINKONCE = 298, - WEAK = 299, - APPENDING = 300, - DLLIMPORT = 301, - DLLEXPORT = 302, - EXTERN_WEAK = 303, - OPAQUE = 304, - NOT = 305, - EXTERNAL = 306, - TARGET = 307, - TRIPLE = 308, - ENDIAN = 309, - POINTERSIZE = 310, - LITTLE = 311, - BIG = 312, - ALIGN = 313, - DEPLIBS = 314, - CALL = 315, - TAIL = 316, - ASM_TOK = 317, - MODULE = 318, - SIDEEFFECT = 319, - CC_TOK = 320, - CCC_TOK = 321, - CSRETCC_TOK = 322, - FASTCC_TOK = 323, - COLDCC_TOK = 324, - X86_STDCALLCC_TOK = 325, - X86_FASTCALLCC_TOK = 326, - DATALAYOUT = 327, - RET = 328, - BR = 329, - SWITCH = 330, - INVOKE = 331, - UNWIND = 332, - UNREACHABLE = 333, - ADD = 334, - SUB = 335, - MUL = 336, - UDIV = 337, - SDIV = 338, - FDIV = 339, - UREM = 340, - SREM = 341, - FREM = 342, - AND = 343, - OR = 344, - XOR = 345, - ICMP = 346, - FCMP = 347, - EQ = 348, - NE = 349, - SLT = 350, - SGT = 351, - SLE = 352, - SGE = 353, - ULT = 354, - UGT = 355, - ULE = 356, - UGE = 357, - OEQ = 358, - ONE = 359, - OLT = 360, - OGT = 361, - OLE = 362, - OGE = 363, - ORD = 364, - UNO = 365, - UEQ = 366, - UNE = 367, - MALLOC = 368, - ALLOCA = 369, - FREE = 370, - LOAD = 371, - STORE = 372, - GETELEMENTPTR = 373, - TRUNC = 374, - ZEXT = 375, - SEXT = 376, - FPTRUNC = 377, - FPEXT = 378, - BITCAST = 379, - UITOFP = 380, - SITOFP = 381, - FPTOUI = 382, - FPTOSI = 383, - INTTOPTR = 384, - PTRTOINT = 385, - PHI_TOK = 386, - SELECT = 387, - SHL = 388, - LSHR = 389, - ASHR = 390, - VAARG = 391, - EXTRACTELEMENT = 392, - INSERTELEMENT = 393, - SHUFFLEVECTOR = 394 + INT8 = 265, + INT16 = 266, + INT32 = 267, + INT64 = 268, + FLOAT = 269, + DOUBLE = 270, + LABEL = 271, + TYPE = 272, + VAR_ID = 273, + LABELSTR = 274, + STRINGCONSTANT = 275, + IMPLEMENTATION = 276, + ZEROINITIALIZER = 277, + TRUETOK = 278, + FALSETOK = 279, + BEGINTOK = 280, + ENDTOK = 281, + DECLARE = 282, + DEFINE = 283, + GLOBAL = 284, + CONSTANT = 285, + SECTION = 286, + VOLATILE = 287, + TO = 288, + DOTDOTDOT = 289, + NULL_TOK = 290, + UNDEF = 291, + INTERNAL = 292, + LINKONCE = 293, + WEAK = 294, + APPENDING = 295, + DLLIMPORT = 296, + DLLEXPORT = 297, + EXTERN_WEAK = 298, + OPAQUE = 299, + NOT = 300, + EXTERNAL = 301, + TARGET = 302, + TRIPLE = 303, + ENDIAN = 304, + POINTERSIZE = 305, + LITTLE = 306, + BIG = 307, + ALIGN = 308, + DEPLIBS = 309, + CALL = 310, + TAIL = 311, + ASM_TOK = 312, + MODULE = 313, + SIDEEFFECT = 314, + CC_TOK = 315, + CCC_TOK = 316, + CSRETCC_TOK = 317, + FASTCC_TOK = 318, + COLDCC_TOK = 319, + X86_STDCALLCC_TOK = 320, + X86_FASTCALLCC_TOK = 321, + DATALAYOUT = 322, + RET = 323, + BR = 324, + SWITCH = 325, + INVOKE = 326, + UNWIND = 327, + UNREACHABLE = 328, + ADD = 329, + SUB = 330, + MUL = 331, + UDIV = 332, + SDIV = 333, + FDIV = 334, + UREM = 335, + SREM = 336, + FREM = 337, + AND = 338, + OR = 339, + XOR = 340, + ICMP = 341, + FCMP = 342, + EQ = 343, + NE = 344, + SLT = 345, + SGT = 346, + SLE = 347, + SGE = 348, + ULT = 349, + UGT = 350, + ULE = 351, + UGE = 352, + OEQ = 353, + ONE = 354, + OLT = 355, + OGT = 356, + OLE = 357, + OGE = 358, + ORD = 359, + UNO = 360, + UEQ = 361, + UNE = 362, + MALLOC = 363, + ALLOCA = 364, + FREE = 365, + LOAD = 366, + STORE = 367, + GETELEMENTPTR = 368, + TRUNC = 369, + ZEXT = 370, + SEXT = 371, + FPTRUNC = 372, + FPEXT = 373, + BITCAST = 374, + UITOFP = 375, + SITOFP = 376, + FPTOUI = 377, + FPTOSI = 378, + INTTOPTR = 379, + PTRTOINT = 380, + PHI_TOK = 381, + SELECT = 382, + SHL = 383, + LSHR = 384, + ASHR = 385, + VAARG = 386, + EXTRACTELEMENT = 387, + INSERTELEMENT = 388, + SHUFFLEVECTOR = 389 }; #endif /* Tokens. */ @@ -176,158 +171,155 @@ #define FPVAL 262 #define VOID 263 #define BOOL 264 -#define SBYTE 265 -#define UBYTE 266 -#define SHORT 267 -#define USHORT 268 -#define INT 269 -#define UINT 270 -#define LONG 271 -#define ULONG 272 -#define FLOAT 273 -#define DOUBLE 274 -#define LABEL 275 -#define TYPE 276 -#define VAR_ID 277 -#define LABELSTR 278 -#define STRINGCONSTANT 279 -#define IMPLEMENTATION 280 -#define ZEROINITIALIZER 281 -#define TRUETOK 282 -#define FALSETOK 283 -#define BEGINTOK 284 -#define ENDTOK 285 -#define DECLARE 286 -#define DEFINE 287 -#define GLOBAL 288 -#define CONSTANT 289 -#define SECTION 290 -#define VOLATILE 291 -#define TO 292 -#define DOTDOTDOT 293 -#define NULL_TOK 294 -#define UNDEF 295 -#define CONST 296 -#define INTERNAL 297 -#define LINKONCE 298 -#define WEAK 299 -#define APPENDING 300 -#define DLLIMPORT 301 -#define DLLEXPORT 302 -#define EXTERN_WEAK 303 -#define OPAQUE 304 -#define NOT 305 -#define EXTERNAL 306 -#define TARGET 307 -#define TRIPLE 308 -#define ENDIAN 309 -#define POINTERSIZE 310 -#define LITTLE 311 -#define BIG 312 -#define ALIGN 313 -#define DEPLIBS 314 -#define CALL 315 -#define TAIL 316 -#define ASM_TOK 317 -#define MODULE 318 -#define SIDEEFFECT 319 -#define CC_TOK 320 -#define CCC_TOK 321 -#define CSRETCC_TOK 322 -#define FASTCC_TOK 323 -#define COLDCC_TOK 324 -#define X86_STDCALLCC_TOK 325 -#define X86_FASTCALLCC_TOK 326 -#define DATALAYOUT 327 -#define RET 328 -#define BR 329 -#define SWITCH 330 -#define INVOKE 331 -#define UNWIND 332 -#define UNREACHABLE 333 -#define ADD 334 -#define SUB 335 -#define MUL 336 -#define UDIV 337 -#define SDIV 338 -#define FDIV 339 -#define UREM 340 -#define SREM 341 -#define FREM 342 -#define AND 343 -#define OR 344 -#define XOR 345 -#define ICMP 346 -#define FCMP 347 -#define EQ 348 -#define NE 349 -#define SLT 350 -#define SGT 351 -#define SLE 352 -#define SGE 353 -#define ULT 354 -#define UGT 355 -#define ULE 356 -#define UGE 357 -#define OEQ 358 -#define ONE 359 -#define OLT 360 -#define OGT 361 -#define OLE 362 -#define OGE 363 -#define ORD 364 -#define UNO 365 -#define UEQ 366 -#define UNE 367 -#define MALLOC 368 -#define ALLOCA 369 -#define FREE 370 -#define LOAD 371 -#define STORE 372 -#define GETELEMENTPTR 373 -#define TRUNC 374 -#define ZEXT 375 -#define SEXT 376 -#define FPTRUNC 377 -#define FPEXT 378 -#define BITCAST 379 -#define UITOFP 380 -#define SITOFP 381 -#define FPTOUI 382 -#define FPTOSI 383 -#define INTTOPTR 384 -#define PTRTOINT 385 -#define PHI_TOK 386 -#define SELECT 387 -#define SHL 388 -#define LSHR 389 -#define ASHR 390 -#define VAARG 391 -#define EXTRACTELEMENT 392 -#define INSERTELEMENT 393 -#define SHUFFLEVECTOR 394 +#define INT8 265 +#define INT16 266 +#define INT32 267 +#define INT64 268 +#define FLOAT 269 +#define DOUBLE 270 +#define LABEL 271 +#define TYPE 272 +#define VAR_ID 273 +#define LABELSTR 274 +#define STRINGCONSTANT 275 +#define IMPLEMENTATION 276 +#define ZEROINITIALIZER 277 +#define TRUETOK 278 +#define FALSETOK 279 +#define BEGINTOK 280 +#define ENDTOK 281 +#define DECLARE 282 +#define DEFINE 283 +#define GLOBAL 284 +#define CONSTANT 285 +#define SECTION 286 +#define VOLATILE 287 +#define TO 288 +#define DOTDOTDOT 289 +#define NULL_TOK 290 +#define UNDEF 291 +#define INTERNAL 292 +#define LINKONCE 293 +#define WEAK 294 +#define APPENDING 295 +#define DLLIMPORT 296 +#define DLLEXPORT 297 +#define EXTERN_WEAK 298 +#define OPAQUE 299 +#define NOT 300 +#define EXTERNAL 301 +#define TARGET 302 +#define TRIPLE 303 +#define ENDIAN 304 +#define POINTERSIZE 305 +#define LITTLE 306 +#define BIG 307 +#define ALIGN 308 +#define DEPLIBS 309 +#define CALL 310 +#define TAIL 311 +#define ASM_TOK 312 +#define MODULE 313 +#define SIDEEFFECT 314 +#define CC_TOK 315 +#define CCC_TOK 316 +#define CSRETCC_TOK 317 +#define FASTCC_TOK 318 +#define COLDCC_TOK 319 +#define X86_STDCALLCC_TOK 320 +#define X86_FASTCALLCC_TOK 321 +#define DATALAYOUT 322 +#define RET 323 +#define BR 324 +#define SWITCH 325 +#define INVOKE 326 +#define UNWIND 327 +#define UNREACHABLE 328 +#define ADD 329 +#define SUB 330 +#define MUL 331 +#define UDIV 332 +#define SDIV 333 +#define FDIV 334 +#define UREM 335 +#define SREM 336 +#define FREM 337 +#define AND 338 +#define OR 339 +#define XOR 340 +#define ICMP 341 +#define FCMP 342 +#define EQ 343 +#define NE 344 +#define SLT 345 +#define SGT 346 +#define SLE 347 +#define SGE 348 +#define ULT 349 +#define UGT 350 +#define ULE 351 +#define UGE 352 +#define OEQ 353 +#define ONE 354 +#define OLT 355 +#define OGT 356 +#define OLE 357 +#define OGE 358 +#define ORD 359 +#define UNO 360 +#define UEQ 361 +#define UNE 362 +#define MALLOC 363 +#define ALLOCA 364 +#define FREE 365 +#define LOAD 366 +#define STORE 367 +#define GETELEMENTPTR 368 +#define TRUNC 369 +#define ZEXT 370 +#define SEXT 371 +#define FPTRUNC 372 +#define FPEXT 373 +#define BITCAST 374 +#define UITOFP 375 +#define SITOFP 376 +#define FPTOUI 377 +#define FPTOSI 378 +#define INTTOPTR 379 +#define PTRTOINT 380 +#define PHI_TOK 381 +#define SELECT 382 +#define SHL 383 +#define LSHR 384 +#define ASHR 385 +#define VAARG 386 +#define EXTRACTELEMENT 387 +#define INSERTELEMENT 388 +#define SHUFFLEVECTOR 389 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 855 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" +#line 843 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; - std::pair *ArgVal; llvm::BasicBlock *BasicBlockVal; llvm::TerminatorInst *TermInstVal; llvm::Instruction *InstVal; llvm::Constant *ConstVal; const llvm::Type *PrimType; + std::list *TypeList; llvm::PATypeHolder *TypeVal; llvm::Value *ValueVal; - - std::vector > *ArgList; std::vector *ValueList; - std::list *TypeList; + llvm::ArgListType *ArgList; + llvm::TypeWithAttrs TypeWithAttrs; + llvm::TypeWithAttrsList *TypeWithAttrsList; + llvm::ValueRefList *ValueRefList; + // Represent the RHS of PHI node std::list > *PHIList; @@ -335,6 +327,7 @@ typedef union YYSTYPE { std::vector *ConstVector; llvm::GlobalValue::LinkageTypes Linkage; + llvm::FunctionType::ParameterAttributes ParamAttrs; int64_t SInt64Val; uint64_t UInt64Val; int SIntVal; @@ -355,7 +348,7 @@ typedef union YYSTYPE { llvm::FCmpInst::Predicate FPredicate; } YYSTYPE; /* Line 1447 of yacc.c. */ -#line 359 "llvmAsmParser.tab.h" +#line 352 "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.cvs b/lib/AsmParser/llvmAsmParser.y.cvs index 8f2df71..0eba227 100644 --- a/lib/AsmParser/llvmAsmParser.y.cvs +++ b/lib/AsmParser/llvmAsmParser.y.cvs @@ -19,12 +19,16 @@ #include "llvm/Module.h" #include "llvm/SymbolTable.h" #include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/Support/CommandLine.h" #include "llvm/ADT/STLExtras.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/Streams.h" #include #include #include +#ifndef NDEBUG +#define YYDEBUG 1 +#endif // The following is a gross hack. In order to rid the libAsmParser library of // exceptions, we have to have a way of getting the yyparse function to go into @@ -47,6 +51,11 @@ int yyparse(); namespace llvm { std::string CurFilename; +#if YYDEBUG +static cl::opt +Debug("debug-yacc", cl::desc("Print yacc debug state changes"), + cl::Hidden, cl::init(false)); +#endif } using namespace llvm; @@ -71,6 +80,7 @@ static GlobalVariable *CurGV; // destroyed when the function is completed. // typedef std::vector ValueList; // Numbered defs + static void ResolveDefinitions(std::map &LateResolvers, std::map *FutureLateResolvers = 0); @@ -804,34 +814,12 @@ static PATypeHolder HandleUpRefs(const Type *ty) { return Ty; } -// common code from the two 'RunVMAsmParser' functions -static Module* RunParser(Module * M) { - - llvmAsmlineno = 1; // Reset the current line number... - CurModule.CurrentModule = M; - - // Check to make sure the parser succeeded - if (yyparse()) { - if (ParserResult) - delete ParserResult; - return 0; - } - - // Check to make sure that parsing produced a result - if (!ParserResult) - return 0; - - // Reset ParserResult variable while saving its value for the result. - Module *Result = ParserResult; - ParserResult = 0; - - return Result; -} - //===----------------------------------------------------------------------===// // RunVMAsmParser - Define an interface to this parser //===----------------------------------------------------------------------===// // +static Module* RunParser(Module * M); + Module *llvm::RunVMAsmParser(const std::string &Filename, FILE *F) { set_scan_file(F); @@ -855,19 +843,21 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { %union { llvm::Module *ModuleVal; llvm::Function *FunctionVal; - std::pair *ArgVal; llvm::BasicBlock *BasicBlockVal; llvm::TerminatorInst *TermInstVal; llvm::Instruction *InstVal; llvm::Constant *ConstVal; const llvm::Type *PrimType; + std::list *TypeList; llvm::PATypeHolder *TypeVal; llvm::Value *ValueVal; - - std::vector > *ArgList; std::vector *ValueList; - std::list *TypeList; + llvm::ArgListType *ArgList; + llvm::TypeWithAttrs TypeWithAttrs; + llvm::TypeWithAttrsList *TypeWithAttrsList; + llvm::ValueRefList *ValueRefList; + // Represent the RHS of PHI node std::list > *PHIList; @@ -875,6 +865,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { std::vector *ConstVector; llvm::GlobalValue::LinkageTypes Linkage; + llvm::FunctionType::ParameterAttributes ParamAttrs; int64_t SInt64Val; uint64_t UInt64Val; int SIntVal; @@ -895,7 +886,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { llvm::FCmpInst::Predicate FPredicate; } -%type Module +%type Module %type Function FunctionProto FunctionHeader BasicBlockList %type BasicBlock InstructionList %type BBTerminatorInst @@ -903,17 +894,19 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { %type ConstVal ConstExpr %type ConstVector %type ArgList ArgListH -%type ArgVal %type PHIList -%type ValueRefList ValueRefListE // For call param lists -%type IndexList // For GEP derived indices -%type TypeListI ArgTypeListI +%type ValueRefList // For call param lists & GEP indices +%type IndexList // For GEP indices +%type TypeListI +%type ArgTypeList ArgTypeListI +%type ArgType ResultType %type JumpTable %type GlobalType // GLOBAL or CONSTANT? %type OptVolatile // 'volatile' or not %type OptTailCall // TAIL CALL or plain CALL. %type OptSideEffect // 'sideeffect' or not. -%type FunctionLinkage GVInternalLinkage GVExternalLinkage +%type GVInternalLinkage GVExternalLinkage +%type FunctionDefineLinkage FunctionDeclareLinkage %type BigOrLittle // ValueRef - Unresolved reference to a definition or BB @@ -933,9 +926,9 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { %token FPVAL // Float or Double constant // Built in types... -%type Types TypesV UpRTypes UpRTypesV -%type SIntType UIntType IntType FPType PrimType // Classifications -%token VOID BOOL SBYTE UBYTE SHORT USHORT INT UINT LONG ULONG +%type Types +%type IntType FPType PrimType // Classifications +%token VOID BOOL INT8 INT16 INT32 INT64 %token FLOAT DOUBLE LABEL %token TYPE @@ -946,7 +939,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { %token IMPLEMENTATION ZEROINITIALIZER TRUETOK FALSETOK BEGINTOK ENDTOK %token DECLARE DEFINE GLOBAL CONSTANT SECTION VOLATILE -%token TO DOTDOTDOT NULL_TOK UNDEF CONST INTERNAL LINKONCE WEAK APPENDING +%token TO DOTDOTDOT NULL_TOK UNDEF INTERNAL LINKONCE WEAK APPENDING %token DLLIMPORT DLLEXPORT EXTERN_WEAK %token OPAQUE NOT EXTERNAL TARGET TRIPLE ENDIAN POINTERSIZE LITTLE BIG ALIGN %token DEPLIBS CALL TAIL ASM_TOK MODULE SIDEEFFECT @@ -954,6 +947,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { %token X86_STDCALLCC_TOK X86_FASTCALLCC_TOK %token DATALAYOUT %type OptCallingConv +%type OptParamAttrs ParamAttrList ParamAttr // Basic Block Terminating Operators %token RET BR SWITCH INVOKE UNWIND UNREACHABLE @@ -1024,9 +1018,7 @@ FPredicates // These are some types that allow classification if we only want a particular // thing... for example, only a signed, unsigned, or integral type. -SIntType : LONG | INT | SHORT | SBYTE; -UIntType : ULONG | UINT | USHORT | UBYTE; -IntType : SIntType | UIntType; +IntType : INT64 | INT32 | INT16 | INT8; FPType : FLOAT | DOUBLE; // OptAssign - Value producing statements have an optional assignment component @@ -1053,18 +1045,18 @@ GVExternalLinkage | EXTERNAL { $$ = GlobalValue::ExternalLinkage; } ; -FnDeclareLinkage - : /*empty*/ { /*default*/ } - | DLLIMPORT { CurFun.Linkage = GlobalValue::DLLImportLinkage; } - | EXTERN_WEAK { CurFun.Linkage = GlobalValue::ExternalWeakLinkage; } +FunctionDeclareLinkage + : /*empty*/ { $$ = GlobalValue::ExternalLinkage; } + | DLLIMPORT { $$ = GlobalValue::DLLImportLinkage; } + | EXTERN_WEAK { $$ = GlobalValue::ExternalWeakLinkage; } ; -FunctionLinkage - : INTERNAL { $$ = GlobalValue::InternalLinkage; } +FunctionDefineLinkage + : /*empty*/ { $$ = GlobalValue::ExternalLinkage; } + | INTERNAL { $$ = GlobalValue::InternalLinkage; } | LINKONCE { $$ = GlobalValue::LinkOnceLinkage; } | WEAK { $$ = GlobalValue::WeakLinkage; } | DLLEXPORT { $$ = GlobalValue::DLLExportLinkage; } - | /*empty*/ { $$ = GlobalValue::ExternalLinkage; } ; OptCallingConv : /*empty*/ { $$ = CallingConv::C; } | @@ -1081,6 +1073,21 @@ OptCallingConv : /*empty*/ { $$ = CallingConv::C; } | CHECK_FOR_ERROR }; +ParamAttr : ZEXT { $$ = FunctionType::ZExtAttribute; } + | SEXT { $$ = FunctionType::SExtAttribute; } + ; + +ParamAttrList : ParamAttr { $$ = $1; } + | ParamAttrList ',' ParamAttr { + $$ = FunctionType::ParameterAttributes($1 | $3); + } + ; + +OptParamAttrs : /* empty */ { $$ = FunctionType::NoAttributeSet; } + | '@' ParamAttr { $$ = $2; } + | '@' '(' ParamAttrList ')' { $$ = $3; } + ; + // OptAlign/OptCAlign - An optional alignment, and an optional alignment with // a comma before it. OptAlign : /*empty*/ { $$ = 0; } | @@ -1129,43 +1136,34 @@ GlobalVarAttribute : SectionString { //===----------------------------------------------------------------------===// // Types includes all predefined types... except void, because it can only be -// used in specific contexts (function returning void for example). To have -// access to it, a user must explicitly use TypesV. -// - -// TypesV includes all of 'Types', but it also includes the void type. -TypesV : Types | VOID { $$ = new PATypeHolder($1); }; -UpRTypesV : UpRTypes | VOID { $$ = new PATypeHolder($1); }; - -Types : UpRTypes { - if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); - $$ = $1; - CHECK_FOR_ERROR - }; - +// used in specific contexts (function returning void for example). // Derived types are added later... // -PrimType : BOOL | SBYTE | UBYTE | SHORT | USHORT | INT | UINT ; -PrimType : LONG | ULONG | FLOAT | DOUBLE | LABEL ; -UpRTypes : OPAQUE { +PrimType : BOOL | INT8 | INT16 | INT32 | INT64 | FLOAT | DOUBLE | LABEL ; + +Types + : OPAQUE { $$ = new PATypeHolder(OpaqueType::get()); CHECK_FOR_ERROR } | PrimType { $$ = new PATypeHolder($1); CHECK_FOR_ERROR - }; -UpRTypes : SymbolicValueRef { // Named types are also simple types... - const Type* tmp = getTypeVal($1); - CHECK_FOR_ERROR - $$ = new PATypeHolder(tmp); -}; - -// Include derived types in the Types production. -// -UpRTypes : '\\' EUINT64VAL { // Type UpReference + } + | Types '*' { // Pointer type? + if (*$1 == Type::LabelTy) + GEN_ERROR("Cannot form a pointer to a basic block"); + $$ = new PATypeHolder(HandleUpRefs(PointerType::get(*$1))); + delete $1; + CHECK_FOR_ERROR + } + | SymbolicValueRef { // Named types are also simple types... + const Type* tmp = getTypeVal($1); + CHECK_FOR_ERROR + $$ = new PATypeHolder(tmp); + } + | '\\' 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... @@ -1173,25 +1171,48 @@ UpRTypes : '\\' EUINT64VAL { // Type UpReference UR_OUT("New Upreference!\n"); CHECK_FOR_ERROR } - | UpRTypesV '(' ArgTypeListI ')' { // Function derived type? + | Types OptParamAttrs '(' ArgTypeListI ')' { std::vector Params; - for (std::list::iterator I = $3->begin(), - E = $3->end(); I != E; ++I) - Params.push_back(*I); + std::vector Attrs; + Attrs.push_back($2); + for (TypeWithAttrsList::iterator I=$4->begin(), E=$4->end(); I != E; ++I) { + Params.push_back(I->Ty->get()); + if (I->Ty->get() != Type::VoidTy) + Attrs.push_back(I->Attrs); + } bool isVarArg = Params.size() && Params.back() == Type::VoidTy; if (isVarArg) Params.pop_back(); - $$ = new PATypeHolder(HandleUpRefs(FunctionType::get(*$1,Params,isVarArg))); - delete $3; // Delete the argument list - delete $1; // Delete the return type handle + FunctionType *FT = FunctionType::get(*$1, Params, isVarArg, Attrs); + delete $4; // Delete the argument list + delete $1; // Delete the return type handle + $$ = new PATypeHolder(HandleUpRefs(FT)); CHECK_FOR_ERROR } - | '[' EUINT64VAL 'x' UpRTypes ']' { // Sized array type? + | VOID OptParamAttrs '(' ArgTypeListI ')' { + std::vector Params; + std::vector Attrs; + Attrs.push_back($2); + for (TypeWithAttrsList::iterator I=$4->begin(), E=$4->end(); I != E; ++I) { + Params.push_back(I->Ty->get()); + if (I->Ty->get() != Type::VoidTy) + Attrs.push_back(I->Attrs); + } + bool isVarArg = Params.size() && Params.back() == Type::VoidTy; + if (isVarArg) Params.pop_back(); + + FunctionType *FT = FunctionType::get($1, Params, isVarArg, Attrs); + delete $4; // Delete the argument list + $$ = new PATypeHolder(HandleUpRefs(FT)); + CHECK_FOR_ERROR + } + + | '[' EUINT64VAL 'x' Types ']' { // Sized array type? $$ = new PATypeHolder(HandleUpRefs(ArrayType::get(*$4, (unsigned)$2))); delete $4; CHECK_FOR_ERROR } - | '<' EUINT64VAL 'x' UpRTypes '>' { // Packed array type? + | '<' EUINT64VAL 'x' Types '>' { // Packed array type? const llvm::Type* ElemTy = $4->get(); if ((unsigned)$2 != $2) GEN_ERROR("Unsigned result not equal to signed result"); @@ -1231,39 +1252,72 @@ UpRTypes : '\\' EUINT64VAL { // Type UpReference $$ = new PATypeHolder(StructType::get(std::vector(), true)); CHECK_FOR_ERROR } - | UpRTypes '*' { // Pointer type? - if (*$1 == Type::LabelTy) - GEN_ERROR("Cannot form a pointer to a basic block"); - $$ = new PATypeHolder(HandleUpRefs(PointerType::get(*$1))); - delete $1; - CHECK_FOR_ERROR - }; + ; -// TypeList - Used for struct declarations and as a basis for function type -// declaration type lists -// -TypeListI : UpRTypes { - $$ = new std::list(); - $$->push_back(*$1); delete $1; +ArgType + : Types OptParamAttrs { + $$.Ty = $1; + $$.Attrs = $2; + } + ; + +ResultType + : Types OptParamAttrs { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); + if (!(*$1)->isFirstClassType()) + GEN_ERROR("LLVM functions cannot return aggregate types!"); + $$.Ty = $1; + $$.Attrs = $2; + } + | VOID OptParamAttrs { + $$.Ty = new PATypeHolder(Type::VoidTy); + $$.Attrs = $2; + } + ; + +ArgTypeList : ArgType { + $$ = new TypeWithAttrsList(); + $$->push_back($1); CHECK_FOR_ERROR } - | TypeListI ',' UpRTypes { - ($$=$1)->push_back(*$3); delete $3; + | ArgTypeList ',' ArgType { + ($$=$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); +ArgTypeListI + : ArgTypeList + | ArgTypeList ',' DOTDOTDOT { + $$=$1; + TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; + TWA.Ty = new PATypeHolder(Type::VoidTy); + $$->push_back(TWA); CHECK_FOR_ERROR } | DOTDOTDOT { - ($$ = new std::list())->push_back(Type::VoidTy); + $$ = new TypeWithAttrsList; + TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; + TWA.Ty = new PATypeHolder(Type::VoidTy); + $$->push_back(TWA); CHECK_FOR_ERROR } | /*empty*/ { + $$ = new TypeWithAttrsList(); + CHECK_FOR_ERROR + }; + +// TypeList - Used for struct declarations and as a basis for function type +// declaration type lists +// +TypeListI : Types { $$ = new std::list(); + $$->push_back(*$1); delete $1; + CHECK_FOR_ERROR + } + | TypeListI ',' Types { + ($$=$1)->push_back(*$3); delete $3; CHECK_FOR_ERROR }; @@ -1274,6 +1328,8 @@ ArgTypeListI : TypeListI // ResolvedVal, ValueRef and ConstValueRef productions. // ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); const ArrayType *ATy = dyn_cast($1->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + @@ -1300,6 +1356,8 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr CHECK_FOR_ERROR } | Types '[' ']' { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); const ArrayType *ATy = dyn_cast($1->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + @@ -1314,6 +1372,8 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr CHECK_FOR_ERROR } | Types 'c' STRINGCONSTANT { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); const ArrayType *ATy = dyn_cast($1->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + @@ -1327,13 +1387,10 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr itostr((int)(EndStr-$3)) + " when array has size " + itostr(NumElements) + "!"); std::vector Vals; - if (ETy == Type::SByteTy) { - for (signed char *C = (signed char *)$3; C != (signed char *)EndStr; ++C) - Vals.push_back(ConstantInt::get(ETy, *C)); - } else if (ETy == Type::UByteTy) { + if (ETy == Type::Int8Ty) { for (unsigned char *C = (unsigned char *)$3; - C != (unsigned char*)EndStr; ++C) - Vals.push_back(ConstantInt::get(ETy, *C)); + C != (unsigned char*)EndStr; ++C) + Vals.push_back(ConstantInt::get(ETy, *C)); } else { free($3); GEN_ERROR("Cannot build string arrays of non byte sized elements!"); @@ -1344,6 +1401,8 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr CHECK_FOR_ERROR } | Types '<' ConstVector '>' { // Nonempty unsized arr + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); const PackedType *PTy = dyn_cast($1->get()); if (PTy == 0) GEN_ERROR("Cannot make packed constant with type: '" + @@ -1391,6 +1450,8 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr CHECK_FOR_ERROR } | Types '{' '}' { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); const StructType *STy = dyn_cast($1->get()); if (STy == 0) GEN_ERROR("Cannot make struct constant with type: '" + @@ -1404,6 +1465,8 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr CHECK_FOR_ERROR } | Types NULL_TOK { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); const PointerType *PTy = dyn_cast($1->get()); if (PTy == 0) GEN_ERROR("Cannot make null pointer constant with type: '" + @@ -1414,11 +1477,15 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr CHECK_FOR_ERROR } | Types UNDEF { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); $$ = UndefValue::get($1->get()); delete $1; CHECK_FOR_ERROR } | Types SymbolicValueRef { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); const PointerType *Ty = dyn_cast($1->get()); if (Ty == 0) GEN_ERROR("Global const reference must be a pointer type!"); @@ -1480,6 +1547,8 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr CHECK_FOR_ERROR } | Types ConstExpr { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); if ($1->get() != $2->getType()) GEN_ERROR("Mismatched types for constant expression!"); $$ = $2; @@ -1487,6 +1556,8 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr CHECK_FOR_ERROR } | Types ZEROINITIALIZER { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); const Type *Ty = $1->get(); if (isa(Ty) || Ty == Type::LabelTy || isa(Ty)) GEN_ERROR("Cannot create a null initialized value of this type!"); @@ -1494,25 +1565,13 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr delete $1; CHECK_FOR_ERROR } - | SIntType ESINT64VAL { // integral constants - if (!ConstantInt::isValueValidForType($1, $2)) - GEN_ERROR("Constant value doesn't fit in type!"); - $$ = ConstantInt::get($1, $2); - CHECK_FOR_ERROR - } - | SIntType EUINT64VAL { // integral constants - if (!ConstantInt::isValueValidForType($1, $2)) - GEN_ERROR("Constant value doesn't fit in type!"); - $$ = ConstantInt::get($1, $2); - CHECK_FOR_ERROR - } - | UIntType EUINT64VAL { // integral constants + | IntType ESINT64VAL { // integral constants if (!ConstantInt::isValueValidForType($1, $2)) GEN_ERROR("Constant value doesn't fit in type!"); $$ = ConstantInt::get($1, $2); CHECK_FOR_ERROR } - | UIntType ESINT64VAL { + | IntType EUINT64VAL { // integral constants if (!ConstantInt::isValueValidForType($1, $2)) GEN_ERROR("Constant value doesn't fit in type!"); $$ = ConstantInt::get($1, $2); @@ -1535,6 +1594,8 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr ConstExpr: CastOps '(' ConstVal TO Types ')' { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$5)->getDescription()); Constant *Val = $3; const Type *Ty = $5->get(); if (!Val->getType()->isFirstClassType()) @@ -1603,8 +1664,8 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' { $$ = ConstantExpr::getFCmp($2, $4, $6); } | ShiftOps '(' ConstVal ',' ConstVal ')' { - if ($5->getType() != Type::UByteTy) - GEN_ERROR("Shift count for shift constant must be unsigned byte!"); + if ($5->getType() != Type::Int8Ty) + GEN_ERROR("Shift count for shift constant must be i8 type!"); if (!$3->getType()->isInteger()) GEN_ERROR("Shift constant expression requires integer operand!"); CHECK_FOR_ERROR; @@ -1695,7 +1756,9 @@ Definition } CHECK_FOR_ERROR } - | OptAssign TYPE TypesV { + | OptAssign TYPE Types { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); // Eagerly resolve types. This is not an optimization, this is a // requirement that is due to the fact that we could have this: // @@ -1717,6 +1780,17 @@ Definition delete $3; CHECK_FOR_ERROR } + | OptAssign TYPE VOID { + ResolveTypeTo($1, $3); + + if (!setTypeName($3, $1) && !$1) { + CHECK_FOR_ERROR + // If this is a named type that is not a redefinition, add it to the slot + // table. + CurModule.Types.push_back($3); + } + CHECK_FOR_ERROR + } | OptAssign GlobalType ConstVal { /* "Externally Visible" Linkage */ if ($3 == 0) GEN_ERROR("Global value initializer is not a constant!"); @@ -1735,6 +1809,8 @@ Definition CurGV = 0; } | OptAssign GVExternalLinkage GlobalType Types { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$4)->getDescription()); CurGV = ParseGlobalVariable($1, $2, $3, *$4, 0); CHECK_FOR_ERROR delete $4; @@ -1813,23 +1889,24 @@ LibList : LibList ',' STRINGCONSTANT { Name : VAR_ID | STRINGCONSTANT; OptName : Name | /*empty*/ { $$ = 0; }; -ArgVal : Types OptName { - if (*$1 == Type::VoidTy) - GEN_ERROR("void typed arguments are invalid!"); - $$ = new std::pair($1, $2); - CHECK_FOR_ERROR -}; - -ArgListH : ArgListH ',' ArgVal { +ArgListH : ArgListH ',' Types OptParamAttrs OptName { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); + if (*$3 == Type::VoidTy) + GEN_ERROR("void typed arguments are invalid!"); + ArgListEntry E; E.Attrs = $4; E.Ty = $3; E.Name = $5; $$ = $1; - $1->push_back(*$3); - delete $3; + $1->push_back(E); CHECK_FOR_ERROR } - | ArgVal { - $$ = new std::vector >(); - $$->push_back(*$1); - delete $1; + | Types OptParamAttrs OptName { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); + if (*$1 == Type::VoidTy) + GEN_ERROR("void typed arguments are invalid!"); + ArgListEntry E; E.Attrs = $2; E.Ty = $1; E.Name = $3; + $$ = new ArgListType; + $$->push_back(E); CHECK_FOR_ERROR }; @@ -1839,13 +1916,20 @@ ArgList : ArgListH { } | ArgListH ',' DOTDOTDOT { $$ = $1; - $$->push_back(std::pair(new PATypeHolder(Type::VoidTy), 0)); + struct ArgListEntry E; + E.Ty = new PATypeHolder(Type::VoidTy); + E.Name = 0; + E.Attrs = FunctionType::NoAttributeSet; + $$->push_back(E); CHECK_FOR_ERROR } | DOTDOTDOT { - $$ = new std::vector >(); - $$->push_back(std::make_pair(new PATypeHolder(Type::VoidTy), (char*)0)); + $$ = new ArgListType; + struct ArgListEntry E; + E.Ty = new PATypeHolder(Type::VoidTy); + E.Name = 0; + E.Attrs = FunctionType::NoAttributeSet; + $$->push_back(E); CHECK_FOR_ERROR } | /* empty */ { @@ -1853,28 +1937,31 @@ ArgList : ArgListH { CHECK_FOR_ERROR }; -FunctionHeaderH : OptCallingConv TypesV Name '(' ArgList ')' +FunctionHeaderH : OptCallingConv ResultType Name '(' ArgList ')' OptSection OptAlign { UnEscapeLexed($3); std::string FunctionName($3); free($3); // Free strdup'd memory! - if (!(*$2)->isFirstClassType() && *$2 != Type::VoidTy) - GEN_ERROR("LLVM functions cannot return aggregate types!"); - std::vector ParamTypeList; + std::vector ParamAttrs; + ParamAttrs.push_back($2.Attrs); if ($5) { // If there are arguments... - for (std::vector >::iterator I = $5->begin(); - I != $5->end(); ++I) - ParamTypeList.push_back(I->first->get()); + for (ArgListType::iterator I = $5->begin(); I != $5->end(); ++I) { + const Type* Ty = I->Ty->get(); + ParamTypeList.push_back(Ty); + if (Ty != Type::VoidTy) + ParamAttrs.push_back(I->Attrs); + } } bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy; if (isVarArg) ParamTypeList.pop_back(); - const FunctionType *FT = FunctionType::get(*$2, ParamTypeList, isVarArg); + FunctionType *FT = FunctionType::get(*$2.Ty, ParamTypeList, isVarArg, + ParamAttrs); const PointerType *PFT = PointerType::get(FT); - delete $2; + delete $2.Ty; ValID ID; if (!FunctionName.empty()) { @@ -1928,19 +2015,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&& + assert($5->back().Ty->get() == Type::VoidTy && $5->back().Name == 0&& "Not a varargs marker!"); - delete $5->back().first; + delete $5->back().Ty; $5->pop_back(); // Delete the last entry } Function::arg_iterator ArgIt = Fn->arg_begin(); - for (std::vector >::iterator I = $5->begin(); - I != $5->end(); ++I, ++ArgIt) { - delete I->first; // Delete the typeholder... - - setValueName(ArgIt, I->second); // Insert arg into symtab... + unsigned Idx = 1; + for (ArgListType::iterator I = $5->begin(); I != $5->end(); ++I, ++ArgIt) { + delete I->Ty; // Delete the typeholder... + setValueName(ArgIt, I->Name); // Insert arg into symtab... CHECK_FOR_ERROR InsertValue(ArgIt); + Idx++; } delete $5; // We're now done with the argument list @@ -1950,7 +2037,7 @@ FunctionHeaderH : OptCallingConv TypesV Name '(' ArgList ')' BEGIN : BEGINTOK | '{'; // Allow BEGIN or '{' to start a function -FunctionHeader : FunctionLinkage FunctionHeaderH BEGIN { +FunctionHeader : FunctionDefineLinkage FunctionHeaderH BEGIN { $$ = CurFun.CurrentFunction; // Make sure that we keep track of the linkage type even if there was a @@ -1965,7 +2052,8 @@ Function : BasicBlockList END { CHECK_FOR_ERROR }; -FunctionProto : FnDeclareLinkage FunctionHeaderH { +FunctionProto : FunctionDeclareLinkage FunctionHeaderH { + CurFun.CurrentFunction->setLinkage($1); $$ = CurFun.CurrentFunction; CurFun.FunctionDone(); CHECK_FOR_ERROR @@ -2076,9 +2164,13 @@ 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; + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); + $$ = getVal(*$1, $2); + delete $1; CHECK_FOR_ERROR - }; + } + ; BasicBlockList : BasicBlockList BasicBlock { $$ = $1; @@ -2188,25 +2280,27 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... $$ = S; CHECK_FOR_ERROR } - | INVOKE OptCallingConv TypesV ValueRef '(' ValueRefListE ')' + | INVOKE OptCallingConv ResultType ValueRef '(' ValueRefList ')' TO LABEL ValueRef UNWIND LABEL ValueRef { - const PointerType *PFTy; - const FunctionType *Ty; - if (!(PFTy = dyn_cast($3->get())) || + // Handle the short syntax + const PointerType *PFTy = 0; + const FunctionType *Ty = 0; + if (!(PFTy = dyn_cast($3.Ty->get())) || !(Ty = dyn_cast(PFTy->getElementType()))) { // Pull out the types of all of the arguments... std::vector ParamTypes; - if ($6) { - for (std::vector::iterator I = $6->begin(), E = $6->end(); - I != E; ++I) - ParamTypes.push_back((*I)->getType()); + FunctionType::ParamAttrsList ParamAttrs; + ParamAttrs.push_back($3.Attrs); + for (ValueRefList::iterator I = $6->begin(), E = $6->end(); I != E; ++I) { + const Type *Ty = I->Val->getType(); + if (Ty == Type::VoidTy) + GEN_ERROR("Short call syntax cannot be used with varargs"); + ParamTypes.push_back(Ty); + ParamAttrs.push_back(I->Attrs); } - bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; - if (isVarArg) ParamTypes.pop_back(); - - Ty = FunctionType::get($3->get(), ParamTypes, isVarArg); + Ty = FunctionType::get($3.Ty->get(), ParamTypes, false, ParamAttrs); PFTy = PointerType::get(Ty); } @@ -2217,30 +2311,39 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... BasicBlock *Except = getBBVal($13); CHECK_FOR_ERROR - // Create the call node... - if (!$6) { // Has no arguments? - $$ = new InvokeInst(V, Normal, Except, std::vector()); + // Check the arguments + ValueList Args; + if ($6->empty()) { // Has no arguments? + // Make sure no arguments is a good thing! + if (Ty->getNumParams() != 0) + GEN_ERROR("No arguments passed to a function that " + "expects arguments!"); } else { // Has arguments? // Loop through FunctionType's arguments and ensure they are specified // correctly! - // FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - std::vector::iterator ArgI = $6->begin(), ArgE = $6->end(); + ValueRefList::iterator ArgI = $6->begin(), ArgE = $6->end(); - for (; ArgI != ArgE && I != E; ++ArgI, ++I) - if ((*ArgI)->getType() != *I) - GEN_ERROR("Parameter " +(*ArgI)->getName()+ " is not of type '" + + for (; ArgI != ArgE && I != E; ++ArgI, ++I) { + if (ArgI->Val->getType() != *I) + GEN_ERROR("Parameter " + ArgI->Val->getName()+ " is not of type '" + (*I)->getDescription() + "'!"); + Args.push_back(ArgI->Val); + } - if (I != E || (ArgI != ArgE && !Ty->isVarArg())) + if (Ty->isVarArg()) { + if (I == E) + for (; ArgI != ArgE; ++ArgI) + Args.push_back(ArgI->Val); // push the remaining varargs + } else if (I != E || ArgI != ArgE) GEN_ERROR("Invalid number of parameters detected!"); - - $$ = new InvokeInst(V, Normal, Except, *$6); } - cast($$)->setCallingConv($2); - - delete $3; + + // Create the InvokeInst + InvokeInst *II = new InvokeInst(V, Normal, Except, Args); + II->setCallingConv($2); + $$ = II; delete $6; CHECK_FOR_ERROR } @@ -2289,6 +2392,8 @@ Inst : OptAssign InstVal { }; PHIList : Types '[' ValueRef ',' ValueRef ']' { // Used for PHI nodes + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); $$ = new std::list >(); Value* tmpVal = getVal(*$1, $3); CHECK_FOR_ERROR @@ -2307,18 +2412,31 @@ PHIList : Types '[' ValueRef ',' ValueRef ']' { // Used for PHI nodes }; -ValueRefList : ResolvedVal { // Used for call statements, and memory insts... - $$ = new std::vector(); - $$->push_back($1); +ValueRefList : Types ValueRef OptParamAttrs { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); + // Used for call and invoke instructions + $$ = new ValueRefList(); + ValueRefListEntry E; E.Attrs = $3; E.Val = getVal($1->get(), $2); + $$->push_back(E); } - | ValueRefList ',' ResolvedVal { + | ValueRefList ',' Types ValueRef OptParamAttrs { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); $$ = $1; - $1->push_back($3); + ValueRefListEntry E; E.Attrs = $5; E.Val = getVal($3->get(), $4); + $$->push_back(E); CHECK_FOR_ERROR - }; + } + | /*empty*/ { $$ = new ValueRefList(); }; -// ValueRefListE - Just like ValueRefList, except that it may also be empty! -ValueRefListE : ValueRefList | /*empty*/ { $$ = 0; }; +IndexList // Used for gep instructions and constant expressions + : /*empty*/ { $$ = new std::vector(); }; + | IndexList ',' ResolvedVal { + $$ = $1; + $$->push_back($3); + CHECK_FOR_ERROR + } OptTailCall : TAIL CALL { $$ = true; @@ -2330,6 +2448,8 @@ OptTailCall : TAIL CALL { }; InstVal : ArithmeticOps Types ValueRef ',' ValueRef { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); if (!(*$2)->isInteger() && !(*$2)->isFloatingPoint() && !isa((*$2).get())) GEN_ERROR( @@ -2349,6 +2469,8 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { delete $2; } | LogicalOps Types ValueRef ',' ValueRef { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); if (!(*$2)->isIntegral()) { if (!isa($2->get()) || !cast($2->get())->getElementType()->isIntegral()) @@ -2364,6 +2486,8 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { delete $2; } | ICMP IPredicates Types ValueRef ',' ValueRef { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); if (isa((*$3).get())) GEN_ERROR("Packed types not supported by icmp instruction"); Value* tmpVal1 = getVal(*$3, $4); @@ -2375,6 +2499,8 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { GEN_ERROR("icmp operator returned null!"); } | FCMP FPredicates Types ValueRef ',' ValueRef { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); if (isa((*$3).get())) GEN_ERROR("Packed types not supported by fcmp instruction"); Value* tmpVal1 = getVal(*$3, $4); @@ -2399,8 +2525,8 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { CHECK_FOR_ERROR } | ShiftOps ResolvedVal ',' ResolvedVal { - if ($4->getType() != Type::UByteTy) - GEN_ERROR("Shift amount must be ubyte!"); + if ($4->getType() != Type::Int8Ty) + GEN_ERROR("Shift amount must be i8 type!"); if (!$2->getType()->isInteger()) GEN_ERROR("Shift constant expression requires integer operand!"); CHECK_FOR_ERROR; @@ -2408,6 +2534,8 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { CHECK_FOR_ERROR } | CastOps ResolvedVal TO Types { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$4)->getDescription()); Value* Val = $2; const Type* Ty = $4->get(); if (!Val->getType()->isFirstClassType()) @@ -2415,7 +2543,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { Val->getType()->getDescription() + "'!"); if (!Ty->isFirstClassType()) GEN_ERROR("cast to a non-primitive type: '" + Ty->getDescription() +"'!"); - $$ = CastInst::create($1, $2, $4->get()); + $$ = CastInst::create($1, Val, $4->get()); delete $4; } | SELECT ResolvedVal ',' ResolvedVal ',' ResolvedVal { @@ -2427,6 +2555,8 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { CHECK_FOR_ERROR } | VAARG ResolvedVal ',' Types { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$4)->getDescription()); $$ = new VAArgInst($2, *$4); delete $4; CHECK_FOR_ERROR @@ -2464,62 +2594,65 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { delete $2; // Free the list... CHECK_FOR_ERROR } - | OptTailCall OptCallingConv TypesV ValueRef '(' ValueRefListE ')' { + | OptTailCall OptCallingConv ResultType ValueRef '(' ValueRefList ')' { + + // Handle the short syntax const PointerType *PFTy = 0; const FunctionType *Ty = 0; - - if (!(PFTy = dyn_cast($3->get())) || + if (!(PFTy = dyn_cast($3.Ty->get())) || !(Ty = dyn_cast(PFTy->getElementType()))) { // Pull out the types of all of the arguments... std::vector ParamTypes; - if ($6) { - for (std::vector::iterator I = $6->begin(), E = $6->end(); - I != E; ++I) - ParamTypes.push_back((*I)->getType()); + FunctionType::ParamAttrsList ParamAttrs; + ParamAttrs.push_back($3.Attrs); + for (ValueRefList::iterator I = $6->begin(), E = $6->end(); I != E; ++I) { + const Type *Ty = I->Val->getType(); + if (Ty == Type::VoidTy) + GEN_ERROR("Short call syntax cannot be used with varargs"); + ParamTypes.push_back(Ty); + ParamAttrs.push_back(I->Attrs); } - bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; - if (isVarArg) ParamTypes.pop_back(); - - if (!(*$3)->isFirstClassType() && *$3 != Type::VoidTy) - GEN_ERROR("LLVM functions cannot return aggregate types!"); - - Ty = FunctionType::get($3->get(), ParamTypes, isVarArg); + Ty = FunctionType::get($3.Ty->get(), ParamTypes, false, ParamAttrs); PFTy = PointerType::get(Ty); } Value *V = getVal(PFTy, $4); // Get the function we're calling... CHECK_FOR_ERROR - // Create the call node... - if (!$6) { // Has no arguments? + // Check the arguments + ValueList Args; + if ($6->empty()) { // Has no arguments? // Make sure no arguments is a good thing! if (Ty->getNumParams() != 0) GEN_ERROR("No arguments passed to a function that " "expects arguments!"); - - $$ = new CallInst(V, std::vector()); } else { // Has arguments? // Loop through FunctionType's arguments and ensure they are specified // correctly! // FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - std::vector::iterator ArgI = $6->begin(), ArgE = $6->end(); + ValueRefList::iterator ArgI = $6->begin(), ArgE = $6->end(); - for (; ArgI != ArgE && I != E; ++ArgI, ++I) - if ((*ArgI)->getType() != *I) - GEN_ERROR("Parameter " +(*ArgI)->getName()+ " is not of type '" + + for (; ArgI != ArgE && I != E; ++ArgI, ++I) { + if (ArgI->Val->getType() != *I) + GEN_ERROR("Parameter " + ArgI->Val->getName()+ " is not of type '" + (*I)->getDescription() + "'!"); - - if (I != E || (ArgI != ArgE && !Ty->isVarArg())) + Args.push_back(ArgI->Val); + } + if (Ty->isVarArg()) { + if (I == E) + for (; ArgI != ArgE; ++ArgI) + Args.push_back(ArgI->Val); // push the remaining varargs + } else if (I != E || ArgI != ArgE) GEN_ERROR("Invalid number of parameters detected!"); - - $$ = new CallInst(V, *$6); } - cast($$)->setTailCall($1); - cast($$)->setCallingConv($2); - delete $3; + // Create the call node + CallInst *CI = new CallInst(V, Args); + CI->setTailCall($1); + CI->setCallingConv($2); + $$ = CI; delete $6; CHECK_FOR_ERROR } @@ -2528,16 +2661,6 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { CHECK_FOR_ERROR }; - -// IndexList - List of indices for GEP based instructions... -IndexList : ',' ValueRefList { - $$ = $2; - CHECK_FOR_ERROR - } | /* empty */ { - $$ = new std::vector(); - CHECK_FOR_ERROR - }; - OptVolatile : VOLATILE { $$ = true; CHECK_FOR_ERROR @@ -2550,22 +2673,30 @@ OptVolatile : VOLATILE { MemoryInst : MALLOC Types OptCAlign { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); $$ = new MallocInst(*$2, 0, $3); delete $2; CHECK_FOR_ERROR } - | MALLOC Types ',' UINT ValueRef OptCAlign { + | MALLOC Types ',' INT32 ValueRef OptCAlign { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); Value* tmpVal = getVal($4, $5); CHECK_FOR_ERROR $$ = new MallocInst(*$2, tmpVal, $6); delete $2; } | ALLOCA Types OptCAlign { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); $$ = new AllocaInst(*$2, 0, $3); delete $2; CHECK_FOR_ERROR } - | ALLOCA Types ',' UINT ValueRef OptCAlign { + | ALLOCA Types ',' INT32 ValueRef OptCAlign { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); Value* tmpVal = getVal($4, $5); CHECK_FOR_ERROR $$ = new AllocaInst(*$2, tmpVal, $6); @@ -2580,6 +2711,8 @@ MemoryInst : MALLOC Types OptCAlign { } | OptVolatile LOAD Types ValueRef { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); if (!isa($3->get())) GEN_ERROR("Can't load from nonpointer type: " + (*$3)->getDescription()); @@ -2592,6 +2725,8 @@ MemoryInst : MALLOC Types OptCAlign { delete $3; } | OptVolatile STORE ResolvedVal ',' Types ValueRef { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$5)->getDescription()); const PointerType *PT = dyn_cast($5->get()); if (!PT) GEN_ERROR("Can't store to a nonpointer type: " + @@ -2607,6 +2742,8 @@ MemoryInst : MALLOC Types OptCAlign { delete $5; } | GETELEMENTPTR Types ValueRef IndexList { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); if (!isa($2->get())) GEN_ERROR("getelementptr insn requires pointer operand!"); @@ -2623,6 +2760,33 @@ MemoryInst : MALLOC Types OptCAlign { %% +// common code from the two 'RunVMAsmParser' functions +static Module* RunParser(Module * M) { + + llvmAsmlineno = 1; // Reset the current line number... + CurModule.CurrentModule = M; +#if YYDEBUG + yydebug = Debug; +#endif + + // Check to make sure the parser succeeded + if (yyparse()) { + if (ParserResult) + delete ParserResult; + return 0; + } + + // Check to make sure that parsing produced a result + if (!ParserResult) + return 0; + + // Reset ParserResult variable while saving its value for the result. + Module *Result = ParserResult; + ParserResult = 0; + + return Result; +} + void llvm::GenerateError(const std::string &message, int LineNo) { if (LineNo == -1) LineNo = llvmAsmlineno; // TODO: column number in exception -- cgit v1.1