glsl: Refresh autogenerated parser files
authorChad Versace <chad.versace@intel.com>
Mon, 17 Jan 2011 17:42:08 +0000 (09:42 -0800)
committerChad Versace <chad.versace@intel.com>
Mon, 17 Jan 2011 18:20:47 +0000 (10:20 -0800)
src/glsl/glsl_parser.cpp
src/glsl/glsl_parser.h

index 2190458e47d30e9709696aa9c0ff15b0522889d2..8b196ae7fc64fa9d6bf374eeadb2a93c379961e9 100644 (file)
@@ -1,10 +1,9 @@
-
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* A Bison parser, made by GNU Bison 2.4.3.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2009, 2010 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -46,7 +45,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "2.4.3"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
 
 
 /* Line 189 of yacc.c  */
-#line 118 "glsl_parser.cpp"
+#line 117 "glsl_parser.cpp"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -375,7 +374,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 379 "glsl_parser.cpp"
+#line 378 "glsl_parser.cpp"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -400,7 +399,7 @@ typedef struct YYLTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 404 "glsl_parser.cpp"
+#line 403 "glsl_parser.cpp"
 
 #ifdef short
 # undef short
@@ -450,7 +449,7 @@ typedef short int yytype_int16;
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -818,24 +817,24 @@ static const yytype_uint16 yyrline[] =
      578,   587,   588,   597,   598,   607,   608,   617,   618,   627,
      628,   637,   638,   647,   648,   657,   658,   659,   660,   661,
      662,   663,   664,   665,   666,   667,   671,   675,   691,   695,
-     699,   703,   717,   721,   722,   726,   731,   739,   750,   760,
-     775,   782,   787,   798,   811,   814,   819,   824,   833,   837,
-     838,   847,   856,   865,   874,   883,   896,   907,   916,   925,
-     934,   943,   952,   961,   975,   982,   993,  1000,  1001,  1020,
-    1049,  1090,  1095,  1100,  1108,  1116,  1117,  1118,  1123,  1124,
-    1129,  1134,  1140,  1148,  1153,  1158,  1163,  1169,  1174,  1179,
-    1184,  1189,  1197,  1198,  1206,  1207,  1213,  1222,  1228,  1234,
-    1243,  1244,  1245,  1246,  1247,  1248,  1249,  1250,  1251,  1252,
-    1253,  1254,  1255,  1256,  1257,  1258,  1259,  1260,  1261,  1262,
-    1263,  1264,  1265,  1266,  1267,  1268,  1269,  1270,  1271,  1272,
-    1273,  1274,  1275,  1276,  1277,  1278,  1279,  1280,  1281,  1282,
-    1283,  1284,  1285,  1286,  1287,  1288,  1289,  1290,  1291,  1292,
-    1293,  1297,  1307,  1317,  1330,  1336,  1345,  1350,  1358,  1373,
-    1378,  1386,  1392,  1401,  1405,  1411,  1412,  1416,  1417,  1418,
-    1419,  1420,  1421,  1422,  1426,  1432,  1441,  1442,  1446,  1452,
-    1461,  1471,  1483,  1489,  1498,  1507,  1512,  1520,  1524,  1538,
-    1542,  1543,  1547,  1554,  1561,  1571,  1572,  1576,  1578,  1584,
-    1589,  1598,  1604,  1610,  1616,  1622,  1631,  1632,  1633,  1637
+     699,   703,   712,   716,   717,   721,   726,   734,   745,   755,
+     770,   777,   782,   793,   806,   809,   814,   819,   828,   832,
+     833,   842,   851,   860,   869,   878,   891,   902,   911,   920,
+     929,   938,   947,   956,   970,   977,   988,   995,   996,  1015,
+    1044,  1085,  1090,  1095,  1103,  1111,  1112,  1113,  1118,  1119,
+    1124,  1129,  1135,  1143,  1148,  1153,  1158,  1164,  1169,  1174,
+    1179,  1184,  1192,  1196,  1204,  1205,  1211,  1220,  1226,  1232,
+    1241,  1242,  1243,  1244,  1245,  1246,  1247,  1248,  1249,  1250,
+    1251,  1252,  1253,  1254,  1255,  1256,  1257,  1258,  1259,  1260,
+    1261,  1262,  1263,  1264,  1265,  1266,  1267,  1268,  1269,  1270,
+    1271,  1272,  1273,  1274,  1275,  1276,  1277,  1278,  1279,  1280,
+    1281,  1282,  1283,  1284,  1285,  1286,  1287,  1288,  1289,  1290,
+    1291,  1295,  1305,  1315,  1328,  1334,  1343,  1348,  1356,  1371,
+    1376,  1384,  1390,  1399,  1403,  1409,  1410,  1414,  1415,  1416,
+    1417,  1418,  1419,  1420,  1424,  1430,  1439,  1440,  1444,  1450,
+    1459,  1469,  1481,  1487,  1496,  1505,  1510,  1518,  1522,  1536,
+    1540,  1541,  1545,  1552,  1559,  1569,  1570,  1574,  1576,  1582,
+    1587,  1596,  1602,  1608,  1614,  1620,  1629,  1630,  1631,  1635
 };
 #endif
 
@@ -1961,9 +1960,18 @@ static const yytype_uint16 yystos[] =
 
 /* Like YYERROR except do call yyerror.  This remains here temporarily
    to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
 
 #define YYFAIL         goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -2020,7 +2028,7 @@ while (YYID (0))
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
 #  define YY_LOCATION_PRINT(File, Loc)                 \
      fprintf (File, "%d.%d-%d.%d",                     \
              (Loc).first_line, (Loc).first_column,     \
@@ -2562,7 +2570,7 @@ YYLTYPE yylloc;
     YYLTYPE *yylsp;
 
     /* The locations where the error started and ended.  */
-    YYLTYPE yyerror_range[2];
+    YYLTYPE yyerror_range[3];
 
     YYSIZE_T yystacksize;
 
@@ -2609,7 +2617,7 @@ YYLTYPE yylloc;
   yyvsp = yyvs;
   yylsp = yyls;
 
