Author: leo
Date: Thu Feb 2 13:57:28 2006
New Revision: 11408
Modified:
trunk/compilers/imcc/imcc.y
trunk/compilers/imcc/imcparser.c
trunk/compilers/imcc/instructions.c
trunk/compilers/imcc/reg_alloc.c
Log:
Register allocation - work around bug described in #38406
* r11402 has revealed obviously a weird bug (sub SymRegs seem
to be shared, all pointing to the most recent pcc_sub call
structure), which caused some registers not to be allocated,
if these weren't used elsewhere
This is fixed so far, pge/mklib.pir is working again
Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y (original)
+++ trunk/compilers/imcc/imcc.y Thu Feb 2 13:57:28 2006
@@ -1096,11 +1096,11 @@ assignment:
cur_call = NULL;
$$ = 0;
}
- |
+ | '('
{
$<i>$ = IMCC_create_itcall_label(interp);
}
- '(' targetlist ')' '=' the_sub '(' arglist ')'
+ targetlist ')' '=' the_sub '(' arglist ')'
{
IMCC_itcall_sub(interp, $6);
cur_call = NULL;
Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c (original)
+++ trunk/compilers/imcc/imcparser.c Thu Feb 2 13:57:28 2006
@@ -794,7 +794,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 41
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 733
+#define YYLAST 737
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 132
@@ -973,8 +973,8 @@ static const short yyrhs[] =
117, 63, 102, -1, 229, 117, 62, 245, -1, 62,
245, 117, 237, -1, 21, 229, 72, 237, -1, 21,
229, 72, 237, 72, 237, -1, 21, 229, 72, 237,
- 118, 238, 119, -1, 229, 117, 219, -1, -1, 212,
- 120, 226, 121, 117, 217, 120, 221, 121, -1, 213,
+ 118, 238, 119, -1, 229, 117, 219, -1, -1, 120,
+ 212, 226, 121, 117, 217, 120, 221, 121, -1, 213,
-1, 215, -1, 216, -1, 229, 117, 14, -1, -1,
67, 214, 120, 226, 121, -1, 229, 33, 237, -1,
229, 34, 237, -1, 229, 35, 237, -1, 229, 36,
@@ -1033,7 +1033,7 @@ static const unsigned short yyrline[] =
1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1045, 1047,
1049, 1051, 1053, 1055, 1057, 1059, 1061, 1063, 1065, 1067,
1069, 1071, 1073, 1075, 1077, 1080, 1082, 1086, 1088, 1090,
- 1093, 1100, 1100, 1108, 1109, 1110, 1111, 1115, 1115, 1121,
+ 1093, 1100, 1099, 1108, 1109, 1110, 1111, 1115, 1115, 1121,
1123, 1125, 1127, 1129, 1131, 1133, 1135, 1137, 1139, 1141,
1143, 1145, 1150, 1157, 1158, 1159, 1164, 1165, 1166, 1169,
1170, 1175, 1174, 1184, 1185, 1191, 1197, 1199, 1203, 1207,
@@ -1221,38 +1221,38 @@ static const unsigned short yydefact[] =
142, 0, 0, 139, 144, 137, 0, 291, 0, 141,
52, 49, 138, 171, 140, 75, 54, 0, 0, 0,
0, 0, 0, 0, 0, 156, 0, 159, 162, 0,
- 0, 0, 227, 0, 117, 118, 243, 244, 286, 161,
- 169, 0, 170, 123, 0, 152, 0, 223, 224, 225,
+ 0, 0, 227, 0, 117, 118, 243, 244, 286, 221,
+ 161, 169, 0, 170, 123, 0, 152, 223, 224, 225,
251, 168, 153, 245, 110, 0, 165, 0, 0, 0,
0, 167, 0, 154, 155, 0, 0, 0, 0, 322,
- 323, 0, 128, 164, 245, 130, 0, 76, 166, 121,
- 149, 269, 0, 0, 0, 0, 0, 0, 0, 0,
+ 323, 0, 128, 164, 245, 130, 0, 76, 166, 269,
+ 121, 149, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 250, 249, 0, 303,
0, 55, 0, 0, 0, 278, 279, 280, 281, 282,
283, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 132, 132, 269, 102, 124, 0, 267,
- 0, 110, 253, 229, 230, 231, 232, 235, 236, 237,
+ 0, 0, 0, 132, 132, 269, 102, 0, 267, 0,
+ 110, 124, 253, 229, 230, 231, 232, 235, 236, 237,
238, 234, 233, 239, 240, 241, 226, 0, 0, 0,
320, 286, 0, 0, 0, 220, 301, 179, 0, 247,
248, 246, 112, 113, 114, 115, 111, 110, 0, 274,
276, 0, 0, 275, 277, 0, 217, 150, 157, 158,
0, 0, 216, 320, 0, 133, 259, 0, 0, 80,
- 0, 0, 0, 0, 264, 320, 0, 255, 210, 211,
+ 0, 0, 0, 264, 0, 320, 0, 255, 210, 211,
215, 214, 242, 180, 181, 182, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 303, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 56, 272, 0, 273, 0, 0, 303, 0,
0, 0, 0, 0, 129, 258, 131, 228, 0, 0,
- 0, 0, 125, 0, 119, 120, 122, 0, 268, 0,
- 265, 0, 0, 0, 252, 0, 303, 0, 303, 188,
+ 0, 0, 268, 0, 265, 0, 125, 0, 119, 120,
+ 122, 0, 0, 0, 252, 0, 303, 0, 303, 188,
197, 198, 202, 191, 192, 193, 196, 194, 195, 186,
199, 200, 201, 190, 0, 184, 205, 183, 185, 187,
189, 203, 204, 0, 0, 270, 271, 218, 0, 151,
160, 163, 134, 320, 135, 261, 262, 260, 104, 0,
- 0, 0, 0, 78, 103, 259, 126, 0, 0, 257,
+ 0, 0, 0, 78, 103, 0, 0, 259, 126, 257,
320, 254, 208, 0, 212, 0, 206, 207, 116, 219,
- 0, 0, 81, 0, 0, 0, 0, 105, 0, 127,
- 266, 253, 0, 209, 213, 136, 0, 96, 0, 97,
+ 0, 0, 81, 0, 0, 0, 0, 105, 0, 266,
+ 253, 127, 0, 209, 213, 136, 0, 96, 0, 97,
99, 0, 98, 0, 0, 79, 0, 256, 263, 0,
0, 0, 108, 0, 77, 0, 222, 95, 101, 100,
0, 110, 106, 0, 107, 109
@@ -1265,12 +1265,12 @@ static const short yydefgoto[] =
63, 95, 64, 65, 102, 103, 129, 150, 19, 39,
66, 20, 21, 28, 91, 166, 180, 191, 198, 206,
139, 118, 119, 164, 165, 192, 22, 38, 94, 168,
- 230, 316, 527, 440, 120, 121, 122, 503, 379, 441,
- 544, 555, 560, 291, 356, 231, 446, 232, 317, 380,
- 447, 233, 313, 314, 374, 193, 194, 195, 68, 69,
- 70, 204, 368, 234, 255, 257, 258, 36, 37, 235,
- 236, 237, 266, 238, 239, 240, 290, 241, 272, 386,
- 375, 435, 497, 319, 320, 242, 302, 85, 152, 153,
+ 231, 316, 527, 440, 120, 121, 122, 503, 379, 441,
+ 544, 555, 560, 291, 356, 232, 450, 233, 321, 384,
+ 451, 234, 313, 314, 374, 193, 194, 195, 68, 69,
+ 70, 204, 368, 235, 255, 257, 258, 36, 37, 236,
+ 269, 237, 266, 238, 239, 240, 290, 241, 272, 386,
+ 375, 435, 497, 318, 319, 242, 302, 85, 152, 153,
154, 53, 54, 144, 155, 376, 48, 49, 87, 133,
88, 89, 90, 261
};
@@ -1280,80 +1280,80 @@ static const short yydefgoto[] =
#define YYPACT_NINF -319
static const short yypact[] =
{
- 13, -319, 38, -72, -53, -51, -319, -319, 171, -319,
- -319, 44, 70, 13, -319, -319, 109, -319, -319, -319,
- -319, -319, -319, 12, 116, 55, 62, -319, 27, 171,
- -319, -319, -319, -319, -319, -319, 49, -319, 51, -18,
- -319, -319, -319, -319, -319, -319, 37, 39, 35, 385,
- -319, -319, -319, -319, -319, 68, 54, -319, -319, -319,
- 175, -319, -319, -319, 106, -319, 86, -319, 19, 91,
- -319, -319, -319, -319, 182, -319, -319, -319, -319, -319,
- -319, -319, -319, -319, -319, -319, 110, -63, -319, -319,
- -319, 256, 77, 105, 256, 84, -319, -319, -319, 182,
- 96, -319, 201, 97, -319, -319, 182, -319, 385, -319,
- -319, -319, -319, -319, -319, 132, -319, 140, -319, -319,
- 213, 6, -319, 105, -319, 223, 494, -319, 137, 256,
- -319, 480, -319, 385, -319, 30, 113, -319, -319, 256,
- -319, -319, -319, -319, -319, 144, -319, 159, 173, -319,
- -319, 153, -319, 200, -319, -319, -319, 154, 155, -319,
- -319, -319, -319, -319, -46, -319, 270, -319, 270, 186,
- -319, -319, 158, -319, 480, -319, -319, 113, -319, -319,
- 3, 3, -319, -319, 160, -319, -319, -319, 291, -319,
- -319, 292, 224, 174, 91, -319, 229, -319, 171, -319,
- -319, -319, -319, 439, -319, -319, -319, 74, -59, 41,
- 89, 182, 294, 207, 208, -319, 211, 206, -319, -70,
- 410, 212, -319, 322, -319, -319, -319, -319, 480, -319,
- -319, 329, -319, -319, 332, -319, 217, -319, -319, -319,
- -319, -319, -319, 285, -319, 318, -319, 182, 101, 182,
- 198, -319, 279, -319, -319, 171, 280, 171, 171, -319,
- -319, 251, -319, -319, -52, -319, 257, -319, -319, -319,
- -319, 604, 258, 182, 182, 182, 182, 182, 182, 182,
- 182, 182, 182, 182, 182, 182, -319, -319, 320, -319,
- 205, 232, 277, 370, -59, -319, -319, -319, -319, -319,
- -319, -59, 182, 371, -59, -59, 182, 182, 283, 294,
- 286, 288, 182, 539, 539, 604, -319, -319, 367, -319,
- -32, -319, 553, -319, -319, -319, -319, -319, -319, -319,
- -319, -319, -319, -319, -319, -319, -319, 508, -70, 296,
- 284, 480, 182, 182, 182, -319, 61, 506, 287, -319,
- -319, -319, -319, -319, -319, 290, -319, -319, -59, -319,
- -319, 397, -59, -319, -319, 398, -47, -319, 339, -319,
- 298, 299, -319, 393, -28, -319, -319, -23, -22, 7,
- 20, 294, 613, 300, 232, 404, -13, -319, -45, -12,
- -319, -319, -319, -319, -319, -319, 182, 182, 182, 182,
- 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
- 182, -319, 182, 182, 182, 182, 182, 182, 182, 182,
- 308, 326, 232, -319, -59, -319, -59, 182, -319, 331,
- 105, 105, 182, 567, -319, 107, -319, -319, 182, 182,
- -31, 430, -319, 182, -319, -319, -319, 432, -319, 418,
- -319, 595, 182, 581, -319, 182, -319, 182, -319, -319,
+ 14, -319, 27, -55, -31, -7, -319, -319, 17, -319,
+ -319, 120, 133, 14, -319, -319, 136, -319, -319, -319,
+ -319, -319, -319, 35, 146, 81, 82, -319, -69, 17,
+ -319, -319, -319, -319, -319, -319, 54, -319, 57, 101,
+ -319, -319, -319, -319, -319, -319, 71, 53, 65, 235,
+ -319, -319, -319, -319, -319, 90, 76, -319, -319, -319,
+ 190, -319, -319, -319, 105, -319, 100, -319, 7, 104,
+ -319, -319, -319, -319, 507, -319, -319, -319, -319, -319,
+ -319, -319, -319, -319, -319, -319, 129, -60, -319, -319,
+ -319, 643, 93, 80, 643, 109, -319, -319, -319, 507,
+ 118, -319, 207, 97, -319, -319, 507, -319, 235, -319,
+ -319, -319, -319, -319, -319, 124, -319, 131, -319, -319,
+ 257, 6, -319, 80, -319, 258, 479, -319, 196, 643,
+ -319, 343, -319, 235, -319, 19, 113, -319, -319, 643,
+ -319, -319, -319, -319, -319, 154, -319, 169, 184, -319,
+ -319, 162, -319, 211, -319, -319, -319, 163, 164, -319,
+ -319, -319, -319, -319, -57, -319, 283, -319, 283, 191,
+ -319, -319, 177, -319, 343, -319, -319, 113, -319, -319,
+ 4, 4, -319, -319, 183, -319, -319, -319, 299, -319,
+ -319, 300, 234, 78, 104, -319, 238, -319, 17, -319,
+ -319, -319, -319, 405, -319, -319, -319, 46, -62, 38,
+ 72, 507, 149, 204, 206, -319, 216, 221, -319, 26,
+ 175, 193, -319, 325, -319, -319, -319, -319, 343, -319,
+ -319, -319, 326, -319, -319, 328, -319, -319, -319, -319,
+ -319, -319, -319, 281, -319, 317, -319, 507, 198, 507,
+ 233, -319, 273, -319, -319, 17, 275, 17, 17, -319,
+ -319, 231, -319, -319, -70, -319, 229, -319, -319, 302,
+ -319, -319, 230, 507, 507, 507, 507, 507, 507, 507,
+ 507, 507, 507, 507, 507, 507, -319, -319, 434, -319,
+ 594, 203, 249, 342, -62, -319, -319, -319, -319, -319,
+ -319, -62, 507, 358, -62, -62, 507, 507, 284, 149,
+ 285, 290, 507, 538, 538, 302, -319, 363, -319, -48,
+ -319, -319, 552, -319, -319, -319, -319, -319, -319, -319,
+ -319, -319, -319, -319, -319, -319, -319, 493, 26, 291,
+ 274, 343, 507, 507, 507, -319, -59, 505, 287, -319,
+ -319, -319, -319, -319, -319, 296, -319, -319, -62, -319,
+ -319, 397, -62, -319, -319, 400, -27, -319, 339, -319,
+ 303, 304, -319, 402, -42, -319, -319, -34, -22, -3,
+ 149, 608, 306, 203, 15, 404, -19, -319, -13, 40,
+ -319, -319, -319, -319, -319, -319, 507, 507, 507, 507,
+ 507, 507, 507, 507, 507, 507, 507, 507, 507, 507,
+ 507, -319, 507, 507, 507, 507, 507, 507, 507, 507,
+ 308, 323, 203, -319, -62, -319, -62, 507, -319, 329,
+ 80, 80, 507, 566, -319, 94, -319, -319, 507, 507,
+ 45, 426, -319, 416, -319, 279, -319, 507, -319, -319,
+ -319, 443, 507, 580, -319, 507, -319, 507, -319, -319,
-319, -319, -319, -319, -319, -319, -319, -319, -319, -319,
- -319, -319, -319, -319, 327, -319, -319, -319, -319, -319,
- -319, -319, -319, 182, 324, -319, -319, -319, 328, -319,
- -319, -319, -319, 419, -319, -319, 321, -319, -319, 444,
- 182, 182, 622, 91, -319, -319, -319, 294, 330, -319,
- 434, -319, -319, 336, -319, 337, -319, -319, -319, -319,
- 182, 357, -319, 8, 460, 9, 10, -319, 461, 107,
- -319, 553, 182, -319, -319, -319, 348, -319, 182, -319,
- -319, 182, -319, 182, -7, -319, -11, -319, -319, 466,
- 468, 469, -319, 294, -319, 470, -319, -319, -319, -319,
- 171, -319, -319, 373, 232, -319
+ -319, -319, -319, -319, 319, -319, -319, -319, -319, -319,
+ -319, -319, -319, 507, 335, -319, -319, -319, 340, -319,
+ -319, -319, -319, 440, -319, -319, 344, -319, -319, 458,
+ 507, 507, 617, 104, -319, 149, 345, -319, -319, -319,
+ 446, -319, -319, 349, -319, 350, -319, -319, -319, -319,
+ 507, 357, -319, 9, 469, 12, 22, -319, 470, -319,
+ 552, 94, 507, -319, -319, -319, 354, -319, 507, -319,
+ -319, 507, -319, 507, -2, -319, -14, -319, -319, 472,
+ 474, 475, -319, 149, -319, 477, -319, -319, -319, -319,
+ 17, -319, -319, 380, 203, -319
};
/* YYPGOTO[NTERM-NUM]. */
static const short yypgoto[] =
{
- -319, -319, -319, 463, -319, -319, -319, -319, -319, -319,
- 275, -319, -319, 415, -319, -319, -319, 139, -319, -319,
- -319, 2, -319, -319, -319, -319, 313, -319, -319, -319,
- -319, -319, -319, -319, 305, 306, -319, -319, -319, -319,
- -319, -319, -319, -319, -57, -319, 351, -319, -319, -319,
- -319, -319, -319, -318, -319, -319, -319, -319, -319, -319,
- -319, -319, -319, -319, 183, -319, -319, 309, 323, -319,
- -68, -319, -319, -319, -319, -319, -319, -29, 162, -319,
- -319, -319, -319, -319, -319, 52, -319, -204, -319, -24,
- -315, 14, -319, 133, 209, -319, 272, -116, 295, -319,
- 352, -319, 235, -180, 401, -43, -144, -319, -319, -319,
- -3, -319, -91, 190
+ -319, -319, -319, 478, -319, -319, -319, -319, -319, -319,
+ 280, -319, -319, 421, -319, -319, -319, 147, -319, -319,
+ -319, -10, -319, -319, -319, -319, 322, -319, -319, -319,
+ -319, -319, -319, -319, 310, 311, -319, -319, -319, -319,
+ -319, -319, -319, -319, -80, -319, 355, -319, -319, -319,
+ -319, -319, -319, -315, -319, -319, -319, -319, -319, -319,
+ -319, -319, -319, -319, 179, -319, -319, 309, 305, -319,
+ -68, -319, -319, -319, -319, -319, -319, -29, 172, -319,
+ -319, -319, -319, -319, -319, 56, -319, -192, -319, -20,
+ -318, 5, -319, 132, 199, -319, 267, -114, 292, -319,
+ 347, -319, 228, -201, 393, -43, -146, -319, -319, -319,
+ -61, -319, -91, 185
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -1363,158 +1363,158 @@ static const short yypgoto[] =
#define YYTABLE_NINF -246
static const short yytable[] =
{
- 55, 104, 124, 384, 5, 172, 86, 387, 187, 107,
- -83, 58, 537, 540, 542, 151, 263, 1, 438, 2,
- 552, 3, 4, -39, 442, 427, 177, 455, 246, 184,
- 259, 105, 140, 99, 25, 5, 260, 125, 6, 422,
- 382, 67, 7, 142, 433, 23, 500, 100, 40, 433,
- 382, 143, 501, 502, 26, 247, 127, 553, 151, 453,
- 457, 453, 286, 132, 287, 86, 67, 27, 108, 554,
- 41, 428, 148, 456, 8, 178, -70, 59, 138, -43,
- 538, 541, 543, 146, 345, 443, 60, 243, 146, 383,
- 86, 9, 439, 434, 61, 62, 252, 101, 436, 437,
- 444, -83, 445, 249, 264, 134, 458, 188, 454, 10,
- 556, 294, 151, 43, 359, 189, 190, 11, 494, 44,
- 45, 360, 495, 498, 363, 364, 496, 46, 5, 50,
- 156, 146, 157, 51, 47, 58, 158, 52, 511, 75,
- 76, 77, 78, 71, 79, 348, 72, 80, 81, 82,
- 83, 56, 84, 57, 73, 321, 295, 296, 297, 298,
- 299, 300, 159, 160, 161, 162, 248, 250, 251, 207,
- 92, 93, 346, 301, 350, 286, 244, 287, 423, 96,
- 245, -245, 425, 98, 106, 146, 59, 75, 76, 77,
- 78, 126, 79, 369, 123, 80, 81, 82, 83, 321,
- 84, 59, 128, -44, 293, 130, 303, 131, 304, 147,
- 60, 80, 81, 82, 83, 163, 387, 137, 61, 62,
- 30, 31, 32, 33, 34, 151, 308, 141, 310, 311,
+ 55, 104, 124, 172, 387, 383, 86, 246, 438, 187,
+ -83, -39, 107, 537, 125, 177, 540, 151, 1, 446,
+ 2, 99, 3, 4, 381, 552, 542, 184, 263, 67,
+ 433, 105, 140, 50, 23, 100, 5, 51, 433, 6,
+ 142, 52, 422, 7, 286, 427, 287, 134, 143, 148,
+ 381, 25, 247, 453, 67, 286, 127, 287, 453, 455,
+ 151, -245, 553, 132, 178, 86, 30, 31, 32, 33,
+ 34, 108, 156, 382, 554, 8, 26, -70, 138, 434,
+ 447, 538, 439, 146, 541, 101, 249, 436, 146, 243,
+ 86, 428, 9, 359, 543, 448, 345, 449, 252, 437,
+ 360, -83, 454, 363, 364, 456, 264, 556, 188, 495,
+ 10, 27, 457, 496, 151, 494, 189, 190, 11, 35,
+ 498, 157, 500, 5, 40, 158, 259, 5, 501, 502,
+ 58, 146, 260, 41, 58, 511, 75, 76, 77, 78,
+ 43, 79, 44, 348, 80, 81, 82, 83, 244, 84,
+ 45, -71, 245, 46, 47, 320, 56, 423, 458, 57,
+ 72, 425, 159, 160, 161, 162, 248, 250, 251, 207,
+ 75, 76, 77, 78, 346, 79, 350, 71, 80, 81,
+ 82, 83, 188, 84, 73, 146, 80, 81, 82, 83,
+ 189, 190, 92, 93, 96, 369, 59, 98, -43, 59,
+ 59, 320, -44, 106, 293, 60, 303, 131, 294, 60,
+ 123, 130, 387, 61, 62, 163, 126, 61, 62, 352,
+ 353, 354, 355, 485, 128, 486, 308, 151, 310, 311,
323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 564, 485, 347, 486, -71, 352, 353,
- 354, 355, 135, 295, 296, 297, 298, 299, 300, 361,
- 136, 169, 170, 365, 366, 448, 321, 474, 171, 372,
- 305, 173, 174, 35, 179, 175, 176, 183, 188, 197,
- 75, 76, 77, 78, 488, 79, 189, 190, 80, 81,
- 82, 83, 182, 84, 389, 199, 200, 201, 146, 393,
- 394, 395, 205, 75, 76, 77, 78, 50, 79, 253,
- 254, 349, 513, -23, 515, 52, 84, 256, 273, 274,
- 275, 276, 277, 278, 279, 280, 267, 281, 282, 283,
- 284, 285, 265, 269, 336, 264, 270, 271, 292, 490,
- 491, 337, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 307, 309, 459, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, 312, 475,
- 476, 477, 478, 479, 480, 481, 482, 315, 322, 357,
- 358, 362, 338, 339, 487, 367, 526, 381, 370, 492,
- 371, 530, 75, 76, 77, 78, 499, 79, 391, 286,
- 505, 287, 288, 289, -244, 84, 420, 424, 426, 509,
- 421, 429, 512, 432, 514, 430, 431, 451, 75, 76,
- 77, 78, 226, 79, 452, 483, 340, 81, 82, 83,
- 341, 84, 484, 489, 504, 528, 506, 561, 507, 520,
- 517, 521, 342, 343, 344, 518, 516, 519, 522, 208,
- 531, 209, 210, 211, 532, 533, 534, 523, 524, 74,
- 212, 213, 214, 536, 539, 545, 215, 216, 217, 548,
- 557, 218, 558, 559, 562, 565, 42, 535, 229, 97,
- 392, 181, 186, 75, 76, 77, 78, 196, 79, 547,
- 167, 80, 81, 82, 83, 549, 84, 377, 550, 388,
- 551, 219, 202, 508, 220, 221, 222, 546, 75, 76,
- 77, 78, 226, 79, 223, 450, 227, 203, 224, 529,
- 225, 84, 306, 268, 378, 351, 185, 145, 390, 0,
- 262, 563, 0, 0, 0, 0, 0, 75, 76, 77,
- 78, 226, 79, 0, 0, 227, 0, 396, 0, 228,
- 84, 0, 0, 397, 398, 0, 0, 0, 0, -221,
- 399, 400, 401, 402, 403, 404, 405, 0, 0, 0,
- 0, 0, 0, 0, 406, 407, 408, 409, 75, 76,
- 77, 78, 142, 79, 0, 0, 80, 81, 82, 83,
- 143, 84, 75, 76, 77, 78, 142, 79, 149, 0,
- 80, 81, 82, 83, 143, 84, 75, 76, 77, 78,
- 35, 79, 0, 0, 80, 81, 82, 83, 0, 84,
- 0, 410, 0, 0, 411, 0, 0, 0, 0, 412,
- 413, 414, 415, 416, 417, 418, 419, 75, 76, 77,
- 78, 0, 79, 0, 0, 373, 81, 82, 83, 0,
- 84, 75, 76, 77, 78, 0, 79, 0, 0, 385,
+ 333, 334, 335, 304, 135, 347, 564, 75, 76, 77,
+ 78, 136, 79, 295, 296, 297, 298, 299, 300, 361,
+ 84, 137, 141, 365, 366, 474, 442, 320, 147, 372,
+ 301, 169, 170, 75, 76, 77, 78, 226, 79, 171,
+ 173, 227, 488, 174, 175, 176, 84, 179, 295, 296,
+ 297, 298, 299, 300, 389, 262, 183, 182, 146, 393,
+ 394, 395, 197, 199, 200, 305, 253, 201, 254, 74,
+ 513, 205, 515, 265, 273, 274, 275, 276, 277, 278,
+ 279, 280, 256, 281, 282, 283, 284, 285, -23, 267,
+ 270, 264, 271, 75, 76, 77, 78, 292, 79, 490,
+ 491, 80, 81, 82, 83, 307, 84, 309, 312, 315,
+ 322, 357, 358, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 362, 475,
+ 476, 477, 478, 479, 480, 481, 482, 75, 76, 77,
+ 78, 226, 79, 380, 487, 227, 367, 370, 526, 492,
+ 84, 529, 371, 391, -244, 286, 499, 287, 288, 289,
+ 75, 76, 77, 78, 507, 79, 420, 424, 317, 509,
+ 426, 429, 512, 84, 514, 208, 421, 209, 210, 211,
+ 430, 431, 432, 445, 452, 483, 212, 213, 214, 484,
+ 504, 489, 215, 216, 217, 528, 505, 218, 516, 561,
+ 517, 75, 76, 77, 78, 142, 79, 508, 336, 80,
+ 81, 82, 83, 143, 84, 337, 518, 523, 524, 519,
+ 520, 149, 522, 536, 521, 530, 532, 219, 533, 534,
+ 220, 221, 222, 539, 545, 548, 557, 535, 558, 559,
+ 223, 562, 565, 230, 224, 97, 225, 186, 392, 547,
+ 181, 42, 196, 377, 167, 549, 338, 339, 550, 203,
+ 551, 506, 202, 75, 76, 77, 78, 226, 79, 388,
+ 546, 227, 531, 444, 378, 228, 84, 306, 351, 145,
+ 268, 185, 0, 390, 0, 229, 0, 0, 0, 0,
+ 0, 563, 75, 76, 77, 78, 226, 79, 0, 0,
+ 340, 81, 82, 83, 341, 84, 396, 0, 0, 0,
+ 0, 0, 397, 398, 0, 0, 342, 343, 344, 399,
+ 400, 401, 402, 403, 404, 405, 0, 0, 0, 0,
+ 0, 0, 0, 406, 407, 408, 409, 75, 76, 77,
+ 78, 142, 79, 0, 0, 80, 81, 82, 83, 143,
+ 84, 75, 76, 77, 78, 35, 79, 0, 0, 80,
81, 82, 83, 0, 84, 75, 76, 77, 78, 0,
- 79, 0, 0, 493, 81, 82, 83, 0, 84, 75,
- 76, 77, 78, 0, 79, 0, 0, 510, 81, 82,
- 83, 0, 84, 75, 76, 77, 78, 226, 79, 0,
- 0, 227, 75, 76, 77, 78, 84, 79, 0, 0,
- 318, 75, 76, 77, 78, 84, 79, 0, 0, 449,
- 75, 76, 77, 78, 84, 79, 0, 0, 525, 0,
- 0, 0, 0, 84
+ 79, 0, 0, 80, 81, 82, 83, 0, 84, 0,
+ 410, 0, 0, 411, 0, 0, 0, 0, 412, 413,
+ 414, 415, 416, 417, 418, 419, 75, 76, 77, 78,
+ 0, 79, 0, 0, 373, 81, 82, 83, 0, 84,
+ 75, 76, 77, 78, 0, 79, 0, 0, 385, 81,
+ 82, 83, 0, 84, 75, 76, 77, 78, 0, 79,
+ 0, 0, 493, 81, 82, 83, 0, 84, 75, 76,
+ 77, 78, 0, 79, 0, 0, 510, 81, 82, 83,
+ 0, 84, 75, 76, 77, 78, 50, 79, 0, 0,
+ 349, 0, 0, 0, 52, 84, 75, 76, 77, 78,
+ 0, 79, 0, 0, 443, 75, 76, 77, 78, 84,
+ 79, 0, 0, 525, 0, 0, 0, 0, 84, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117
};
static const short yycheck[] =
{
- 29, 69, 93, 321, 22, 149, 49, 322, 5, 72,
- 4, 29, 4, 4, 4, 131, 220, 4, 11, 6,
- 27, 8, 9, 4, 4, 72, 72, 72, 208, 173,
- 100, 74, 123, 14, 106, 22, 106, 94, 25, 357,
- 72, 39, 29, 102, 72, 7, 77, 28, 4, 72,
- 72, 110, 83, 84, 107, 14, 99, 64, 174, 72,
- 72, 72, 114, 106, 116, 108, 64, 118, 131, 76,
- 0, 118, 129, 118, 61, 121, 73, 95, 72, 97,
- 72, 72, 72, 126, 288, 65, 104, 203, 131, 121,
- 133, 78, 85, 121, 112, 113, 212, 78, 121, 121,
- 80, 95, 82, 14, 220, 108, 118, 104, 121, 96,
- 121, 10, 228, 4, 294, 112, 113, 104, 433, 107,
- 4, 301, 15, 438, 304, 305, 19, 72, 22, 102,
- 133, 174, 102, 106, 72, 29, 106, 110, 453, 98,
- 99, 100, 101, 106, 103, 289, 107, 106, 107, 108,
- 109, 102, 111, 102, 119, 271, 55, 56, 57, 58,
- 59, 60, 49, 50, 51, 52, 209, 210, 211, 198,
- 102, 117, 288, 72, 290, 114, 102, 116, 358, 4,
- 106, 120, 362, 97, 74, 228, 95, 98, 99, 100,
- 101, 107, 103, 309, 117, 106, 107, 108, 109, 315,
- 111, 95, 106, 97, 247, 4, 249, 110, 10, 72,
- 104, 106, 107, 108, 109, 102, 531, 4, 112, 113,
- 49, 50, 51, 52, 53, 341, 255, 4, 257, 258,
+ 29, 69, 93, 149, 322, 320, 49, 208, 11, 5,
+ 4, 4, 72, 4, 94, 72, 4, 131, 4, 4,
+ 6, 14, 8, 9, 72, 27, 4, 173, 220, 39,
+ 72, 74, 123, 102, 7, 28, 22, 106, 72, 25,
+ 102, 110, 357, 29, 114, 72, 116, 108, 110, 129,
+ 72, 106, 14, 72, 64, 114, 99, 116, 72, 72,
+ 174, 120, 64, 106, 121, 108, 49, 50, 51, 52,
+ 53, 131, 133, 121, 76, 61, 107, 73, 72, 121,
+ 65, 72, 85, 126, 72, 78, 14, 121, 131, 203,
+ 133, 118, 78, 294, 72, 80, 288, 82, 212, 121,
+ 301, 95, 121, 304, 305, 118, 220, 121, 104, 15,
+ 96, 118, 72, 19, 228, 433, 112, 113, 104, 102,
+ 438, 102, 77, 22, 4, 106, 100, 22, 83, 84,
+ 29, 174, 106, 0, 29, 453, 98, 99, 100, 101,
+ 4, 103, 107, 289, 106, 107, 108, 109, 102, 111,
+ 4, 73, 106, 72, 72, 269, 102, 358, 118, 102,
+ 107, 362, 49, 50, 51, 52, 209, 210, 211, 198,
+ 98, 99, 100, 101, 288, 103, 290, 106, 106, 107,
+ 108, 109, 104, 111, 119, 228, 106, 107, 108, 109,
+ 112, 113, 102, 117, 4, 309, 95, 97, 97, 95,
+ 95, 315, 97, 74, 247, 104, 249, 110, 10, 104,
+ 117, 4, 530, 112, 113, 102, 107, 112, 113, 16,
+ 17, 18, 19, 424, 106, 426, 255, 341, 257, 258,
273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 561, 424, 288, 426, 73, 16, 17,
- 18, 19, 120, 55, 56, 57, 58, 59, 60, 302,
- 120, 117, 103, 306, 307, 381, 382, 411, 95, 312,
- 72, 118, 72, 102, 4, 121, 121, 119, 104, 119,
- 98, 99, 100, 101, 428, 103, 112, 113, 106, 107,
- 108, 109, 106, 111, 337, 4, 4, 73, 341, 342,
- 343, 344, 73, 98, 99, 100, 101, 102, 103, 102,
- 102, 106, 456, 107, 458, 110, 111, 106, 33, 34,
- 35, 36, 37, 38, 39, 40, 4, 42, 43, 44,
- 45, 46, 120, 4, 14, 451, 4, 120, 20, 430,
- 431, 21, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 72, 72, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 117, 412,
- 413, 414, 415, 416, 417, 418, 419, 120, 120, 102,
- 10, 10, 62, 63, 427, 102, 502, 20, 102, 432,
- 102, 507, 98, 99, 100, 101, 439, 103, 102, 114,
- 443, 116, 117, 118, 120, 111, 119, 10, 10, 452,
- 120, 72, 455, 20, 457, 117, 117, 117, 98, 99,
- 100, 101, 102, 103, 20, 117, 106, 107, 108, 109,
- 110, 111, 106, 102, 4, 503, 4, 553, 20, 20,
- 483, 120, 122, 123, 124, 121, 119, 119, 4, 10,
- 120, 12, 13, 14, 20, 119, 119, 500, 501, 74,
- 21, 22, 23, 106, 4, 4, 27, 28, 29, 121,
- 4, 32, 4, 4, 4, 102, 13, 520, 203, 64,
- 341, 168, 177, 98, 99, 100, 101, 181, 103, 532,
- 139, 106, 107, 108, 109, 538, 111, 314, 541, 337,
- 543, 62, 193, 451, 65, 66, 67, 531, 98, 99,
- 100, 101, 102, 103, 75, 382, 106, 194, 79, 505,
- 81, 111, 250, 228, 315, 290, 174, 126, 338, -1,
- 120, 560, -1, -1, -1, -1, -1, 98, 99, 100,
- 101, 102, 103, -1, -1, 106, -1, 41, -1, 110,
- 111, -1, -1, 47, 48, -1, -1, -1, -1, 120,
- 54, 55, 56, 57, 58, 59, 60, -1, -1, -1,
- -1, -1, -1, -1, 68, 69, 70, 71, 98, 99,
- 100, 101, 102, 103, -1, -1, 106, 107, 108, 109,
- 110, 111, 98, 99, 100, 101, 102, 103, 118, -1,
- 106, 107, 108, 109, 110, 111, 98, 99, 100, 101,
- 102, 103, -1, -1, 106, 107, 108, 109, -1, 111,
- -1, 115, -1, -1, 118, -1, -1, -1, -1, 123,
- 124, 125, 126, 127, 128, 129, 130, 98, 99, 100,
- 101, -1, 103, -1, -1, 106, 107, 108, 109, -1,
- 111, 98, 99, 100, 101, -1, 103, -1, -1, 106,
+ 283, 284, 285, 10, 120, 288, 561, 98, 99, 100,
+ 101, 120, 103, 55, 56, 57, 58, 59, 60, 302,
+ 111, 4, 4, 306, 307, 411, 380, 381, 72, 312,
+ 72, 117, 103, 98, 99, 100, 101, 102, 103, 95,
+ 118, 106, 428, 72, 121, 121, 111, 4, 55, 56,
+ 57, 58, 59, 60, 337, 120, 119, 106, 341, 342,
+ 343, 344, 119, 4, 4, 72, 102, 73, 102, 74,
+ 456, 73, 458, 120, 33, 34, 35, 36, 37, 38,
+ 39, 40, 106, 42, 43, 44, 45, 46, 107, 4,
+ 4, 445, 4, 98, 99, 100, 101, 20, 103, 430,
+ 431, 106, 107, 108, 109, 72, 111, 72, 117, 120,
+ 120, 102, 10, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 10, 412,
+ 413, 414, 415, 416, 417, 418, 419, 98, 99, 100,
+ 101, 102, 103, 20, 427, 106, 102, 102, 502, 432,
+ 111, 505, 102, 102, 120, 114, 439, 116, 117, 118,
+ 98, 99, 100, 101, 447, 103, 119, 10, 106, 452,
+ 10, 72, 455, 111, 457, 10, 120, 12, 13, 14,
+ 117, 117, 20, 117, 20, 117, 21, 22, 23, 106,
+ 4, 102, 27, 28, 29, 503, 20, 32, 119, 553,
+ 483, 98, 99, 100, 101, 102, 103, 4, 14, 106,
+ 107, 108, 109, 110, 111, 21, 121, 500, 501, 119,
+ 20, 118, 4, 106, 120, 120, 20, 62, 119, 119,
+ 65, 66, 67, 4, 4, 121, 4, 520, 4, 4,
+ 75, 4, 102, 203, 79, 64, 81, 177, 341, 532,
+ 168, 13, 181, 314, 139, 538, 62, 63, 541, 194,
+ 543, 445, 193, 98, 99, 100, 101, 102, 103, 337,
+ 530, 106, 507, 381, 315, 110, 111, 250, 290, 126,
+ 228, 174, -1, 338, -1, 120, -1, -1, -1, -1,
+ -1, 560, 98, 99, 100, 101, 102, 103, -1, -1,
+ 106, 107, 108, 109, 110, 111, 41, -1, -1, -1,
+ -1, -1, 47, 48, -1, -1, 122, 123, 124, 54,
+ 55, 56, 57, 58, 59, 60, -1, -1, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 98, 99, 100,
+ 101, 102, 103, -1, -1, 106, 107, 108, 109, 110,
+ 111, 98, 99, 100, 101, 102, 103, -1, -1, 106,
107, 108, 109, -1, 111, 98, 99, 100, 101, -1,
- 103, -1, -1, 106, 107, 108, 109, -1, 111, 98,
- 99, 100, 101, -1, 103, -1, -1, 106, 107, 108,
- 109, -1, 111, 98, 99, 100, 101, 102, 103, -1,
- -1, 106, 98, 99, 100, 101, 111, 103, -1, -1,
- 106, 98, 99, 100, 101, 111, 103, -1, -1, 106,
- 98, 99, 100, 101, 111, 103, -1, -1, 106, -1,
- -1, -1, -1, 111
+ 103, -1, -1, 106, 107, 108, 109, -1, 111, -1,
+ 115, -1, -1, 118, -1, -1, -1, -1, 123, 124,
+ 125, 126, 127, 128, 129, 130, 98, 99, 100, 101,
+ -1, 103, -1, -1, 106, 107, 108, 109, -1, 111,
+ 98, 99, 100, 101, -1, 103, -1, -1, 106, 107,
+ 108, 109, -1, 111, 98, 99, 100, 101, -1, 103,
+ -1, -1, 106, 107, 108, 109, -1, 111, 98, 99,
+ 100, 101, -1, 103, -1, -1, 106, 107, 108, 109,
+ -1, 111, 98, 99, 100, 101, 102, 103, -1, -1,
+ 106, -1, -1, -1, 110, 111, 98, 99, 100, 101,
+ -1, 103, -1, -1, 106, 98, 99, 100, 101, 111,
+ 103, -1, -1, 106, -1, -1, -1, -1, 111, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1543,38 +1543,38 @@ static const unsigned char yystos[] =
113, 159, 167, 197, 198, 199, 167, 119, 160, 4,
4, 73, 199, 200, 203, 73, 161, 209, 10, 12,
13, 14, 21, 22, 23, 27, 28, 29, 32, 62,
- 65, 66, 67, 75, 79, 81, 102, 106, 110, 142,
- 172, 187, 189, 193, 205, 211, 212, 213, 215, 216,
+ 65, 66, 67, 75, 79, 81, 102, 106, 110, 120,
+ 142, 172, 187, 189, 193, 205, 211, 213, 215, 216,
217, 219, 227, 229, 102, 106, 235, 14, 237, 14,
237, 237, 229, 102, 102, 206, 106, 207, 208, 100,
- 106, 245, 120, 219, 229, 120, 214, 4, 230, 4,
- 4, 120, 220, 33, 34, 35, 36, 37, 38, 39,
+ 106, 245, 120, 219, 229, 120, 214, 4, 230, 212,
+ 4, 4, 220, 33, 34, 35, 36, 37, 38, 39,
40, 42, 43, 44, 45, 46, 114, 116, 117, 118,
218, 185, 20, 237, 10, 55, 56, 57, 58, 59,
60, 72, 228, 237, 10, 72, 228, 72, 209, 72,
- 209, 209, 117, 194, 195, 120, 173, 190, 106, 225,
- 226, 229, 120, 237, 237, 237, 237, 237, 237, 237,
+ 209, 209, 117, 194, 195, 120, 173, 106, 225, 226,
+ 229, 190, 120, 237, 237, 237, 237, 237, 237, 237,
237, 237, 237, 237, 237, 237, 14, 21, 62, 63,
106, 110, 122, 123, 124, 219, 229, 237, 238, 106,
229, 234, 16, 17, 18, 19, 186, 102, 10, 235,
235, 237, 10, 235, 235, 237, 237, 102, 204, 229,
102, 102, 237, 106, 196, 222, 237, 196, 226, 180,
- 191, 20, 72, 121, 185, 106, 221, 222, 210, 237,
+ 20, 72, 121, 185, 191, 106, 221, 222, 210, 237,
245, 102, 149, 237, 237, 237, 41, 47, 48, 54,
55, 56, 57, 58, 59, 60, 68, 69, 70, 71,
115, 118, 123, 124, 125, 126, 127, 128, 129, 130,
119, 120, 185, 235, 10, 235, 10, 72, 118, 72,
117, 117, 20, 72, 121, 223, 121, 121, 11, 85,
- 175, 181, 4, 65, 80, 82, 188, 192, 229, 106,
- 225, 117, 20, 72, 121, 72, 118, 72, 118, 237,
+ 175, 181, 229, 106, 225, 117, 4, 65, 80, 82,
+ 188, 192, 20, 72, 121, 72, 118, 72, 118, 237,
237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
237, 237, 237, 237, 238, 237, 237, 237, 237, 237,
237, 237, 237, 117, 106, 235, 235, 237, 238, 102,
244, 244, 237, 106, 222, 15, 19, 224, 222, 237,
- 77, 83, 84, 179, 4, 237, 4, 20, 217, 237,
+ 77, 83, 84, 179, 4, 20, 217, 237, 4, 237,
106, 222, 237, 238, 237, 238, 119, 237, 121, 119,
- 20, 120, 4, 237, 237, 106, 229, 174, 202, 223,
- 229, 120, 20, 119, 119, 237, 106, 4, 72, 4,
+ 20, 120, 4, 237, 237, 106, 229, 174, 202, 229,
+ 120, 223, 20, 119, 119, 237, 106, 4, 72, 4,
4, 72, 4, 72, 182, 4, 221, 237, 121, 237,
237, 237, 27, 64, 76, 183, 121, 4, 4, 4,
184, 229, 4, 209, 185, 102
Modified: trunk/compilers/imcc/instructions.c
==============================================================================
--- trunk/compilers/imcc/instructions.c (original)
+++ trunk/compilers/imcc/instructions.c Thu Feb 2 13:57:28 2006
@@ -237,9 +237,17 @@ instruction_writes(Instruction* ins, Sym
return 0;
else if (ins->prev && (ins->prev->type & ITPCCSUB)) {
ins = ins->prev;
- assert(ins->r[0]->pcc_sub);
- for (i = 0; i < ins->r[0]->pcc_sub->nret; ++i) {
- if (r == ins->r[0]->pcc_sub->ret[i])
+ /* can't used pcc_sub->ret due to bug #38406
+ * it seems that all sub SymRegs are shared
+ * and point to the most recemt pcc_sub
+ * structure
+ */
+ while (ins && ins->opnum != PARROT_OP_get_results_pc)
+ ins = ins->prev;
+ if (!ins)
+ return 0;
+ for (i = 0; i < ins->n_r; i++) {
+ if (ins->r[i] == r)
return 1;
}
return 0;
Modified: trunk/compilers/imcc/reg_alloc.c
==============================================================================
--- trunk/compilers/imcc/reg_alloc.c (original)
+++ trunk/compilers/imcc/reg_alloc.c Thu Feb 2 13:57:28 2006
@@ -338,6 +338,8 @@ build_reglist(Parrot_Interp interpreter,
}
}
unit->n_symbols = n_symbols = count;
+ if (IMCC_INFO(interpreter)->debug & DEBUG_IMC)
+ dump_symreg(unit);
compute_du_chain(unit);
/* we might have unused symbols here, from optimizations */
for (i = count = unused = 0; i < n_symbols; i++) {