Small named variable cleanup
- Replaced a few lines of codes in the parser by getNamedVariable
- Deleted unused commented out code in the parser
Change-Id: I34db0c971140a39cd91a32c05ebf866d5fca795b
Reviewed-on: https://swiftshader-review.googlesource.com/3670
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/compiler/glslang.y b/src/OpenGL/compiler/glslang.y
index daeb4e7..a10fc14 100644
--- a/src/OpenGL/compiler/glslang.y
+++ b/src/OpenGL/compiler/glslang.y
@@ -201,23 +201,7 @@
variable_identifier
: IDENTIFIER {
// The symbol table search was done in the lexical phase
- const TSymbol* symbol = $1.symbol;
- const TVariable* variable;
- if (symbol == 0) {
- context->error(@1, "undeclared identifier", $1.string->c_str());
- context->recover();
- TType type(EbtFloat, EbpUndefined);
- TVariable* fakeVariable = new TVariable($1.string, type);
- context->symbolTable.declare(*fakeVariable);
- variable = fakeVariable;
- } else {
- // This identifier can only be a variable type symbol
- if (! symbol->isVariable()) {
- context->error(@1, "variable expected", $1.string->c_str());
- context->recover();
- }
- variable = static_cast<const TVariable*>(symbol);
- }
+ const TVariable *variable = context->getNamedVariable(@1, $1.string, $1.symbol);
// don't delete $1.string, it's used by error recovery, and the pool
// pop will reclaim the memory
@@ -923,75 +907,6 @@
}
;
-//
-// Place holder for the pack/unpack languages.
-//
-// | buffer_specifier {
-// $$.intermAggregate = 0;
-// }
- ;
-
-// Grammar Note: No 'enum', or 'typedef'.
-
-//
-// Place holder for the pack/unpack languages.
-//
-//%type <interm> buffer_declaration
-//%type <interm.type> buffer_specifier input_or_output buffer_declaration_list
-//buffer_specifier
-// : input_or_output LEFT_BRACE buffer_declaration_list RIGHT_BRACE {
-// }
-// ;
-//
-//input_or_output
-// : INPUT {
-// if (context->globalErrorCheck(@1, context->symbolTable.atGlobalLevel(), "input"))
-// context->recover();
-// UNPACK_ONLY("input", @1);
-// $$.qualifier = EvqInput;
-// }
-// | OUTPUT {
-// if (context->globalErrorCheck(@1, context->symbolTable.atGlobalLevel(), "output"))
-// context->recover();
-// PACK_ONLY("output", @1);
-// $$.qualifier = EvqOutput;
-// }
-// ;
-
-//
-// Place holder for the pack/unpack languages.
-//
-//buffer_declaration_list
-// : buffer_declaration {
-// }
-// | buffer_declaration_list buffer_declaration {
-// }
-// ;
-
-//
-// Input/output semantics:
-// float must be 16 or 32 bits
-// float alignment restrictions?
-// check for only one input and only one output
-// sum of bitfields has to be multiple of 32
-//
-
-//
-// Place holder for the pack/unpack languages.
-//
-//buffer_declaration
-// : type_specifier IDENTIFIER COLON constant_expression SEMICOLON {
-// if (context->reservedErrorCheck(@2, *$2.string, context))
-// context->recover();
-// $$.variable = new TVariable($2.string, $1);
-// if (! context->symbolTable.declare(*$$.variable)) {
-// context->error(@2, "redefinition", $$.variable->getName().c_str());
-// context->recover();
-// // don't have to delete $$.variable, the pool pop will take care of it
-// }
-// }
-// ;
-
fully_specified_type
: type_specifier {
$$ = $1;
diff --git a/src/OpenGL/compiler/glslang_tab.cpp b/src/OpenGL/compiler/glslang_tab.cpp
index 01272ff..64d47f8 100644
--- a/src/OpenGL/compiler/glslang_tab.cpp
+++ b/src/OpenGL/compiler/glslang_tab.cpp
@@ -765,34 +765,34 @@
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 202, 202, 237, 240, 245, 250, 255, 260, 266,
- 269, 272, 275, 278, 281, 287, 295, 306, 309, 317,
- 321, 328, 332, 339, 345, 354, 362, 368, 375, 385,
- 388, 398, 408, 430, 431, 432, 433, 441, 442, 446,
- 450, 458, 459, 462, 468, 469, 473, 480, 481, 484,
- 487, 490, 496, 497, 500, 506, 507, 514, 515, 522,
- 523, 530, 531, 537, 538, 544, 545, 551, 552, 558,
- 559, 567, 568, 569, 570, 572, 573, 574, 576, 578,
- 580, 582, 587, 590, 601, 609, 617, 644, 650, 657,
- 661, 665, 669, 676, 714, 717, 724, 732, 753, 774,
- 785, 814, 819, 829, 834, 844, 847, 850, 853, 859,
- 866, 869, 873, 877, 882, 887, 894, 898, 902, 906,
- 911, 916, 920, 996, 1006, 1012, 1015, 1021, 1027, 1034,
- 1043, 1052, 1055, 1058, 1065, 1069, 1076, 1080, 1085, 1090,
- 1100, 1110, 1119, 1129, 1136, 1139, 1142, 1148, 1155, 1158,
- 1164, 1167, 1170, 1176, 1179, 1184, 1199, 1203, 1207, 1211,
- 1215, 1219, 1224, 1229, 1234, 1239, 1244, 1249, 1254, 1259,
- 1264, 1269, 1274, 1279, 1285, 1291, 1297, 1303, 1309, 1315,
- 1321, 1327, 1333, 1338, 1343, 1352, 1357, 1362, 1367, 1372,
- 1377, 1382, 1387, 1392, 1397, 1402, 1407, 1412, 1417, 1422,
- 1435, 1435, 1438, 1438, 1444, 1447, 1463, 1466, 1475, 1479,
- 1485, 1492, 1507, 1511, 1515, 1516, 1522, 1523, 1524, 1525,
- 1526, 1527, 1528, 1532, 1533, 1533, 1533, 1543, 1544, 1548,
- 1548, 1549, 1549, 1554, 1557, 1567, 1570, 1576, 1577, 1581,
- 1589, 1593, 1600, 1600, 1607, 1610, 1619, 1624, 1641, 1641,
- 1646, 1646, 1653, 1653, 1661, 1664, 1670, 1673, 1679, 1683,
- 1690, 1693, 1696, 1699, 1702, 1711, 1715, 1722, 1725, 1731,
- 1731
+ 0, 202, 202, 221, 224, 229, 234, 239, 244, 250,
+ 253, 256, 259, 262, 265, 271, 279, 290, 293, 301,
+ 305, 312, 316, 323, 329, 338, 346, 352, 359, 369,
+ 372, 382, 392, 414, 415, 416, 417, 425, 426, 430,
+ 434, 442, 443, 446, 452, 453, 457, 464, 465, 468,
+ 471, 474, 480, 481, 484, 490, 491, 498, 499, 506,
+ 507, 514, 515, 521, 522, 528, 529, 535, 536, 542,
+ 543, 551, 552, 553, 554, 556, 557, 558, 560, 562,
+ 564, 566, 571, 574, 585, 593, 601, 628, 634, 641,
+ 645, 649, 653, 660, 698, 701, 708, 716, 737, 758,
+ 769, 798, 803, 813, 818, 828, 831, 834, 837, 843,
+ 850, 853, 857, 861, 866, 871, 878, 882, 886, 890,
+ 895, 900, 904, 911, 921, 927, 930, 936, 942, 949,
+ 958, 967, 970, 973, 980, 984, 991, 995, 1000, 1005,
+ 1015, 1025, 1034, 1044, 1051, 1054, 1057, 1063, 1070, 1073,
+ 1079, 1082, 1085, 1091, 1094, 1099, 1114, 1118, 1122, 1126,
+ 1130, 1134, 1139, 1144, 1149, 1154, 1159, 1164, 1169, 1174,
+ 1179, 1184, 1189, 1194, 1200, 1206, 1212, 1218, 1224, 1230,
+ 1236, 1242, 1248, 1253, 1258, 1267, 1272, 1277, 1282, 1287,
+ 1292, 1297, 1302, 1307, 1312, 1317, 1322, 1327, 1332, 1337,
+ 1350, 1350, 1353, 1353, 1359, 1362, 1378, 1381, 1390, 1394,
+ 1400, 1407, 1422, 1426, 1430, 1431, 1437, 1438, 1439, 1440,
+ 1441, 1442, 1443, 1447, 1448, 1448, 1448, 1458, 1459, 1463,
+ 1463, 1464, 1464, 1469, 1472, 1482, 1485, 1491, 1492, 1496,
+ 1504, 1508, 1515, 1515, 1522, 1525, 1534, 1539, 1556, 1556,
+ 1561, 1561, 1568, 1568, 1576, 1579, 1585, 1588, 1594, 1598,
+ 1605, 1608, 1611, 1614, 1617, 1626, 1630, 1637, 1640, 1646,
+ 1646
};
#endif
@@ -2489,23 +2489,7 @@
{
// The symbol table search was done in the lexical phase
- const TSymbol* symbol = (yyvsp[(1) - (1)].lex).symbol;
- const TVariable* variable;
- if (symbol == 0) {
- context->error((yylsp[(1) - (1)]), "undeclared identifier", (yyvsp[(1) - (1)].lex).string->c_str());
- context->recover();
- TType type(EbtFloat, EbpUndefined);
- TVariable* fakeVariable = new TVariable((yyvsp[(1) - (1)].lex).string, type);
- context->symbolTable.declare(*fakeVariable);
- variable = fakeVariable;
- } else {
- // This identifier can only be a variable type symbol
- if (! symbol->isVariable()) {
- context->error((yylsp[(1) - (1)]), "variable expected", (yyvsp[(1) - (1)].lex).string->c_str());
- context->recover();
- }
- variable = static_cast<const TVariable*>(symbol);
- }
+ const TVariable *variable = context->getNamedVariable((yylsp[(1) - (1)]), (yyvsp[(1) - (1)].lex).string, (yyvsp[(1) - (1)].lex).symbol);
// don't delete $1.string, it's used by error recovery, and the pool
// pop will reclaim the memory