-#if YYLTYPE_IS_TRIVIAL
+#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
   /* Initialize the default location before parsing starts.  */
   yylloc.first_line   = yylloc.last_line   = 1;
   yylloc.first_column = yylloc.last_column = 1;
@@ -2617,7 +2625,7 @@ YYLTYPE yylloc;
 
 /* User initialization code.  */
 
-/* Line 1242 of yacc.c  */
+/* Line 1251 of yacc.c  */
 #line 41 "glsl_parser.ypp"
 {
    yylloc.first_line = 1;
@@ -2627,8 +2635,8 @@ YYLTYPE yylloc;
    yylloc.source = 0;
 }
 
-/* Line 1242 of yacc.c  */
-#line 2632 "glsl_parser.cpp"
+/* Line 1251 of yacc.c  */
+#line 2640 "glsl_parser.cpp"
   yylsp[0] = yylloc;
 
   goto yysetstate;
@@ -2815,7 +2823,7 @@ yyreduce:
     {
         case 2:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 213 "glsl_parser.ypp"
     {
           _mesa_glsl_initialize_types(state);
@@ -2824,7 +2832,7 @@ yyreduce:
 
   case 5:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 222 "glsl_parser.ypp"
     {
           switch ((yyvsp[(2) - (3)].n)) {
@@ -2851,7 +2859,7 @@ yyreduce:
 
   case 10:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 251 "glsl_parser.ypp"
     {
           if (state->language_version < 120) {
@@ -2866,7 +2874,7 @@ yyreduce:
 
   case 13:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 269 "glsl_parser.ypp"
     {
           if (!_mesa_glsl_process_extension((yyvsp[(2) - (5)].identifier), & (yylsp[(2) - (5)]), (yyvsp[(4) - (5)].identifier), & (yylsp[(4) - (5)]), state)) {
@@ -2877,11 +2885,11 @@ yyreduce:
 
   case 14:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 278 "glsl_parser.ypp"
     {
-          /* FINISHME: The NULL test is only required because 'precision'
-           * FINISHME: statements are not yet supported.
+          /* FINISHME: The NULL test is required because pragmas are set to
+           * FINISHME: NULL. (See production rule for external_declaration.)
            */
           if ((yyvsp[(1) - (1)].node) != NULL)
              state->translation_unit.push_tail(& (yyvsp[(1) - (1)].node)->link);
@@ -2890,11 +2898,11 @@ yyreduce:
 
   case 15:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 286 "glsl_parser.ypp"
     {
-          /* FINISHME: The NULL test is only required because 'precision'
-           * FINISHME: statements are not yet supported.
+          /* FINISHME: The NULL test is required because pragmas are set to
+           * FINISHME: NULL. (See production rule for external_declaration.)
            */
           if ((yyvsp[(2) - (2)].node) != NULL)
              state->translation_unit.push_tail(& (yyvsp[(2) - (2)].node)->link);
@@ -2903,7 +2911,7 @@ yyreduce:
 
   case 17:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 301 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -2915,7 +2923,7 @@ yyreduce:
 
   case 18:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 308 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -2927,7 +2935,7 @@ yyreduce:
 
   case 19:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 315 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -2939,7 +2947,7 @@ yyreduce:
 
   case 20:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 322 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -2951,7 +2959,7 @@ yyreduce:
 
   case 21:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 329 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -2963,7 +2971,7 @@ yyreduce:
 
   case 22:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 336 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(2) - (3)].expression);
@@ -2972,7 +2980,7 @@ yyreduce:
 
   case 24:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 344 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -2983,7 +2991,7 @@ yyreduce:
 
   case 25:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 350 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (1)].expression);
@@ -2992,7 +3000,7 @@ yyreduce:
 
   case 26:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 354 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3004,7 +3012,7 @@ yyreduce:
 
   case 27:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 361 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3015,7 +3023,7 @@ yyreduce:
 
   case 28:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 367 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3026,7 +3034,7 @@ yyreduce:
 
   case 32:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 385 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3037,7 +3045,7 @@ yyreduce:
 
   case 37:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 404 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (2)].expression);
@@ -3048,7 +3056,7 @@ yyreduce:
 
   case 38:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 410 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (3)].expression);
@@ -3059,7 +3067,7 @@ yyreduce:
 
   case 40:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 426 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3070,7 +3078,7 @@ yyreduce:
 
   case 41:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 432 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3082,7 +3090,7 @@ yyreduce:
 
   case 42:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 439 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3094,7 +3102,7 @@ yyreduce:
 
   case 44:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 451 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3105,7 +3113,7 @@ yyreduce:
 
   case 45:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 457 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3116,7 +3124,7 @@ yyreduce:
 
   case 46:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 463 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3127,35 +3135,35 @@ yyreduce:
 
   case 47:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 472 "glsl_parser.ypp"
     { (yyval.n) = ast_plus; ;}
     break;
 
   case 48:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 473 "glsl_parser.ypp"
     { (yyval.n) = ast_neg; ;}
     break;
 
   case 49:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 474 "glsl_parser.ypp"
     { (yyval.n) = ast_logic_not; ;}
     break;
 
   case 50:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 475 "glsl_parser.ypp"
     { (yyval.n) = ast_bit_not; ;}
     break;
 
   case 52:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 481 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3166,7 +3174,7 @@ yyreduce:
 
   case 53:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 487 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3177,7 +3185,7 @@ yyreduce:
 
   case 54:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 493 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3188,7 +3196,7 @@ yyreduce:
 
   case 56:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 503 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3199,7 +3207,7 @@ yyreduce:
 
   case 57:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 509 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3210,7 +3218,7 @@ yyreduce:
 
   case 59:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 519 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3221,7 +3229,7 @@ yyreduce:
 
   case 60:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 525 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3232,7 +3240,7 @@ yyreduce:
 
   case 62:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 535 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3243,7 +3251,7 @@ yyreduce:
 
   case 63:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 541 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3254,7 +3262,7 @@ yyreduce:
 
   case 64:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 547 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3265,7 +3273,7 @@ yyreduce:
 
   case 65:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 553 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3276,7 +3284,7 @@ yyreduce:
 
   case 67:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 563 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3287,7 +3295,7 @@ yyreduce:
 
   case 68:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 569 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3298,7 +3306,7 @@ yyreduce:
 
   case 70:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 579 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3309,7 +3317,7 @@ yyreduce:
 
   case 72:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 589 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3320,7 +3328,7 @@ yyreduce:
 
   case 74:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 599 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3331,7 +3339,7 @@ yyreduce:
 
   case 76:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 609 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3342,7 +3350,7 @@ yyreduce:
 
   case 78:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 619 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3353,7 +3361,7 @@ yyreduce:
 
   case 80:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 629 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3364,7 +3372,7 @@ yyreduce:
 
   case 82:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 639 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3375,7 +3383,7 @@ yyreduce:
 
   case 84:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 649 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3386,84 +3394,84 @@ yyreduce:
 
   case 85:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 657 "glsl_parser.ypp"
     { (yyval.n) = ast_assign; ;}
     break;
 
   case 86:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 658 "glsl_parser.ypp"
     { (yyval.n) = ast_mul_assign; ;}
     break;
 
   case 87:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 659 "glsl_parser.ypp"
     { (yyval.n) = ast_div_assign; ;}
     break;
 
   case 88:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 660 "glsl_parser.ypp"
     { (yyval.n) = ast_mod_assign; ;}
     break;
 
   case 89:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 661 "glsl_parser.ypp"
     { (yyval.n) = ast_add_assign; ;}
     break;
 
   case 90:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 662 "glsl_parser.ypp"
     { (yyval.n) = ast_sub_assign; ;}
     break;
 
   case 91:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 663 "glsl_parser.ypp"
     { (yyval.n) = ast_ls_assign; ;}
     break;
 
   case 92:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 664 "glsl_parser.ypp"
     { (yyval.n) = ast_rs_assign; ;}
     break;
 
   case 93:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 665 "glsl_parser.ypp"
     { (yyval.n) = ast_and_assign; ;}
     break;
 
   case 94:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 666 "glsl_parser.ypp"
     { (yyval.n) = ast_xor_assign; ;}
     break;
 
   case 95:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 667 "glsl_parser.ypp"
     { (yyval.n) = ast_or_assign; ;}
     break;
 
   case 96:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 672 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (1)].expression);
@@ -3472,7 +3480,7 @@ yyreduce:
 
   case 97:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 676 "glsl_parser.ypp"
     {
           void *ctx = state;
@@ -3490,7 +3498,7 @@ yyreduce:
 
   case 99:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 696 "glsl_parser.ypp"
     {
           (yyval.node) = (yyvsp[(1) - (2)].function);
@@ -3499,7 +3507,7 @@ yyreduce:
 
   case 100:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 700 "glsl_parser.ypp"
     {
           (yyval.node) = (yyvsp[(1) - (2)].declarator_list);
@@ -3508,24 +3516,19 @@ yyreduce:
 
   case 101:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 704 "glsl_parser.ypp"
     {
-          if (((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_float)
-              && ((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_int)) {
-             _mesa_glsl_error(& (yylsp[(3) - (4)]), state, "global precision qualifier can "
-                              "only be applied to `int' or `float'\n");
-             YYERROR;
-          }
-
-          (yyval.node) = NULL; /* FINISHME */
+          (yyvsp[(3) - (4)].type_specifier)->precision = (yyvsp[(2) - (4)].n);
+          (yyvsp[(3) - (4)].type_specifier)->is_precision_statement = true;
+          (yyval.node) = (yyvsp[(3) - (4)].type_specifier);
        ;}
     break;
 
   case 105:
 
-/* Line 1455 of yacc.c  */
-#line 727 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 722 "glsl_parser.ypp"
     {
           (yyval.function) = (yyvsp[(1) - (2)].function);
           (yyval.function)->parameters.push_tail(& (yyvsp[(2) - (2)].parameter_declarator)->link);
@@ -3534,8 +3537,8 @@ yyreduce:
 
   case 106:
 
-/* Line 1455 of yacc.c  */
-#line 732 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 727 "glsl_parser.ypp"
     {
           (yyval.function) = (yyvsp[(1) - (3)].function);
           (yyval.function)->parameters.push_tail(& (yyvsp[(3) - (3)].parameter_declarator)->link);
@@ -3544,8 +3547,8 @@ yyreduce:
 
   case 107:
 
-/* Line 1455 of yacc.c  */
-#line 740 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 735 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.function) = new(ctx) ast_function();
@@ -3557,8 +3560,8 @@ yyreduce:
 
   case 108:
 
-/* Line 1455 of yacc.c  */
-#line 751 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 746 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3572,8 +3575,8 @@ yyreduce:
 
   case 109:
 
-/* Line 1455 of yacc.c  */
-#line 761 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 756 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3589,8 +3592,8 @@ yyreduce:
 
   case 110:
 
-/* Line 1455 of yacc.c  */
-#line 776 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 771 "glsl_parser.ypp"
     {
           (yyvsp[(1) - (3)].type_qualifier).flags.i |= (yyvsp[(2) - (3)].type_qualifier).flags.i;
 
@@ -3601,8 +3604,8 @@ yyreduce:
 
   case 111:
 
-/* Line 1455 of yacc.c  */
-#line 783 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 778 "glsl_parser.ypp"
     {
           (yyval.parameter_declarator) = (yyvsp[(2) - (2)].parameter_declarator);
           (yyval.parameter_declarator)->type->qualifier = (yyvsp[(1) - (2)].type_qualifier);
@@ -3611,8 +3614,8 @@ yyreduce:
 
   case 112:
 
-/* Line 1455 of yacc.c  */
-#line 788 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 783 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyvsp[(1) - (3)].type_qualifier).flags.i |= (yyvsp[(2) - (3)].type_qualifier).flags.i;
@@ -3627,8 +3630,8 @@ yyreduce:
 
   case 113:
 
-/* Line 1455 of yacc.c  */
-#line 799 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 794 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3641,8 +3644,8 @@ yyreduce:
 
   case 114:
 
-/* Line 1455 of yacc.c  */
-#line 811 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 806 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
        ;}
@@ -3650,8 +3653,8 @@ yyreduce:
 
   case 115:
 
-/* Line 1455 of yacc.c  */
-#line 815 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 810 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.in = 1;
@@ -3660,8 +3663,8 @@ yyreduce:
 
   case 116:
 
-/* Line 1455 of yacc.c  */
-#line 820 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 815 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.out = 1;
@@ -3670,8 +3673,8 @@ yyreduce:
 
   case 117:
 
-/* Line 1455 of yacc.c  */
-#line 825 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 820 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.in = 1;
@@ -3681,8 +3684,8 @@ yyreduce:
 
   case 120:
 
-/* Line 1455 of yacc.c  */
-#line 839 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 834 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (3)].identifier), false, NULL, NULL);
@@ -3695,8 +3698,8 @@ yyreduce:
 
   case 121:
 
-/* Line 1455 of yacc.c  */
-#line 848 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 843 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), true, NULL, NULL);
@@ -3709,8 +3712,8 @@ yyreduce:
 
   case 122:
 
-/* Line 1455 of yacc.c  */
-#line 857 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 852 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (6)].identifier), true, (yyvsp[(5) - (6)].expression), NULL);
@@ -3723,8 +3726,8 @@ yyreduce:
 
   case 123:
 
-/* Line 1455 of yacc.c  */
-#line 866 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 861 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (7)].identifier), true, NULL, (yyvsp[(7) - (7)].expression));
@@ -3737,8 +3740,8 @@ yyreduce:
 
   case 124:
 
-/* Line 1455 of yacc.c  */
-#line 875 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 870 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (8)].identifier), true, (yyvsp[(5) - (8)].expression), (yyvsp[(8) - (8)].expression));
@@ -3751,8 +3754,8 @@ yyreduce:
 
   case 125:
 
-/* Line 1455 of yacc.c  */
-#line 884 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 879 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), false, NULL, (yyvsp[(5) - (5)].expression));
@@ -3765,8 +3768,8 @@ yyreduce:
 
   case 126:
 
-/* Line 1455 of yacc.c  */
-#line 897 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 892 "glsl_parser.ypp"
     {
           void *ctx = state;
           if ((yyvsp[(1) - (1)].fully_specified_type)->specifier->type_specifier != ast_struct) {
@@ -3781,8 +3784,8 @@ yyreduce:
 
   case 127:
 
-/* Line 1455 of yacc.c  */
-#line 908 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 903 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
@@ -3795,8 +3798,8 @@ yyreduce:
 
   case 128:
 
-/* Line 1455 of yacc.c  */
-#line 917 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 912 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), true, NULL, NULL);
@@ -3809,8 +3812,8 @@ yyreduce:
 
   case 129:
 
-/* Line 1455 of yacc.c  */
-#line 926 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 921 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (5)].identifier), true, (yyvsp[(4) - (5)].expression), NULL);
@@ -3823,8 +3826,8 @@ yyreduce:
 
   case 130:
 
-/* Line 1455 of yacc.c  */
-#line 935 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 930 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (6)].identifier), true, NULL, (yyvsp[(6) - (6)].expression));
@@ -3837,8 +3840,8 @@ yyreduce:
 
   case 131:
 
-/* Line 1455 of yacc.c  */
-#line 944 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 939 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (7)].identifier), true, (yyvsp[(4) - (7)].expression), (yyvsp[(7) - (7)].expression));
@@ -3851,8 +3854,8 @@ yyreduce:
 
   case 132:
 
-/* Line 1455 of yacc.c  */
-#line 953 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 948 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
@@ -3865,8 +3868,8 @@ yyreduce:
 
   case 133:
 
-/* Line 1455 of yacc.c  */
-#line 962 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 957 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
@@ -3881,8 +3884,8 @@ yyreduce:
 
   case 134:
 
-/* Line 1455 of yacc.c  */
-#line 976 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 971 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
@@ -3893,8 +3896,8 @@ yyreduce:
 
   case 135:
 
-/* Line 1455 of yacc.c  */
-#line 983 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 978 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
@@ -3906,8 +3909,8 @@ yyreduce:
 
   case 136:
 
-/* Line 1455 of yacc.c  */
-#line 994 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 989 "glsl_parser.ypp"
     {
          (yyval.type_qualifier) = (yyvsp[(3) - (4)].type_qualifier);
        ;}
@@ -3915,8 +3918,8 @@ yyreduce:
 
   case 138:
 
-/* Line 1455 of yacc.c  */
-#line 1002 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 997 "glsl_parser.ypp"
     {
           if (((yyvsp[(1) - (3)].type_qualifier).flags.i & (yyvsp[(3) - (3)].type_qualifier).flags.i) != 0) {
              _mesa_glsl_error(& (yylsp[(3) - (3)]), state,
@@ -3936,8 +3939,8 @@ yyreduce:
 
   case 139:
 
-/* Line 1455 of yacc.c  */
-#line 1021 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1016 "glsl_parser.ypp"
     {
           bool got_one = false;
 
@@ -3970,8 +3973,8 @@ yyreduce:
 
   case 140:
 
-/* Line 1455 of yacc.c  */
-#line 1050 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1045 "glsl_parser.ypp"
     {
           bool got_one = false;
 
@@ -4013,8 +4016,8 @@ yyreduce:
 
   case 141:
 
-/* Line 1455 of yacc.c  */
-#line 1091 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1086 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.smooth = 1;
@@ -4023,8 +4026,8 @@ yyreduce:
 
   case 142:
 
-/* Line 1455 of yacc.c  */
-#line 1096 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1091 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.flat = 1;
@@ -4033,8 +4036,8 @@ yyreduce:
 
   case 143:
 
-/* Line 1455 of yacc.c  */
-#line 1101 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1096 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.noperspective = 1;
@@ -4043,8 +4046,8 @@ yyreduce:
 
   case 144:
 
-/* Line 1455 of yacc.c  */
-#line 1109 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1104 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.constant = 1;
@@ -4053,8 +4056,8 @@ yyreduce:
 
   case 147:
 
-/* Line 1455 of yacc.c  */
-#line 1119 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1114 "glsl_parser.ypp"
     {
           (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier);
           (yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i;
@@ -4063,8 +4066,8 @@ yyreduce:
 
   case 149:
 
-/* Line 1455 of yacc.c  */
-#line 1125 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1120 "glsl_parser.ypp"
     {
           (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier);
           (yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i;
@@ -4073,8 +4076,8 @@ yyreduce:
 
   case 150:
 
-/* Line 1455 of yacc.c  */
-#line 1130 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1125 "glsl_parser.ypp"
     {
           (yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier);
           (yyval.type_qualifier).flags.q.invariant = 1;
@@ -4083,8 +4086,8 @@ yyreduce:
 
   case 151:
 
-/* Line 1455 of yacc.c  */
-#line 1135 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1130 "glsl_parser.ypp"
     {
           (yyval.type_qualifier) = (yyvsp[(2) - (3)].type_qualifier);
           (yyval.type_qualifier).flags.i |= (yyvsp[(3) - (3)].type_qualifier).flags.i;
@@ -4094,8 +4097,8 @@ yyreduce:
 
   case 152:
 
-/* Line 1455 of yacc.c  */
-#line 1141 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1136 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.invariant = 1;
@@ -4104,8 +4107,8 @@ yyreduce:
 
   case 153:
 
-/* Line 1455 of yacc.c  */
-#line 1149 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1144 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.constant = 1;
@@ -4114,8 +4117,8 @@ yyreduce:
 
   case 154:
 
-/* Line 1455 of yacc.c  */
-#line 1154 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1149 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.attribute = 1;
@@ -4124,8 +4127,8 @@ yyreduce:
 
   case 155:
 
-/* Line 1455 of yacc.c  */
-#line 1159 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1154 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.varying = 1;
@@ -4134,8 +4137,8 @@ yyreduce:
 
   case 156:
 
-/* Line 1455 of yacc.c  */
-#line 1164 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1159 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.centroid = 1;
@@ -4145,8 +4148,8 @@ yyreduce:
 
   case 157:
 
-/* Line 1455 of yacc.c  */
-#line 1170 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1165 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.in = 1;
@@ -4155,8 +4158,8 @@ yyreduce:
 
   case 158:
 
-/* Line 1455 of yacc.c  */
-#line 1175 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1170 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.out = 1;
@@ -4165,8 +4168,8 @@ yyreduce:
 
   case 159:
 
-/* Line 1455 of yacc.c  */
-#line 1180 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1175 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.in = 1;
@@ -4175,8 +4178,8 @@ yyreduce:
 
   case 160:
 
-/* Line 1455 of yacc.c  */
-#line 1185 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1180 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.out = 1;
@@ -4185,18 +4188,27 @@ yyreduce:
 
   case 161:
 
-/* Line 1455 of yacc.c  */
-#line 1190 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1185 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.uniform = 1;
        ;}
     break;
 
+  case 162:
+
+/* Line 1464 of yacc.c  */
+#line 1193 "glsl_parser.ypp"
+    {
+          (yyval.type_specifier) = (yyvsp[(1) - (1)].type_specifier);
+       ;}
+    break;
+
   case 163:
 
-/* Line 1455 of yacc.c  */
-#line 1199 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1197 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(2) - (2)].type_specifier);
           (yyval.type_specifier)->precision = (yyvsp[(1) - (2)].n);
@@ -4205,8 +4217,8 @@ yyreduce:
 
   case 165:
 
-/* Line 1455 of yacc.c  */
-#line 1208 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1206 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(1) - (3)].type_specifier);
           (yyval.type_specifier)->is_array = true;
@@ -4216,8 +4228,8 @@ yyreduce:
 
   case 166:
 
-/* Line 1455 of yacc.c  */
-#line 1214 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1212 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(1) - (4)].type_specifier);
           (yyval.type_specifier)->is_array = true;
@@ -4227,8 +4239,8 @@ yyreduce:
 
   case 167:
 
-/* Line 1455 of yacc.c  */
-#line 1223 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1221 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].n));
@@ -4238,8 +4250,8 @@ yyreduce:
 
   case 168:
 
-/* Line 1455 of yacc.c  */
-#line 1229 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1227 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].struct_specifier));
@@ -4249,8 +4261,8 @@ yyreduce:
 
   case 169:
 
-/* Line 1455 of yacc.c  */
-#line 1235 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1233 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier));
@@ -4260,365 +4272,365 @@ yyreduce:
 
   case 170:
 
-/* Line 1455 of yacc.c  */
-#line 1243 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1241 "glsl_parser.ypp"
     { (yyval.n) = ast_void; ;}
     break;
 
   case 171:
 
-/* Line 1455 of yacc.c  */
-#line 1244 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1242 "glsl_parser.ypp"
     { (yyval.n) = ast_float; ;}
     break;
 
   case 172:
 
-/* Line 1455 of yacc.c  */
-#line 1245 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1243 "glsl_parser.ypp"
     { (yyval.n) = ast_int; ;}
     break;
 
   case 173:
 
-/* Line 1455 of yacc.c  */
-#line 1246 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1244 "glsl_parser.ypp"
     { (yyval.n) = ast_uint; ;}
     break;
 
   case 174:
 
-/* Line 1455 of yacc.c  */
-#line 1247 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1245 "glsl_parser.ypp"
     { (yyval.n) = ast_bool; ;}
     break;
 
   case 175:
 
-/* Line 1455 of yacc.c  */
-#line 1248 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1246 "glsl_parser.ypp"
     { (yyval.n) = ast_vec2; ;}
     break;
 
   case 176:
 
-/* Line 1455 of yacc.c  */
-#line 1249 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1247 "glsl_parser.ypp"
     { (yyval.n) = ast_vec3; ;}
     break;
 
   case 177:
 
-/* Line 1455 of yacc.c  */
-#line 1250 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1248 "glsl_parser.ypp"
     { (yyval.n) = ast_vec4; ;}
     break;
 
   case 178:
 
-/* Line 1455 of yacc.c  */
-#line 1251 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1249 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec2; ;}
     break;
 
   case 179:
 
-/* Line 1455 of yacc.c  */
-#line 1252 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1250 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec3; ;}
     break;
 
   case 180:
 
-/* Line 1455 of yacc.c  */
-#line 1253 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1251 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec4; ;}
     break;
 
   case 181:
 
-/* Line 1455 of yacc.c  */
-#line 1254 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1252 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec2; ;}
     break;
 
   case 182:
 
-/* Line 1455 of yacc.c  */
-#line 1255 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1253 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec3; ;}
     break;
 
   case 183:
 
-/* Line 1455 of yacc.c  */
-#line 1256 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1254 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec4; ;}
     break;
 
   case 184:
 
-/* Line 1455 of yacc.c  */
-#line 1257 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1255 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec2; ;}
     break;
 
   case 185:
 
-/* Line 1455 of yacc.c  */
-#line 1258 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1256 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec3; ;}
     break;
 
   case 186:
 
-/* Line 1455 of yacc.c  */
-#line 1259 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1257 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec4; ;}
     break;
 
   case 187:
 
-/* Line 1455 of yacc.c  */
-#line 1260 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1258 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2; ;}
     break;
 
   case 188:
 
-/* Line 1455 of yacc.c  */
-#line 1261 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1259 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2x3; ;}
     break;
 
   case 189:
 
-/* Line 1455 of yacc.c  */
-#line 1262 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1260 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2x4; ;}
     break;
 
   case 190:
 
-/* Line 1455 of yacc.c  */
-#line 1263 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1261 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3x2; ;}
     break;
 
   case 191:
 
-/* Line 1455 of yacc.c  */
-#line 1264 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1262 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3; ;}
     break;
 
   case 192:
 
-/* Line 1455 of yacc.c  */
-#line 1265 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1263 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3x4; ;}
     break;
 
   case 193:
 
-/* Line 1455 of yacc.c  */
-#line 1266 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1264 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4x2; ;}
     break;
 
   case 194:
 
-/* Line 1455 of yacc.c  */
-#line 1267 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1265 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4x3; ;}
     break;
 
   case 195:
 
-/* Line 1455 of yacc.c  */
-#line 1268 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1266 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4; ;}
     break;
 
   case 196:
 
-/* Line 1455 of yacc.c  */
-#line 1269 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1267 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1d; ;}
     break;
 
   case 197:
 
-/* Line 1455 of yacc.c  */
-#line 1270 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1268 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2d; ;}
     break;
 
   case 198:
 
-/* Line 1455 of yacc.c  */
-#line 1271 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1269 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2drect; ;}
     break;
 
   case 199:
 
-/* Line 1455 of yacc.c  */
-#line 1272 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1270 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler3d; ;}
     break;
 
   case 200:
 
-/* Line 1455 of yacc.c  */
-#line 1273 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1271 "glsl_parser.ypp"
     { (yyval.n) = ast_samplercube; ;}
     break;
 
   case 201:
 
-/* Line 1455 of yacc.c  */
-#line 1274 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1272 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1dshadow; ;}
     break;
 
   case 202:
 
-/* Line 1455 of yacc.c  */
-#line 1275 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1273 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2dshadow; ;}
     break;
 
   case 203:
 
-/* Line 1455 of yacc.c  */
-#line 1276 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1274 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2drectshadow; ;}
     break;
 
   case 204:
 
-/* Line 1455 of yacc.c  */
-#line 1277 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1275 "glsl_parser.ypp"
     { (yyval.n) = ast_samplercubeshadow; ;}
     break;
 
   case 205:
 
-/* Line 1455 of yacc.c  */
-#line 1278 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1276 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1darray; ;}
     break;
 
   case 206:
 
-/* Line 1455 of yacc.c  */
-#line 1279 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1277 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2darray; ;}
     break;
 
   case 207:
 
-/* Line 1455 of yacc.c  */
-#line 1280 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1278 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1darrayshadow; ;}
     break;
 
   case 208:
 
-/* Line 1455 of yacc.c  */
-#line 1281 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1279 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2darrayshadow; ;}
     break;
 
   case 209:
 
-/* Line 1455 of yacc.c  */
-#line 1282 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1280 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler1d; ;}
     break;
 
   case 210:
 
-/* Line 1455 of yacc.c  */
-#line 1283 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1281 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler2d; ;}
     break;
 
   case 211:
 
-/* Line 1455 of yacc.c  */
-#line 1284 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1282 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler3d; ;}
     break;
 
   case 212:
 
-/* Line 1455 of yacc.c  */
-#line 1285 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1283 "glsl_parser.ypp"
     { (yyval.n) = ast_isamplercube; ;}
     break;
 
   case 213:
 
-/* Line 1455 of yacc.c  */
-#line 1286 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1284 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler1darray; ;}
     break;
 
   case 214:
 
-/* Line 1455 of yacc.c  */
-#line 1287 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1285 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler2darray; ;}
     break;
 
   case 215:
 
-/* Line 1455 of yacc.c  */
-#line 1288 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1286 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler1d; ;}
     break;
 
   case 216:
 
-/* Line 1455 of yacc.c  */
-#line 1289 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1287 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler2d; ;}
     break;
 
   case 217:
 
-/* Line 1455 of yacc.c  */
-#line 1290 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1288 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler3d; ;}
     break;
 
   case 218:
 
-/* Line 1455 of yacc.c  */
-#line 1291 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1289 "glsl_parser.ypp"
     { (yyval.n) = ast_usamplercube; ;}
     break;
 
   case 219:
 
-/* Line 1455 of yacc.c  */
-#line 1292 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1290 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler1darray; ;}
     break;
 
   case 220:
 
-/* Line 1455 of yacc.c  */
-#line 1293 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1291 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler2darray; ;}
     break;
 
   case 221:
 
-/* Line 1455 of yacc.c  */
-#line 1297 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1295 "glsl_parser.ypp"
     {
                     if (!state->es_shader && state->language_version < 130)
                        _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4633,8 +4645,8 @@ yyreduce:
 
   case 222:
 
-/* Line 1455 of yacc.c  */
-#line 1307 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1305 "glsl_parser.ypp"
     {
                     if (!state->es_shader && state->language_version < 130)
                        _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4649,8 +4661,8 @@ yyreduce:
 
   case 223:
 
-/* Line 1455 of yacc.c  */
-#line 1317 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1315 "glsl_parser.ypp"
     {
                     if (!state->es_shader && state->language_version < 130)
                        _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4665,8 +4677,8 @@ yyreduce:
 
   case 224:
 
-/* Line 1455 of yacc.c  */
-#line 1331 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1329 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[(2) - (5)].identifier), (yyvsp[(4) - (5)].node));
@@ -4676,8 +4688,8 @@ yyreduce:
 
   case 225:
 
-/* Line 1455 of yacc.c  */
-#line 1337 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1335 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[(3) - (4)].node));
@@ -4687,8 +4699,8 @@ yyreduce:
 
   case 226:
 
-/* Line 1455 of yacc.c  */
-#line 1346 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1344 "glsl_parser.ypp"
     {
           (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].declarator_list);
           (yyvsp[(1) - (1)].declarator_list)->link.self_link();
@@ -4697,8 +4709,8 @@ yyreduce:
 
   case 227:
 
-/* Line 1455 of yacc.c  */
-#line 1351 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1349 "glsl_parser.ypp"
     {
           (yyval.node) = (ast_node *) (yyvsp[(1) - (2)].node);
           (yyval.node)->link.insert_before(& (yyvsp[(2) - (2)].declarator_list)->link);
@@ -4707,8 +4719,8 @@ yyreduce:
 
   case 228:
 
-/* Line 1455 of yacc.c  */
-#line 1359 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1357 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_fully_specified_type *type = new(ctx) ast_fully_specified_type();
@@ -4724,8 +4736,8 @@ yyreduce:
 
   case 229:
 
-/* Line 1455 of yacc.c  */
-#line 1374 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1372 "glsl_parser.ypp"
     {
           (yyval.declaration) = (yyvsp[(1) - (1)].declaration);
           (yyvsp[(1) - (1)].declaration)->link.self_link();
@@ -4734,8 +4746,8 @@ yyreduce:
 
   case 230:
 
-/* Line 1455 of yacc.c  */
-#line 1379 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1377 "glsl_parser.ypp"
     {
           (yyval.declaration) = (yyvsp[(1) - (3)].declaration);
           (yyval.declaration)->link.insert_before(& (yyvsp[(3) - (3)].declaration)->link);
@@ -4744,8 +4756,8 @@ yyreduce:
 
   case 231:
 
-/* Line 1455 of yacc.c  */
-#line 1387 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1385 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (1)].identifier), false, NULL, NULL);
@@ -4755,8 +4767,8 @@ yyreduce:
 
   case 232:
 
-/* Line 1455 of yacc.c  */
-#line 1393 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1391 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (4)].identifier), true, (yyvsp[(3) - (4)].expression), NULL);
@@ -4766,29 +4778,29 @@ yyreduce:
 
   case 235:
 
-/* Line 1455 of yacc.c  */
-#line 1411 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1409 "glsl_parser.ypp"
     { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
     break;
 
   case 240:
 
-/* Line 1455 of yacc.c  */
-#line 1419 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1417 "glsl_parser.ypp"
     { (yyval.node) = NULL; ;}
     break;
 
   case 241:
 
-/* Line 1455 of yacc.c  */
-#line 1420 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1418 "glsl_parser.ypp"
     { (yyval.node) = NULL; ;}
     break;
 
   case 244:
 
-/* Line 1455 of yacc.c  */
-#line 1427 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1425 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(true, NULL);
@@ -4798,8 +4810,8 @@ yyreduce:
 
   case 245:
 
-/* Line 1455 of yacc.c  */
-#line 1433 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1431 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[(2) - (3)].node));
@@ -4809,15 +4821,15 @@ yyreduce:
 
   case 246:
 
-/* Line 1455 of yacc.c  */
-#line 1441 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1439 "glsl_parser.ypp"
     { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
     break;
 
   case 248:
 
-/* Line 1455 of yacc.c  */
-#line 1447 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1445 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(false, NULL);
@@ -4827,8 +4839,8 @@ yyreduce:
 
   case 249:
 
-/* Line 1455 of yacc.c  */
-#line 1453 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1451 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[(2) - (3)].node));
@@ -4838,8 +4850,8 @@ yyreduce:
 
   case 250:
 
-/* Line 1455 of yacc.c  */
-#line 1462 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1460 "glsl_parser.ypp"
     {
           if ((yyvsp[(1) - (1)].node) == NULL) {
              _mesa_glsl_error(& (yylsp[(1) - (1)]), state, "<nil> statement\n");
@@ -4853,8 +4865,8 @@ yyreduce:
 
   case 251:
 
-/* Line 1455 of yacc.c  */
-#line 1472 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1470 "glsl_parser.ypp"
     {
           if ((yyvsp[(2) - (2)].node) == NULL) {
              _mesa_glsl_error(& (yylsp[(2) - (2)]), state, "<nil> statement\n");
@@ -4867,8 +4879,8 @@ yyreduce:
 
   case 252:
 
-/* Line 1455 of yacc.c  */
-#line 1484 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1482 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_expression_statement(NULL);
@@ -4878,8 +4890,8 @@ yyreduce:
 
   case 253:
 
-/* Line 1455 of yacc.c  */
-#line 1490 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1488 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_expression_statement((yyvsp[(1) - (2)].expression));
@@ -4889,8 +4901,8 @@ yyreduce:
 
   case 254:
 
-/* Line 1455 of yacc.c  */
-#line 1499 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1497 "glsl_parser.ypp"
     {
           (yyval.node) = new(state) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].selection_rest_statement).then_statement,
                                                   (yyvsp[(5) - (5)].selection_rest_statement).else_statement);
@@ -4900,8 +4912,8 @@ yyreduce:
 
   case 255:
 
-/* Line 1455 of yacc.c  */
-#line 1508 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1506 "glsl_parser.ypp"
     {
           (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (3)].node);
           (yyval.selection_rest_statement).else_statement = (yyvsp[(3) - (3)].node);
@@ -4910,8 +4922,8 @@ yyreduce:
 
   case 256:
 
-/* Line 1455 of yacc.c  */
-#line 1513 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1511 "glsl_parser.ypp"
     {
           (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (1)].node);
           (yyval.selection_rest_statement).else_statement = NULL;
@@ -4920,8 +4932,8 @@ yyreduce:
 
   case 257:
 
-/* Line 1455 of yacc.c  */
-#line 1521 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1519 "glsl_parser.ypp"
     {
           (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].expression);
        ;}
@@ -4929,8 +4941,8 @@ yyreduce:
 
   case 258:
 
-/* Line 1455 of yacc.c  */
-#line 1525 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1523 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
@@ -4945,8 +4957,8 @@ yyreduce:
 
   case 262:
 
-/* Line 1455 of yacc.c  */
-#line 1548 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1546 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while,
@@ -4957,8 +4969,8 @@ yyreduce:
 
   case 263:
 
-/* Line 1455 of yacc.c  */
-#line 1555 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1553 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while,
@@ -4969,8 +4981,8 @@ yyreduce:
 
   case 264:
 
-/* Line 1455 of yacc.c  */
-#line 1562 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1560 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for,
@@ -4981,8 +4993,8 @@ yyreduce:
 
   case 268:
 
-/* Line 1455 of yacc.c  */
-#line 1578 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1576 "glsl_parser.ypp"
     {
           (yyval.node) = NULL;
        ;}
@@ -4990,8 +5002,8 @@ yyreduce:
 
   case 269:
 
-/* Line 1455 of yacc.c  */
-#line 1585 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1583 "glsl_parser.ypp"
     {
           (yyval.for_rest_statement).cond = (yyvsp[(1) - (2)].node);
           (yyval.for_rest_statement).rest = NULL;
@@ -5000,8 +5012,8 @@ yyreduce:
 
   case 270:
 
-/* Line 1455 of yacc.c  */
-#line 1590 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1588 "glsl_parser.ypp"
     {
           (yyval.for_rest_statement).cond = (yyvsp[(1) - (3)].node);
           (yyval.for_rest_statement).rest = (yyvsp[(3) - (3)].expression);
@@ -5010,8 +5022,8 @@ yyreduce:
 
   case 271:
 
-/* Line 1455 of yacc.c  */
-#line 1599 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1597 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL);
@@ -5021,8 +5033,8 @@ yyreduce:
 
   case 272:
 
-/* Line 1455 of yacc.c  */
-#line 1605 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1603 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL);
@@ -5032,8 +5044,8 @@ yyreduce:
 
   case 273:
 
-/* Line 1455 of yacc.c  */
-#line 1611 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1609 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL);
@@ -5043,8 +5055,8 @@ yyreduce:
 
   case 274:
 
-/* Line 1455 of yacc.c  */
-#line 1617 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1615 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[(2) - (3)].expression));
@@ -5054,8 +5066,8 @@ yyreduce:
 
   case 275:
 
-/* Line 1455 of yacc.c  */
-#line 1623 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1621 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL);
@@ -5065,29 +5077,29 @@ yyreduce:
 
   case 276:
 
-/* Line 1455 of yacc.c  */
-#line 1631 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1629 "glsl_parser.ypp"
     { (yyval.node) = (yyvsp[(1) - (1)].function_definition); ;}
     break;
 
   case 277:
 
-/* Line 1455 of yacc.c  */
-#line 1632 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1630 "glsl_parser.ypp"
     { (yyval.node) = (yyvsp[(1) - (1)].node); ;}
     break;
 
   case 278:
 
-/* Line 1455 of yacc.c  */
-#line 1633 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1631 "glsl_parser.ypp"
     { (yyval.node) = NULL; ;}
     break;
 
   case 279:
 
-/* Line 1455 of yacc.c  */
-#line 1638 "glsl_parser.ypp"
+/* Line 1464 of yacc.c  */
+#line 1636 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.function_definition) = new(ctx) ast_function_definition();
@@ -5099,8 +5111,8 @@ yyreduce:
 
 
 
-/* Line 1455 of yacc.c  */
-#line 5104 "glsl_parser.cpp"
+/* Line 1464 of yacc.c  */
+#line 5116 "glsl_parser.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5172,7 +5184,7 @@ yyerrlab:
 #endif
     }
 
-  yyerror_range[0] = yylloc;
+  yyerror_range[1] = yylloc;
 
   if (yyerrstatus == 3)
     {
@@ -5209,7 +5221,7 @@ yyerrorlab:
   if (/*CONSTCOND*/ 0)
      goto yyerrorlab;
 
-  yyerror_range[0] = yylsp[1-yylen];
+  yyerror_range[1] = yylsp[1-yylen];
   /* Do not reclaim the symbols of the rule which action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
@@ -5243,7 +5255,7 @@ yyerrlab1:
       if (yyssp == yyss)
        YYABORT;
 
-      yyerror_range[0] = *yylsp;
+      yyerror_range[1] = *yylsp;
       yydestruct ("Error: popping",
                  yystos[yystate], yyvsp, yylsp, state);
       YYPOPSTACK (1);
@@ -5253,10 +5265,10 @@ yyerrlab1:
 
   *++yyvsp = yylval;
 
-  yyerror_range[1] = yylloc;
+  yyerror_range[2] = yylloc;
   /* Using YYLLOC is tempting, but would change the location of
      the lookahead.  YYLOC is available though.  */
-  YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
+  YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
   *++yylsp = yyloc;
 
   /* Shift the error token.  */
index 01b407d4dbeb1b15e446d912eddf27d2d5686eab..1bf3b3538c7157c01192c01a3d9407b6ebace217 100644 (file)
@@ -1,10 +1,9 @@
-
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* A Bison parser, made by GNU Bison 2.4.3.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2009, 2010 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 typedef union YYSTYPE
 {
 
-/* Line 1676 of yacc.c  */
+/* Line 1685 of yacc.c  */
 #line 52 "glsl_parser.ypp"
 
    int n;
@@ -272,8 +271,8 @@ typedef union YYSTYPE
 
 
 
-/* Line 1676 of yacc.c  */
-#line 277 "glsl_parser.h"
+/* Line 1685 of yacc.c  */
+#line 276 "glsl_parser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */