summaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/mesa
diff options
context:
space:
mode:
authorYu Ke <ke.yu@intel.com>2011-04-07 16:47:37 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-04-18 05:49:41 +0100
commitc00288e0d48d927a97216bfa760fe34c871b7981 (patch)
treeb3a6acb75ba975cbe9039f6eb18a9d544e08e892 /meta/recipes-graphics/mesa
parentd890254ee571447dfb5d7bde7545254acfa10eb9 (diff)
downloadpoky-c00288e0d48d927a97216bfa760fe34c871b7981.tar.gz
mesa: upgrade to 7.10.2
- also remove the talloc-removal.patch because it is already included in this version (From OE-Core rev: a59cb20da8eb66edcf6e99ca926609ecb80c5ae6) Signed-off-by: Yu Ke <ke.yu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-graphics/mesa')
-rw-r--r--meta/recipes-graphics/mesa/files/talloc-removal.patch15571
-rw-r--r--meta/recipes-graphics/mesa/mesa-dri_7.10.2.bb (renamed from meta/recipes-graphics/mesa/mesa-dri_7.10.bb)7
-rw-r--r--meta/recipes-graphics/mesa/mesa-xlib_7.10.2.bb (renamed from meta/recipes-graphics/mesa/mesa-xlib_7.10.bb)7
3 files changed, 6 insertions, 15579 deletions
diff --git a/meta/recipes-graphics/mesa/files/talloc-removal.patch b/meta/recipes-graphics/mesa/files/talloc-removal.patch
deleted file mode 100644
index 3038f6a5e6..0000000000
--- a/meta/recipes-graphics/mesa/files/talloc-removal.patch
+++ /dev/null
@@ -1,15571 +0,0 @@
1mesa: sync with mesa 7.10.1 devel branch to replace GPLv3 talloc with BSD-license ralloc
2
3mesa 7.10.1 devel branch already has the patch to replace talloc with ralloc, so this patch is the diff of mesa-7.10(7a3f869a4) and mesa 7.10.1 ralloc commit (546aade2)
4
5Pick-from-upstream-by: Yu Ke <ke.yu@intel.com>
6
7diff --git a/Makefile b/Makefile
8index d62ec43..32a5f2f 100644
9--- a/Makefile
10+++ b/Makefile
11@@ -180,7 +180,7 @@ ultrix-gcc:
12
13 # Rules for making release tarballs
14
15-VERSION=7.10
16+VERSION=7.10.1-devel
17 DIRECTORY = Mesa-$(VERSION)
18 LIB_NAME = MesaLib-$(VERSION)
19 GLUT_NAME = MesaGLUT-$(VERSION)
20diff --git a/configs/autoconf.in b/configs/autoconf.in
21index e2d70c6..1538d9a 100644
22--- a/configs/autoconf.in
23+++ b/configs/autoconf.in
24@@ -34,9 +34,6 @@ LLVM_LIBS = @LLVM_LIBS@
25 GLW_CFLAGS = @GLW_CFLAGS@
26 GLUT_CFLAGS = @GLUT_CFLAGS@
27
28-TALLOC_LIBS = @TALLOC_LIBS@
29-TALLOC_CFLAGS = @TALLOC_CFLAGS@
30-
31 # dlopen
32 DLOPEN_LIBS = @DLOPEN_LIBS@
33
34diff --git a/configs/default b/configs/default
35index 0301345..2301a68 100644
36--- a/configs/default
37+++ b/configs/default
38@@ -82,9 +82,6 @@ GLESv1_CM_LIB_GLOB = $(GLESv1_CM_LIB_NAME)*
39 GLESv2_LIB_GLOB = $(GLESv2_LIB_NAME)*
40 VG_LIB_GLOB = $(VG_LIB_NAME)*
41
42-TALLOC_LIBS = `pkg-config --libs talloc`
43-TALLOC_CFLAGS = `pkg-config --cflags talloc`
44-
45 # Optional assembly language optimization files for libGL
46 MESA_ASM_SOURCES =
47
48@@ -119,7 +116,7 @@ EGL_CLIENT_APIS = $(GL_LIB)
49
50 # Library dependencies
51 #EXTRA_LIB_PATH ?=
52-GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread $(TALLOC_LIBS)
53+GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread
54 EGL_LIB_DEPS = $(EXTRA_LIB_PATH) -ldl -lpthread
55 OSMESA_LIB_DEPS = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
56 GLU_LIB_DEPS = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm
57diff --git a/configs/linux-dri b/configs/linux-dri
58index 64fc407..1c94ed0 100644
59--- a/configs/linux-dri
60+++ b/configs/linux-dri
61@@ -45,7 +45,7 @@ EXTRA_LIB_PATH=-L/usr/X11R6/lib
62
63 LIBDRM_CFLAGS = $(shell pkg-config --cflags libdrm)
64 LIBDRM_LIB = $(shell pkg-config --libs libdrm)
65-DRI_LIB_DEPS = $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl -ltalloc $(LIBDRM_LIB)
66+DRI_LIB_DEPS = $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
67 GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
68 -lm -lpthread -ldl $(LIBDRM_LIB)
69
70diff --git a/configs/linux-llvm b/configs/linux-llvm
71index 22de066..e699953 100644
72--- a/configs/linux-llvm
73+++ b/configs/linux-llvm
74@@ -41,4 +41,4 @@ else
75 endif
76
77 LD = g++
78-GL_LIB_DEPS = $(LLVM_LDFLAGS) $(LLVM_LIBS) $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread -ltalloc -lstdc++ -ludis86
79+GL_LIB_DEPS = $(LLVM_LDFLAGS) $(LLVM_LIBS) $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread -lstdc++ -ludis86
80diff --git a/configure.ac b/configure.ac
81index b451f7c..6662b8a 100644
82--- a/configure.ac
83+++ b/configure.ac
84@@ -572,10 +572,6 @@ xno)
85 ;;
86 esac
87
88-PKG_CHECK_MODULES([TALLOC], [talloc])
89-AC_SUBST([TALLOC_LIBS])
90-AC_SUBST([TALLOC_CFLAGS])
91-
92 dnl
93 dnl Driver specific build directories
94 dnl
95@@ -714,8 +710,8 @@ xlib)
96 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
97 GL_PC_CFLAGS="$X11_INCLUDES"
98 fi
99- GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
100- GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
101+ GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
102+ GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
103
104 # if static, move the external libraries to the programs
105 # and empty the libraries for libGL
106@@ -964,7 +960,7 @@ if test "$mesa_driver" = dri -o "$mesa_driver" = no; then
107 fi
108
109 # put all the necessary libs together
110- DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS $TALLOC_LIBS"
111+ DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
112 fi
113 AC_SUBST([DRI_DIRS])
114 AC_SUBST([EXPAT_INCLUDES])
115@@ -1040,12 +1036,12 @@ case "$DRIVER_DIRS" in
116 *osmesa*)
117 # only link libraries with osmesa if shared
118 if test "$enable_static" = no; then
119- OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
120+ OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
121 else
122 OSMESA_LIB_DEPS=""
123 fi
124 OSMESA_MESA_DEPS=""
125- OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
126+ OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
127 ;;
128 esac
129 AC_SUBST([OSMESA_LIB_DEPS])
130diff --git a/docs/news.html b/docs/news.html
131index 72d38ee..ce0cd0c 100644
132--- a/docs/news.html
133+++ b/docs/news.html
134@@ -11,6 +11,19 @@
135 <H1>News</H1>
136
137
138+<h2>January 7, 2011</h2>
139+
140+<p>
141+<a href="relnotes-7.10.html">Mesa 7.10</a> (final) is released. This is a new
142+development release.
143+</p>
144+
145+<p>
146+Also, <a href="relnotes-7.9.1.html">Mesa 7.9.1</a> (final) is released.
147+This is a bug fix release.
148+</p>
149+
150+
151 <h2>October 4, 2010</h2>
152
153 <p>
154diff --git a/docs/relnotes-7.10.1.html b/docs/relnotes-7.10.1.html
155new file mode 100644
156index 0000000..1cd8d85
157--- /dev/null
158+++ b/docs/relnotes-7.10.1.html
159@@ -0,0 +1,84 @@
160+<HTML>
161+
162+<head>
163+<TITLE>Mesa Release Notes</TITLE>
164+<link rel="stylesheet" type="text/css" href="mesa.css">
165+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
166+</head>
167+
168+<BODY>
169+
170+<body bgcolor="#eeeeee">
171+
172+<H1>Mesa 7.10.1 Release Notes / TBD</H1>
173+
174+<p>
175+Mesa 7.10.1 is a bug fix release which fixes bugs found since the 7.10 release.
176+</p>
177+<p>
178+Mesa 7.10.1 implements the OpenGL 2.1 API, but the version reported by
179+glGetString(GL_VERSION) depends on the particular driver being used.
180+Some drivers don't support all the features required in OpenGL 2.1.
181+</p>
182+<p>
183+See the <a href="install.html">Compiling/Installing page</a> for prerequisites
184+for DRI hardware acceleration.
185+</p>
186+
187+
188+<h2>MD5 checksums</h2>
189+<pre>
190+TBD
191+</pre>
192+
193+
194+<h2>New features</h2>
195+<p>None.</p>
196+
197+<h2>Bug fixes</h2>
198+<p>This list is likely incomplete.</p>
199+<ul>
200+<li>Fix an off-by-one bug in a vsplit assertion.</li>
201+<li>Fix incorrect handling of <tt>layout</tt> qualifier
202+with <tt>in</tt>, <tt>out</tt>, <tt>attribute</tt>, and <tt>varying</tt>.</li>
203+
204+<li>Fix an i965 shader bug where the negative absolute value was generated instead of the absolute value of a negation.</li>
205+
206+<li>Fix numerous issues handling precision qualifiers in GLSL ES.</li>
207+
208+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29164">Bug 29164</a> - [GLSL 1.20] invariant variable shouldn't be used before declaration</li>
209+
210+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30156">Bug 30156</a> - [i965] After updating to Mesa 7.9, Civilization IV starts to show garbage</li>
211+
212+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31923">Bug 31923</a> - [GLSL 1.20] allowing inconsistent centroid declaration between two vertex shaders</li>
213+
214+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31925">Bug 31925</a> - [GLSL 1.20] "#pragma STDGL invariant(all)" fail</li>
215+
216+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32695">Bug 32695</a> - [glsl] SIGSEGV glcpp/glcpp-parse.y:833</li>
217+
218+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32831">Bug 32831</a> - [glsl] division by zero crashes GLSL compiler</li>
219+
220+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32910">Bug 32910</a> - Keywords 'in' and 'out' not handled properly for GLSL 1.20 shaders</li>
221+
222+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33219">Bug 33219</a> -[GLSL bisected] implicit sized array triggers segfault in ir_to_mesa_visitor::copy_propagate</li>
223+
224+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33308">Bug 33308</a> -[glsl] ast_to_hir.cpp:3016: virtual ir_rvalue* ast_jump_statement::hir(exec_list*, _mesa_glsl_parse_state*): Assertion `ret != __null' failed.</li>
225+
226+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33316">Bug 33316</a> - uniform array will be allocate one line more and initialize it when it was freed will abort</li>
227+
228+<!-- <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=">Bug </a> - </li> -->
229+
230+</ul>
231+
232+
233+<h2>Changes</h2>
234+<p>The full set of changes can be viewed by using the following GIT command:</p>
235+
236+<pre>
237+ git log mesa-7.10..origin/7.10
238+</pre>
239+
240+</p>
241+
242+</body>
243+</html>
244diff --git a/docs/relnotes-7.10.html b/docs/relnotes-7.10.html
245index 2abbc4a..3f4f229 100644
246--- a/docs/relnotes-7.10.html
247+++ b/docs/relnotes-7.10.html
248@@ -1,8 +1,10 @@
249 <HTML>
250
251+<head>
252 <TITLE>Mesa Release Notes</TITLE>
253-
254-<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
255+<link rel="stylesheet" type="text/css" href="mesa.css">
256+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
257+</head>
258
259 <BODY>
260
261@@ -28,7 +30,12 @@ for DRI hardware acceleration.
262
263 <h2>MD5 checksums</h2>
264 <pre>
265-tbd
266+0a70c15c135561824bdcae92bf232e43 MesaLib-7.10.tar.gz
267+33fb94eccc02cbb4d8d1365615e38e46 MesaLib-7.10.tar.bz2
268+5cafdc0eda0f9bf370b95c98df3338fa MesaLib-7.10.zip
269+bc644be551ed585fc4f66c16b64a91c9 MesaGLUT-7.10.tar.gz
270+5c2677a155672352d62b177e4f0f92e8 MesaGLUT-7.10.tar.bz2
271+2ce5001f74496d1ba719ef74d910a5cf MesaGLUT-7.10.zip
272 </pre>
273
274
275diff --git a/docs/relnotes-7.9.1.html b/docs/relnotes-7.9.1.html
276index a46eb16..bef4ef1 100644
277--- a/docs/relnotes-7.9.1.html
278+++ b/docs/relnotes-7.9.1.html
279@@ -1,8 +1,10 @@
280 <HTML>
281
282+<head>
283 <TITLE>Mesa Release Notes</TITLE>
284-
285-<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
286+<link rel="stylesheet" type="text/css" href="mesa.css">
287+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
288+</head>
289
290 <BODY>
291
292diff --git a/docs/relnotes.html b/docs/relnotes.html
293index 4487af9..036d3f8 100644
294--- a/docs/relnotes.html
295+++ b/docs/relnotes.html
296@@ -13,6 +13,8 @@ The release notes summarize what's new or changed in each Mesa release.
297 </p>
298
299 <UL>
300+<LI><A HREF="relnotes-7.10.html">7.10 release notes</A>
301+<LI><A HREF="relnotes-7.9.1html">7.9.1 release notes</A>
302 <LI><A HREF="relnotes-7.9.html">7.9 release notes</A>
303 <LI><A HREF="relnotes-7.8.3.html">7.8.3 release notes</A>
304 <LI><A HREF="relnotes-7.8.2.html">7.8.2 release notes</A>
305diff --git a/include/GL/gl_mangle.h b/include/GL/gl_mangle.h
306index 43d2e89..3684803 100644
307--- a/include/GL/gl_mangle.h
308+++ b/include/GL/gl_mangle.h
309@@ -31,6 +31,7 @@
310
311 #define glAccum MANGLE(Accum)
312 #define glActiveProgramEXT MANGLE(ActiveProgramEXT)
313+#define glActiveShaderProgram MANGLE(ActiveShaderProgram)
314 #define glActiveStencilFaceEXT MANGLE(ActiveStencilFaceEXT)
315 #define glActiveTextureARB MANGLE(ActiveTextureARB)
316 #define glActiveTexture MANGLE(ActiveTexture)
317@@ -56,6 +57,7 @@
318 #define glBeginOcclusionQueryNV MANGLE(BeginOcclusionQueryNV)
319 #define glBeginPerfMonitorAMD MANGLE(BeginPerfMonitorAMD)
320 #define glBeginQueryARB MANGLE(BeginQueryARB)
321+#define glBeginQueryIndexed MANGLE(BeginQueryIndexed)
322 #define glBeginQuery MANGLE(BeginQuery)
323 #define glBeginTransformFeedbackEXT MANGLE(BeginTransformFeedbackEXT)
324 #define glBeginTransformFeedback MANGLE(BeginTransformFeedback)
325@@ -75,22 +77,27 @@
326 #define glBindBufferRange MANGLE(BindBufferRange)
327 #define glBindBufferRangeNV MANGLE(BindBufferRangeNV)
328 #define glBindFragDataLocationEXT MANGLE(BindFragDataLocationEXT)
329+#define glBindFragDataLocationIndexed MANGLE(BindFragDataLocationIndexed)
330 #define glBindFragDataLocation MANGLE(BindFragDataLocation)
331 #define glBindFragmentShaderATI MANGLE(BindFragmentShaderATI)
332 #define glBindFramebufferEXT MANGLE(BindFramebufferEXT)
333 #define glBindFramebuffer MANGLE(BindFramebuffer)
334+#define glBindImageTextureEXT MANGLE(BindImageTextureEXT)
335 #define glBindLightParameterEXT MANGLE(BindLightParameterEXT)
336 #define glBindMaterialParameterEXT MANGLE(BindMaterialParameterEXT)
337 #define glBindMultiTextureEXT MANGLE(BindMultiTextureEXT)
338 #define glBindParameterEXT MANGLE(BindParameterEXT)
339 #define glBindProgramARB MANGLE(BindProgramARB)
340 #define glBindProgramNV MANGLE(BindProgramNV)
341+#define glBindProgramPipeline MANGLE(BindProgramPipeline)
342 #define glBindRenderbufferEXT MANGLE(BindRenderbufferEXT)
343 #define glBindRenderbuffer MANGLE(BindRenderbuffer)
344+#define glBindSampler MANGLE(BindSampler)
345 #define glBindTexGenParameterEXT MANGLE(BindTexGenParameterEXT)
346 #define glBindTextureEXT MANGLE(BindTextureEXT)
347 #define glBindTexture MANGLE(BindTexture)
348 #define glBindTextureUnitParameterEXT MANGLE(BindTextureUnitParameterEXT)
349+#define glBindTransformFeedback MANGLE(BindTransformFeedback)
350 #define glBindTransformFeedbackNV MANGLE(BindTransformFeedbackNV)
351 #define glBindVertexArrayAPPLE MANGLE(BindVertexArrayAPPLE)
352 #define glBindVertexArray MANGLE(BindVertexArray)
353@@ -112,18 +119,22 @@
354 #define glBlendColorEXT MANGLE(BlendColorEXT)
355 #define glBlendColor MANGLE(BlendColor)
356 #define glBlendEquationEXT MANGLE(BlendEquationEXT)
357+#define glBlendEquationiARB MANGLE(BlendEquationiARB)
358 #define glBlendEquationi MANGLE(BlendEquationi)
359 #define glBlendEquationIndexedAMD MANGLE(BlendEquationIndexedAMD)
360 #define glBlendEquation MANGLE(BlendEquation)
361 #define glBlendEquationSeparateATI MANGLE(BlendEquationSeparateATI)
362 #define glBlendEquationSeparateEXT MANGLE(BlendEquationSeparateEXT)
363+#define glBlendEquationSeparateiARB MANGLE(BlendEquationSeparateiARB)
364 #define glBlendEquationSeparatei MANGLE(BlendEquationSeparatei)
365 #define glBlendEquationSeparateIndexedAMD MANGLE(BlendEquationSeparateIndexedAMD)
366 #define glBlendEquationSeparate MANGLE(BlendEquationSeparate)
367+#define glBlendFunciARB MANGLE(BlendFunciARB)
368 #define glBlendFunci MANGLE(BlendFunci)
369 #define glBlendFuncIndexedAMD MANGLE(BlendFuncIndexedAMD)
370 #define glBlendFunc MANGLE(BlendFunc)
371 #define glBlendFuncSeparateEXT MANGLE(BlendFuncSeparateEXT)
372+#define glBlendFuncSeparateiARB MANGLE(BlendFuncSeparateiARB)
373 #define glBlendFuncSeparatei MANGLE(BlendFuncSeparatei)
374 #define glBlendFuncSeparateIndexedAMD MANGLE(BlendFuncSeparateIndexedAMD)
375 #define glBlendFuncSeparateINGR MANGLE(BlendFuncSeparateINGR)
376@@ -153,6 +164,7 @@
377 #define glClearColor MANGLE(ClearColor)
378 #define glClearDebugLogMESA MANGLE(ClearDebugLogMESA)
379 #define glClearDepthdNV MANGLE(ClearDepthdNV)
380+#define glClearDepthf MANGLE(ClearDepthf)
381 #define glClearDepth MANGLE(ClearDepth)
382 #define glClearIndex MANGLE(ClearIndex)
383 #define glClear MANGLE(Clear)
384@@ -215,6 +227,10 @@
385 #define glColorMaskIndexedEXT MANGLE(ColorMaskIndexedEXT)
386 #define glColorMask MANGLE(ColorMask)
387 #define glColorMaterial MANGLE(ColorMaterial)
388+#define glColorP3ui MANGLE(ColorP3ui)
389+#define glColorP3uiv MANGLE(ColorP3uiv)
390+#define glColorP4ui MANGLE(ColorP4ui)
391+#define glColorP4uiv MANGLE(ColorP4uiv)
392 #define glColorPointerEXT MANGLE(ColorPointerEXT)
393 #define glColorPointerListIBM MANGLE(ColorPointerListIBM)
394 #define glColorPointer MANGLE(ColorPointer)
395@@ -236,6 +252,7 @@
396 #define glCombinerParameterivNV MANGLE(CombinerParameterivNV)
397 #define glCombinerStageParameterfvNV MANGLE(CombinerStageParameterfvNV)
398 #define glCompileShaderARB MANGLE(CompileShaderARB)
399+#define glCompileShaderIncludeARB MANGLE(CompileShaderIncludeARB)
400 #define glCompileShader MANGLE(CompileShader)
401 #define glCompressedMultiTexImage1DEXT MANGLE(CompressedMultiTexImage1DEXT)
402 #define glCompressedMultiTexImage2DEXT MANGLE(CompressedMultiTexImage2DEXT)
403@@ -310,10 +327,18 @@
404 #define glCreateShader MANGLE(CreateShader)
405 #define glCreateShaderObjectARB MANGLE(CreateShaderObjectARB)
406 #define glCreateShaderProgramEXT MANGLE(CreateShaderProgramEXT)
407+#define glCreateShaderProgramv MANGLE(CreateShaderProgramv)
408+#define glCreateSyncFromCLeventARB MANGLE(CreateSyncFromCLeventARB)
409 #define glCullFace MANGLE(CullFace)
410 #define glCullParameterdvEXT MANGLE(CullParameterdvEXT)
411 #define glCullParameterfvEXT MANGLE(CullParameterfvEXT)
412 #define glCurrentPaletteMatrixARB MANGLE(CurrentPaletteMatrixARB)
413+#define glDebugMessageCallbackAMD MANGLE(DebugMessageCallbackAMD)
414+#define glDebugMessageCallbackARB MANGLE(DebugMessageCallbackARB)
415+#define glDebugMessageControlARB MANGLE(DebugMessageControlARB)
416+#define glDebugMessageEnableAMD MANGLE(DebugMessageEnableAMD)
417+#define glDebugMessageInsertAMD MANGLE(DebugMessageInsertAMD)
418+#define glDebugMessageInsertARB MANGLE(DebugMessageInsertARB)
419 #define glDeformationMap3dSGIX MANGLE(DeformationMap3dSGIX)
420 #define glDeformationMap3fSGIX MANGLE(DeformationMap3fSGIX)
421 #define glDeformSGIX MANGLE(DeformSGIX)
422@@ -326,20 +351,25 @@
423 #define glDeleteFramebuffersEXT MANGLE(DeleteFramebuffersEXT)
424 #define glDeleteFramebuffers MANGLE(DeleteFramebuffers)
425 #define glDeleteLists MANGLE(DeleteLists)
426+#define glDeleteNamedStringARB MANGLE(DeleteNamedStringARB)
427+#define glDeleteNamesAMD MANGLE(DeleteNamesAMD)
428 #define glDeleteObjectARB MANGLE(DeleteObjectARB)
429 #define glDeleteOcclusionQueriesNV MANGLE(DeleteOcclusionQueriesNV)
430 #define glDeletePerfMonitorsAMD MANGLE(DeletePerfMonitorsAMD)
431 #define glDeleteProgram MANGLE(DeleteProgram)
432+#define glDeleteProgramPipelines MANGLE(DeleteProgramPipelines)
433 #define glDeleteProgramsARB MANGLE(DeleteProgramsARB)
434 #define glDeleteProgramsNV MANGLE(DeleteProgramsNV)
435 #define glDeleteQueriesARB MANGLE(DeleteQueriesARB)
436 #define glDeleteQueries MANGLE(DeleteQueries)
437 #define glDeleteRenderbuffersEXT MANGLE(DeleteRenderbuffersEXT)
438 #define glDeleteRenderbuffers MANGLE(DeleteRenderbuffers)
439+#define glDeleteSamplers MANGLE(DeleteSamplers)
440 #define glDeleteShader MANGLE(DeleteShader)
441 #define glDeleteSync MANGLE(DeleteSync)
442 #define glDeleteTexturesEXT MANGLE(DeleteTexturesEXT)
443 #define glDeleteTextures MANGLE(DeleteTextures)
444+#define glDeleteTransformFeedbacks MANGLE(DeleteTransformFeedbacks)
445 #define glDeleteTransformFeedbacksNV MANGLE(DeleteTransformFeedbacksNV)
446 #define glDeleteVertexArraysAPPLE MANGLE(DeleteVertexArraysAPPLE)
447 #define glDeleteVertexArrays MANGLE(DeleteVertexArrays)
448@@ -348,7 +378,10 @@
449 #define glDepthBoundsEXT MANGLE(DepthBoundsEXT)
450 #define glDepthFunc MANGLE(DepthFunc)
451 #define glDepthMask MANGLE(DepthMask)
452+#define glDepthRangeArrayv MANGLE(DepthRangeArrayv)
453 #define glDepthRangedNV MANGLE(DepthRangedNV)
454+#define glDepthRangef MANGLE(DepthRangef)
455+#define glDepthRangeIndexed MANGLE(DepthRangeIndexed)
456 #define glDepthRange MANGLE(DepthRange)
457 #define glDetachObjectARB MANGLE(DetachObjectARB)
458 #define glDetachShader MANGLE(DetachShader)
459@@ -363,6 +396,7 @@
460 #define glDisableVertexAttribArrayARB MANGLE(DisableVertexAttribArrayARB)
461 #define glDisableVertexAttribArray MANGLE(DisableVertexAttribArray)
462 #define glDrawArraysEXT MANGLE(DrawArraysEXT)
463+#define glDrawArraysIndirect MANGLE(DrawArraysIndirect)
464 #define glDrawArraysInstancedARB MANGLE(DrawArraysInstancedARB)
465 #define glDrawArraysInstancedEXT MANGLE(DrawArraysInstancedEXT)
466 #define glDrawArraysInstanced MANGLE(DrawArraysInstanced)
467@@ -374,6 +408,7 @@
468 #define glDrawElementArrayAPPLE MANGLE(DrawElementArrayAPPLE)
469 #define glDrawElementArrayATI MANGLE(DrawElementArrayATI)
470 #define glDrawElementsBaseVertex MANGLE(DrawElementsBaseVertex)
471+#define glDrawElementsIndirect MANGLE(DrawElementsIndirect)
472 #define glDrawElementsInstancedARB MANGLE(DrawElementsInstancedARB)
473 #define glDrawElementsInstancedBaseVertex MANGLE(DrawElementsInstancedBaseVertex)
474 #define glDrawElementsInstancedEXT MANGLE(DrawElementsInstancedEXT)
475@@ -386,7 +421,9 @@
476 #define glDrawRangeElementsBaseVertex MANGLE(DrawRangeElementsBaseVertex)
477 #define glDrawRangeElementsEXT MANGLE(DrawRangeElementsEXT)
478 #define glDrawRangeElements MANGLE(DrawRangeElements)
479+#define glDrawTransformFeedback MANGLE(DrawTransformFeedback)
480 #define glDrawTransformFeedbackNV MANGLE(DrawTransformFeedbackNV)
481+#define glDrawTransformFeedbackStream MANGLE(DrawTransformFeedbackStream)
482 #define glEdgeFlagFormatNV MANGLE(EdgeFlagFormatNV)
483 #define glEdgeFlag MANGLE(EdgeFlag)
484 #define glEdgeFlagPointerEXT MANGLE(EdgeFlagPointerEXT)
485@@ -414,6 +451,7 @@
486 #define glEndOcclusionQueryNV MANGLE(EndOcclusionQueryNV)
487 #define glEndPerfMonitorAMD MANGLE(EndPerfMonitorAMD)
488 #define glEndQueryARB MANGLE(EndQueryARB)
489+#define glEndQueryIndexed MANGLE(EndQueryIndexed)
490 #define glEndQuery MANGLE(EndQuery)
491 #define glEndTransformFeedbackEXT MANGLE(EndTransformFeedbackEXT)
492 #define glEndTransformFeedback MANGLE(EndTransformFeedback)
493@@ -447,6 +485,7 @@
494 #define glFlush MANGLE(Flush)
495 #define glFlushMappedBufferRangeAPPLE MANGLE(FlushMappedBufferRangeAPPLE)
496 #define glFlushMappedBufferRange MANGLE(FlushMappedBufferRange)
497+#define glFlushMappedNamedBufferRangeEXT MANGLE(FlushMappedNamedBufferRangeEXT)
498 #define glFlushPixelDataRangeNV MANGLE(FlushPixelDataRangeNV)
499 #define glFlushRasterSGIX MANGLE(FlushRasterSGIX)
500 #define glFlushVertexArrayRangeAPPLE MANGLE(FlushVertexArrayRangeAPPLE)
501@@ -498,7 +537,6 @@
502 #define glFramebufferTextureEXT MANGLE(FramebufferTextureEXT)
503 #define glFramebufferTextureFaceARB MANGLE(FramebufferTextureFaceARB)
504 #define glFramebufferTextureFaceEXT MANGLE(FramebufferTextureFaceEXT)
505-#define glFramebufferTextureFace MANGLE(FramebufferTextureFace)
506 #define glFramebufferTextureLayerARB MANGLE(FramebufferTextureLayerARB)
507 #define glFramebufferTextureLayerEXT MANGLE(FramebufferTextureLayerEXT)
508 #define glFramebufferTextureLayer MANGLE(FramebufferTextureLayer)
509@@ -521,23 +559,30 @@
510 #define glGenFramebuffersEXT MANGLE(GenFramebuffersEXT)
511 #define glGenFramebuffers MANGLE(GenFramebuffers)
512 #define glGenLists MANGLE(GenLists)
513+#define glGenNamesAMD MANGLE(GenNamesAMD)
514 #define glGenOcclusionQueriesNV MANGLE(GenOcclusionQueriesNV)
515 #define glGenPerfMonitorsAMD MANGLE(GenPerfMonitorsAMD)
516+#define glGenProgramPipelines MANGLE(GenProgramPipelines)
517 #define glGenProgramsARB MANGLE(GenProgramsARB)
518 #define glGenProgramsNV MANGLE(GenProgramsNV)
519 #define glGenQueriesARB MANGLE(GenQueriesARB)
520 #define glGenQueries MANGLE(GenQueries)
521 #define glGenRenderbuffersEXT MANGLE(GenRenderbuffersEXT)
522 #define glGenRenderbuffers MANGLE(GenRenderbuffers)
523+#define glGenSamplers MANGLE(GenSamplers)
524 #define glGenSymbolsEXT MANGLE(GenSymbolsEXT)
525 #define glGenTexturesEXT MANGLE(GenTexturesEXT)
526 #define glGenTextures MANGLE(GenTextures)
527+#define glGenTransformFeedbacks MANGLE(GenTransformFeedbacks)
528 #define glGenTransformFeedbacksNV MANGLE(GenTransformFeedbacksNV)
529 #define glGenVertexArraysAPPLE MANGLE(GenVertexArraysAPPLE)
530 #define glGenVertexArrays MANGLE(GenVertexArrays)
531 #define glGenVertexShadersEXT MANGLE(GenVertexShadersEXT)
532 #define glGetActiveAttribARB MANGLE(GetActiveAttribARB)
533 #define glGetActiveAttrib MANGLE(GetActiveAttrib)
534+#define glGetActiveSubroutineName MANGLE(GetActiveSubroutineName)
535+#define glGetActiveSubroutineUniformiv MANGLE(GetActiveSubroutineUniformiv)
536+#define glGetActiveSubroutineUniformName MANGLE(GetActiveSubroutineUniformName)
537 #define glGetActiveUniformARB MANGLE(GetActiveUniformARB)
538 #define glGetActiveUniformBlockiv MANGLE(GetActiveUniformBlockiv)
539 #define glGetActiveUniformBlockName MANGLE(GetActiveUniformBlockName)
540@@ -589,16 +634,21 @@
541 #define glGetConvolutionParameteriv MANGLE(GetConvolutionParameteriv)
542 #define glGetDebugLogLengthMESA MANGLE(GetDebugLogLengthMESA)
543 #define glGetDebugLogMESA MANGLE(GetDebugLogMESA)
544+#define glGetDebugMessageLogAMD MANGLE(GetDebugMessageLogAMD)
545+#define glGetDebugMessageLogARB MANGLE(GetDebugMessageLogARB)
546 #define glGetDetailTexFuncSGIS MANGLE(GetDetailTexFuncSGIS)
547 #define glGetDoubleIndexedvEXT MANGLE(GetDoubleIndexedvEXT)
548+#define glGetDoublei_v MANGLE(GetDoublei_v)
549 #define glGetDoublev MANGLE(GetDoublev)
550 #define glGetError MANGLE(GetError)
551 #define glGetFenceivNV MANGLE(GetFenceivNV)
552 #define glGetFinalCombinerInputParameterfvNV MANGLE(GetFinalCombinerInputParameterfvNV)
553 #define glGetFinalCombinerInputParameterivNV MANGLE(GetFinalCombinerInputParameterivNV)
554 #define glGetFloatIndexedvEXT MANGLE(GetFloatIndexedvEXT)
555+#define glGetFloati_v MANGLE(GetFloati_v)
556 #define glGetFloatv MANGLE(GetFloatv)
557 #define glGetFogFuncSGIS MANGLE(GetFogFuncSGIS)
558+#define glGetFragDataIndex MANGLE(GetFragDataIndex)
559 #define glGetFragDataLocationEXT MANGLE(GetFragDataLocationEXT)
560 #define glGetFragDataLocation MANGLE(GetFragDataLocation)
561 #define glGetFragmentLightfvSGIX MANGLE(GetFragmentLightfvSGIX)
562@@ -608,6 +658,7 @@
563 #define glGetFramebufferAttachmentParameterivEXT MANGLE(GetFramebufferAttachmentParameterivEXT)
564 #define glGetFramebufferAttachmentParameteriv MANGLE(GetFramebufferAttachmentParameteriv)
565 #define glGetFramebufferParameterivEXT MANGLE(GetFramebufferParameterivEXT)
566+#define glGetGraphicsResetStatusARB MANGLE(GetGraphicsResetStatusARB)
567 #define glGetHandleARB MANGLE(GetHandleARB)
568 #define glGetHistogramEXT MANGLE(GetHistogramEXT)
569 #define glGetHistogram MANGLE(GetHistogram)
570@@ -678,6 +729,26 @@
571 #define glGetNamedProgramLocalParameterIuivEXT MANGLE(GetNamedProgramLocalParameterIuivEXT)
572 #define glGetNamedProgramStringEXT MANGLE(GetNamedProgramStringEXT)
573 #define glGetNamedRenderbufferParameterivEXT MANGLE(GetNamedRenderbufferParameterivEXT)
574+#define glGetNamedStringARB MANGLE(GetNamedStringARB)
575+#define glGetNamedStringivARB MANGLE(GetNamedStringivARB)
576+#define glGetnColorTableARB MANGLE(GetnColorTableARB)
577+#define glGetnCompressedTexImageARB MANGLE(GetnCompressedTexImageARB)
578+#define glGetnConvolutionFilterARB MANGLE(GetnConvolutionFilterARB)
579+#define glGetnHistogramARB MANGLE(GetnHistogramARB)
580+#define glGetnMapdvARB MANGLE(GetnMapdvARB)
581+#define glGetnMapfvARB MANGLE(GetnMapfvARB)
582+#define glGetnMapivARB MANGLE(GetnMapivARB)
583+#define glGetnMinmaxARB MANGLE(GetnMinmaxARB)
584+#define glGetnPixelMapfvARB MANGLE(GetnPixelMapfvARB)
585+#define glGetnPixelMapuivARB MANGLE(GetnPixelMapuivARB)
586+#define glGetnPixelMapusvARB MANGLE(GetnPixelMapusvARB)
587+#define glGetnPolygonStippleARB MANGLE(GetnPolygonStippleARB)
588+#define glGetnSeparableFilterARB MANGLE(GetnSeparableFilterARB)
589+#define glGetnTexImageARB MANGLE(GetnTexImageARB)
590+#define glGetnUniformdvARB MANGLE(GetnUniformdvARB)
591+#define glGetnUniformfvARB MANGLE(GetnUniformfvARB)
592+#define glGetnUniformivARB MANGLE(GetnUniformivARB)
593+#define glGetnUniformuivARB MANGLE(GetnUniformuivARB)
594 #define glGetObjectBufferfvATI MANGLE(GetObjectBufferfvATI)
595 #define glGetObjectBufferivATI MANGLE(GetObjectBufferivATI)
596 #define glGetObjectParameterfvARB MANGLE(GetObjectParameterfvARB)
597@@ -700,6 +771,7 @@
598 #define glGetPointervEXT MANGLE(GetPointervEXT)
599 #define glGetPointerv MANGLE(GetPointerv)
600 #define glGetPolygonStipple MANGLE(GetPolygonStipple)
601+#define glGetProgramBinary MANGLE(GetProgramBinary)
602 #define glGetProgramEnvParameterdvARB MANGLE(GetProgramEnvParameterdvARB)
603 #define glGetProgramEnvParameterfvARB MANGLE(GetProgramEnvParameterfvARB)
604 #define glGetProgramEnvParameterIivNV MANGLE(GetProgramEnvParameterIivNV)
605@@ -716,28 +788,42 @@
606 #define glGetProgramNamedParameterfvNV MANGLE(GetProgramNamedParameterfvNV)
607 #define glGetProgramParameterdvNV MANGLE(GetProgramParameterdvNV)
608 #define glGetProgramParameterfvNV MANGLE(GetProgramParameterfvNV)
609+#define glGetProgramPipelineInfoLog MANGLE(GetProgramPipelineInfoLog)
610+#define glGetProgramPipelineiv MANGLE(GetProgramPipelineiv)
611 #define glGetProgramRegisterfvMESA MANGLE(GetProgramRegisterfvMESA)
612+#define glGetProgramStageiv MANGLE(GetProgramStageiv)
613 #define glGetProgramStringARB MANGLE(GetProgramStringARB)
614 #define glGetProgramStringNV MANGLE(GetProgramStringNV)
615+#define glGetProgramSubroutineParameteruivNV MANGLE(GetProgramSubroutineParameteruivNV)
616+#define glGetQueryIndexediv MANGLE(GetQueryIndexediv)
617 #define glGetQueryivARB MANGLE(GetQueryivARB)
618 #define glGetQueryiv MANGLE(GetQueryiv)
619 #define glGetQueryObjecti64vEXT MANGLE(GetQueryObjecti64vEXT)
620+#define glGetQueryObjecti64v MANGLE(GetQueryObjecti64v)
621 #define glGetQueryObjectivARB MANGLE(GetQueryObjectivARB)
622 #define glGetQueryObjectiv MANGLE(GetQueryObjectiv)
623 #define glGetQueryObjectui64vEXT MANGLE(GetQueryObjectui64vEXT)
624+#define glGetQueryObjectui64v MANGLE(GetQueryObjectui64v)
625 #define glGetQueryObjectuivARB MANGLE(GetQueryObjectuivARB)
626 #define glGetQueryObjectuiv MANGLE(GetQueryObjectuiv)
627 #define glGetRenderbufferParameterivEXT MANGLE(GetRenderbufferParameterivEXT)
628 #define glGetRenderbufferParameteriv MANGLE(GetRenderbufferParameteriv)
629+#define glGetSamplerParameterfv MANGLE(GetSamplerParameterfv)
630+#define glGetSamplerParameterIiv MANGLE(GetSamplerParameterIiv)
631+#define glGetSamplerParameterIuiv MANGLE(GetSamplerParameterIuiv)
632+#define glGetSamplerParameteriv MANGLE(GetSamplerParameteriv)
633 #define glGetSeparableFilterEXT MANGLE(GetSeparableFilterEXT)
634 #define glGetSeparableFilter MANGLE(GetSeparableFilter)
635 #define glGetShaderInfoLog MANGLE(GetShaderInfoLog)
636 #define glGetShaderiv MANGLE(GetShaderiv)
637+#define glGetShaderPrecisionFormat MANGLE(GetShaderPrecisionFormat)
638 #define glGetShaderSourceARB MANGLE(GetShaderSourceARB)
639 #define glGetShaderSource MANGLE(GetShaderSource)
640 #define glGetSharpenTexFuncSGIS MANGLE(GetSharpenTexFuncSGIS)
641 #define glGetStringi MANGLE(GetStringi)
642 #define glGetString MANGLE(GetString)
643+#define glGetSubroutineIndex MANGLE(GetSubroutineIndex)
644+#define glGetSubroutineUniformLocation MANGLE(GetSubroutineUniformLocation)
645 #define glGetSynciv MANGLE(GetSynciv)
646 #define glGetTexBumpParameterfvATI MANGLE(GetTexBumpParameterfvATI)
647 #define glGetTexBumpParameterivATI MANGLE(GetTexBumpParameterivATI)
648@@ -770,14 +856,17 @@
649 #define glGetTransformFeedbackVaryingNV MANGLE(GetTransformFeedbackVaryingNV)
650 #define glGetUniformBlockIndex MANGLE(GetUniformBlockIndex)
651 #define glGetUniformBufferSizeEXT MANGLE(GetUniformBufferSizeEXT)
652+#define glGetUniformdv MANGLE(GetUniformdv)
653 #define glGetUniformfvARB MANGLE(GetUniformfvARB)
654 #define glGetUniformfv MANGLE(GetUniformfv)
655+#define glGetUniformi64vNV MANGLE(GetUniformi64vNV)
656 #define glGetUniformIndices MANGLE(GetUniformIndices)
657 #define glGetUniformivARB MANGLE(GetUniformivARB)
658 #define glGetUniformiv MANGLE(GetUniformiv)
659 #define glGetUniformLocationARB MANGLE(GetUniformLocationARB)
660 #define glGetUniformLocation MANGLE(GetUniformLocation)
661 #define glGetUniformOffsetEXT MANGLE(GetUniformOffsetEXT)
662+#define glGetUniformSubroutineuiv MANGLE(GetUniformSubroutineuiv)
663 #define glGetUniformui64vNV MANGLE(GetUniformui64vNV)
664 #define glGetUniformuivEXT MANGLE(GetUniformuivEXT)
665 #define glGetUniformuiv MANGLE(GetUniformuiv)
666@@ -803,6 +892,10 @@
667 #define glGetVertexAttribivARB MANGLE(GetVertexAttribivARB)
668 #define glGetVertexAttribiv MANGLE(GetVertexAttribiv)
669 #define glGetVertexAttribivNV MANGLE(GetVertexAttribivNV)
670+#define glGetVertexAttribLdvEXT MANGLE(GetVertexAttribLdvEXT)
671+#define glGetVertexAttribLdv MANGLE(GetVertexAttribLdv)
672+#define glGetVertexAttribLi64vNV MANGLE(GetVertexAttribLi64vNV)
673+#define glGetVertexAttribLui64vNV MANGLE(GetVertexAttribLui64vNV)
674 #define glGetVertexAttribPointervARB MANGLE(GetVertexAttribPointervARB)
675 #define glGetVertexAttribPointerv MANGLE(GetVertexAttribPointerv)
676 #define glGetVertexAttribPointervNV MANGLE(GetVertexAttribPointervNV)
677@@ -864,20 +957,25 @@
678 #define glIsFramebufferEXT MANGLE(IsFramebufferEXT)
679 #define glIsFramebuffer MANGLE(IsFramebuffer)
680 #define glIsList MANGLE(IsList)
681+#define glIsNameAMD MANGLE(IsNameAMD)
682 #define glIsNamedBufferResidentNV MANGLE(IsNamedBufferResidentNV)
683+#define glIsNamedStringARB MANGLE(IsNamedStringARB)
684 #define glIsObjectBufferATI MANGLE(IsObjectBufferATI)
685 #define glIsOcclusionQueryNV MANGLE(IsOcclusionQueryNV)
686 #define glIsProgramARB MANGLE(IsProgramARB)
687 #define glIsProgram MANGLE(IsProgram)
688 #define glIsProgramNV MANGLE(IsProgramNV)
689+#define glIsProgramPipeline MANGLE(IsProgramPipeline)
690 #define glIsQueryARB MANGLE(IsQueryARB)
691 #define glIsQuery MANGLE(IsQuery)
692 #define glIsRenderbufferEXT MANGLE(IsRenderbufferEXT)
693 #define glIsRenderbuffer MANGLE(IsRenderbuffer)
694+#define glIsSampler MANGLE(IsSampler)
695 #define glIsShader MANGLE(IsShader)
696 #define glIsSync MANGLE(IsSync)
697 #define glIsTextureEXT MANGLE(IsTextureEXT)
698 #define glIsTexture MANGLE(IsTexture)
699+#define glIsTransformFeedback MANGLE(IsTransformFeedback)
700 #define glIsTransformFeedbackNV MANGLE(IsTransformFeedbackNV)
701 #define glIsVariantEnabledEXT MANGLE(IsVariantEnabledEXT)
702 #define glIsVertexArrayAPPLE MANGLE(IsVertexArrayAPPLE)
703@@ -915,6 +1013,8 @@
704 #define glLogicOp MANGLE(LogicOp)
705 #define glMakeBufferNonResidentNV MANGLE(MakeBufferNonResidentNV)
706 #define glMakeBufferResidentNV MANGLE(MakeBufferResidentNV)
707+#define glMakeNamedBufferNonResidentNV MANGLE(MakeNamedBufferNonResidentNV)
708+#define glMakeNamedBufferResidentNV MANGLE(MakeNamedBufferResidentNV)
709 #define glMap1d MANGLE(Map1d)
710 #define glMap1f MANGLE(Map1f)
711 #define glMap2d MANGLE(Map2d)
712@@ -928,6 +1028,7 @@
713 #define glMapGrid2d MANGLE(MapGrid2d)
714 #define glMapGrid2f MANGLE(MapGrid2f)
715 #define glMapNamedBufferEXT MANGLE(MapNamedBufferEXT)
716+#define glMapNamedBufferRangeEXT MANGLE(MapNamedBufferRangeEXT)
717 #define glMapObjectBufferATI MANGLE(MapObjectBufferATI)
718 #define glMapParameterfvNV MANGLE(MapParameterfvNV)
719 #define glMapParameterivNV MANGLE(MapParameterivNV)
720@@ -963,8 +1064,10 @@
721 #define glMatrixScalefEXT MANGLE(MatrixScalefEXT)
722 #define glMatrixTranslatedEXT MANGLE(MatrixTranslatedEXT)
723 #define glMatrixTranslatefEXT MANGLE(MatrixTranslatefEXT)
724+#define glMemoryBarrierEXT MANGLE(MemoryBarrierEXT)
725 #define glMinmaxEXT MANGLE(MinmaxEXT)
726 #define glMinmax MANGLE(Minmax)
727+#define glMinSampleShadingARB MANGLE(MinSampleShadingARB)
728 #define glMinSampleShading MANGLE(MinSampleShading)
729 #define glMultiDrawArraysEXT MANGLE(MultiDrawArraysEXT)
730 #define glMultiDrawArrays MANGLE(MultiDrawArrays)
731@@ -1048,6 +1151,14 @@
732 #define glMultiTexCoord4s MANGLE(MultiTexCoord4s)
733 #define glMultiTexCoord4svARB MANGLE(MultiTexCoord4svARB)
734 #define glMultiTexCoord4sv MANGLE(MultiTexCoord4sv)
735+#define glMultiTexCoordP1ui MANGLE(MultiTexCoordP1ui)
736+#define glMultiTexCoordP1uiv MANGLE(MultiTexCoordP1uiv)
737+#define glMultiTexCoordP2ui MANGLE(MultiTexCoordP2ui)
738+#define glMultiTexCoordP2uiv MANGLE(MultiTexCoordP2uiv)
739+#define glMultiTexCoordP3ui MANGLE(MultiTexCoordP3ui)
740+#define glMultiTexCoordP3uiv MANGLE(MultiTexCoordP3uiv)
741+#define glMultiTexCoordP4ui MANGLE(MultiTexCoordP4ui)
742+#define glMultiTexCoordP4uiv MANGLE(MultiTexCoordP4uiv)
743 #define glMultiTexCoordPointerEXT MANGLE(MultiTexCoordPointerEXT)
744 #define glMultiTexEnvfEXT MANGLE(MultiTexEnvfEXT)
745 #define glMultiTexEnvfvEXT MANGLE(MultiTexEnvfvEXT)
746@@ -1080,6 +1191,7 @@
747 #define glMultTransposeMatrixf MANGLE(MultTransposeMatrixf)
748 #define glNamedBufferDataEXT MANGLE(NamedBufferDataEXT)
749 #define glNamedBufferSubDataEXT MANGLE(NamedBufferSubDataEXT)
750+#define glNamedCopyBufferSubDataEXT MANGLE(NamedCopyBufferSubDataEXT)
751 #define glNamedFramebufferRenderbufferEXT MANGLE(NamedFramebufferRenderbufferEXT)
752 #define glNamedFramebufferTexture1DEXT MANGLE(NamedFramebufferTexture1DEXT)
753 #define glNamedFramebufferTexture2DEXT MANGLE(NamedFramebufferTexture2DEXT)
754@@ -1087,8 +1199,6 @@
755 #define glNamedFramebufferTextureEXT MANGLE(NamedFramebufferTextureEXT)
756 #define glNamedFramebufferTextureFaceEXT MANGLE(NamedFramebufferTextureFaceEXT)
757 #define glNamedFramebufferTextureLayerEXT MANGLE(NamedFramebufferTextureLayerEXT)
758-#define glNamedMakeBufferNonResidentNV MANGLE(NamedMakeBufferNonResidentNV)
759-#define glNamedMakeBufferResidentNV MANGLE(NamedMakeBufferResidentNV)
760 #define glNamedProgramLocalParameter4dEXT MANGLE(NamedProgramLocalParameter4dEXT)
761 #define glNamedProgramLocalParameter4dvEXT MANGLE(NamedProgramLocalParameter4dvEXT)
762 #define glNamedProgramLocalParameter4fEXT MANGLE(NamedProgramLocalParameter4fEXT)
763@@ -1104,6 +1214,7 @@
764 #define glNamedRenderbufferStorageEXT MANGLE(NamedRenderbufferStorageEXT)
765 #define glNamedRenderbufferStorageMultisampleCoverageEXT MANGLE(NamedRenderbufferStorageMultisampleCoverageEXT)
766 #define glNamedRenderbufferStorageMultisampleEXT MANGLE(NamedRenderbufferStorageMultisampleEXT)
767+#define glNamedStringARB MANGLE(NamedStringARB)
768 #define glNewList MANGLE(NewList)
769 #define glNewObjectBufferATI MANGLE(NewObjectBufferATI)
770 #define glNormal3b MANGLE(Normal3b)
771@@ -1121,6 +1232,8 @@
772 #define glNormal3s MANGLE(Normal3s)
773 #define glNormal3sv MANGLE(Normal3sv)
774 #define glNormalFormatNV MANGLE(NormalFormatNV)
775+#define glNormalP3ui MANGLE(NormalP3ui)
776+#define glNormalP3uiv MANGLE(NormalP3uiv)
777 #define glNormalPointerEXT MANGLE(NormalPointerEXT)
778 #define glNormalPointerListIBM MANGLE(NormalPointerListIBM)
779 #define glNormalPointer MANGLE(NormalPointer)
780@@ -1140,6 +1253,9 @@
781 #define glOrtho MANGLE(Ortho)
782 #define glPassTexCoordATI MANGLE(PassTexCoordATI)
783 #define glPassThrough MANGLE(PassThrough)
784+#define glPatchParameterfv MANGLE(PatchParameterfv)
785+#define glPatchParameteri MANGLE(PatchParameteri)
786+#define glPauseTransformFeedback MANGLE(PauseTransformFeedback)
787 #define glPauseTransformFeedbackNV MANGLE(PauseTransformFeedbackNV)
788 #define glPixelDataRangeNV MANGLE(PixelDataRangeNV)
789 #define glPixelMapfv MANGLE(PixelMapfv)
790@@ -1191,6 +1307,7 @@
791 #define glPrimitiveRestartNV MANGLE(PrimitiveRestartNV)
792 #define glPrioritizeTexturesEXT MANGLE(PrioritizeTexturesEXT)
793 #define glPrioritizeTextures MANGLE(PrioritizeTextures)
794+#define glProgramBinary MANGLE(ProgramBinary)
795 #define glProgramBufferParametersfvNV MANGLE(ProgramBufferParametersfvNV)
796 #define glProgramBufferParametersIivNV MANGLE(ProgramBufferParametersIivNV)
797 #define glProgramBufferParametersIuivNV MANGLE(ProgramBufferParametersIuivNV)
798@@ -1231,39 +1348,123 @@
799 #define glProgramParameters4dvNV MANGLE(ProgramParameters4dvNV)
800 #define glProgramParameters4fvNV MANGLE(ProgramParameters4fvNV)
801 #define glProgramStringARB MANGLE(ProgramStringARB)
802+#define glProgramSubroutineParametersuivNV MANGLE(ProgramSubroutineParametersuivNV)
803+#define glProgramUniform1dEXT MANGLE(ProgramUniform1dEXT)
804+#define glProgramUniform1d MANGLE(ProgramUniform1d)
805+#define glProgramUniform1dvEXT MANGLE(ProgramUniform1dvEXT)
806+#define glProgramUniform1dv MANGLE(ProgramUniform1dv)
807 #define glProgramUniform1fEXT MANGLE(ProgramUniform1fEXT)
808+#define glProgramUniform1f MANGLE(ProgramUniform1f)
809 #define glProgramUniform1fvEXT MANGLE(ProgramUniform1fvEXT)
810+#define glProgramUniform1fv MANGLE(ProgramUniform1fv)
811+#define glProgramUniform1i64NV MANGLE(ProgramUniform1i64NV)
812+#define glProgramUniform1i64vNV MANGLE(ProgramUniform1i64vNV)
813 #define glProgramUniform1iEXT MANGLE(ProgramUniform1iEXT)
814+#define glProgramUniform1i MANGLE(ProgramUniform1i)
815 #define glProgramUniform1ivEXT MANGLE(ProgramUniform1ivEXT)
816+#define glProgramUniform1iv MANGLE(ProgramUniform1iv)
817+#define glProgramUniform1ui64NV MANGLE(ProgramUniform1ui64NV)
818+#define glProgramUniform1ui64vNV MANGLE(ProgramUniform1ui64vNV)
819 #define glProgramUniform1uiEXT MANGLE(ProgramUniform1uiEXT)
820+#define glProgramUniform1ui MANGLE(ProgramUniform1ui)
821 #define glProgramUniform1uivEXT MANGLE(ProgramUniform1uivEXT)
822+#define glProgramUniform1uiv MANGLE(ProgramUniform1uiv)
823+#define glProgramUniform2dEXT MANGLE(ProgramUniform2dEXT)
824+#define glProgramUniform2d MANGLE(ProgramUniform2d)
825+#define glProgramUniform2dvEXT MANGLE(ProgramUniform2dvEXT)
826+#define glProgramUniform2dv MANGLE(ProgramUniform2dv)
827 #define glProgramUniform2fEXT MANGLE(ProgramUniform2fEXT)
828+#define glProgramUniform2f MANGLE(ProgramUniform2f)
829 #define glProgramUniform2fvEXT MANGLE(ProgramUniform2fvEXT)
830+#define glProgramUniform2fv MANGLE(ProgramUniform2fv)
831+#define glProgramUniform2i64NV MANGLE(ProgramUniform2i64NV)
832+#define glProgramUniform2i64vNV MANGLE(ProgramUniform2i64vNV)
833 #define glProgramUniform2iEXT MANGLE(ProgramUniform2iEXT)
834+#define glProgramUniform2i MANGLE(ProgramUniform2i)
835 #define glProgramUniform2ivEXT MANGLE(ProgramUniform2ivEXT)
836+#define glProgramUniform2iv MANGLE(ProgramUniform2iv)
837+#define glProgramUniform2ui64NV MANGLE(ProgramUniform2ui64NV)
838+#define glProgramUniform2ui64vNV MANGLE(ProgramUniform2ui64vNV)
839 #define glProgramUniform2uiEXT MANGLE(ProgramUniform2uiEXT)
840+#define glProgramUniform2ui MANGLE(ProgramUniform2ui)
841 #define glProgramUniform2uivEXT MANGLE(ProgramUniform2uivEXT)
842+#define glProgramUniform2uiv MANGLE(ProgramUniform2uiv)
843+#define glProgramUniform3dEXT MANGLE(ProgramUniform3dEXT)
844+#define glProgramUniform3d MANGLE(ProgramUniform3d)
845+#define glProgramUniform3dvEXT MANGLE(ProgramUniform3dvEXT)
846+#define glProgramUniform3dv MANGLE(ProgramUniform3dv)
847 #define glProgramUniform3fEXT MANGLE(ProgramUniform3fEXT)
848+#define glProgramUniform3f MANGLE(ProgramUniform3f)
849 #define glProgramUniform3fvEXT MANGLE(ProgramUniform3fvEXT)
850+#define glProgramUniform3fv MANGLE(ProgramUniform3fv)
851+#define glProgramUniform3i64NV MANGLE(ProgramUniform3i64NV)
852+#define glProgramUniform3i64vNV MANGLE(ProgramUniform3i64vNV)
853 #define glProgramUniform3iEXT MANGLE(ProgramUniform3iEXT)
854+#define glProgramUniform3i MANGLE(ProgramUniform3i)
855 #define glProgramUniform3ivEXT MANGLE(ProgramUniform3ivEXT)
856+#define glProgramUniform3iv MANGLE(ProgramUniform3iv)
857+#define glProgramUniform3ui64NV MANGLE(ProgramUniform3ui64NV)
858+#define glProgramUniform3ui64vNV MANGLE(ProgramUniform3ui64vNV)
859 #define glProgramUniform3uiEXT MANGLE(ProgramUniform3uiEXT)
860+#define glProgramUniform3ui MANGLE(ProgramUniform3ui)
861 #define glProgramUniform3uivEXT MANGLE(ProgramUniform3uivEXT)
862+#define glProgramUniform3uiv MANGLE(ProgramUniform3uiv)
863+#define glProgramUniform4dEXT MANGLE(ProgramUniform4dEXT)
864+#define glProgramUniform4d MANGLE(ProgramUniform4d)
865+#define glProgramUniform4dvEXT MANGLE(ProgramUniform4dvEXT)
866+#define glProgramUniform4dv MANGLE(ProgramUniform4dv)
867 #define glProgramUniform4fEXT MANGLE(ProgramUniform4fEXT)
868+#define glProgramUniform4f MANGLE(ProgramUniform4f)
869 #define glProgramUniform4fvEXT MANGLE(ProgramUniform4fvEXT)
870+#define glProgramUniform4fv MANGLE(ProgramUniform4fv)
871+#define glProgramUniform4i64NV MANGLE(ProgramUniform4i64NV)
872+#define glProgramUniform4i64vNV MANGLE(ProgramUniform4i64vNV)
873 #define glProgramUniform4iEXT MANGLE(ProgramUniform4iEXT)
874+#define glProgramUniform4i MANGLE(ProgramUniform4i)
875 #define glProgramUniform4ivEXT MANGLE(ProgramUniform4ivEXT)
876+#define glProgramUniform4iv MANGLE(ProgramUniform4iv)
877+#define glProgramUniform4ui64NV MANGLE(ProgramUniform4ui64NV)
878+#define glProgramUniform4ui64vNV MANGLE(ProgramUniform4ui64vNV)
879 #define glProgramUniform4uiEXT MANGLE(ProgramUniform4uiEXT)
880+#define glProgramUniform4ui MANGLE(ProgramUniform4ui)
881 #define glProgramUniform4uivEXT MANGLE(ProgramUniform4uivEXT)
882+#define glProgramUniform4uiv MANGLE(ProgramUniform4uiv)
883+#define glProgramUniformMatrix2dvEXT MANGLE(ProgramUniformMatrix2dvEXT)
884+#define glProgramUniformMatrix2dv MANGLE(ProgramUniformMatrix2dv)
885 #define glProgramUniformMatrix2fvEXT MANGLE(ProgramUniformMatrix2fvEXT)
886+#define glProgramUniformMatrix2fv MANGLE(ProgramUniformMatrix2fv)
887+#define glProgramUniformMatrix2x3dvEXT MANGLE(ProgramUniformMatrix2x3dvEXT)
888+#define glProgramUniformMatrix2x3dv MANGLE(ProgramUniformMatrix2x3dv)
889 #define glProgramUniformMatrix2x3fvEXT MANGLE(ProgramUniformMatrix2x3fvEXT)
890+#define glProgramUniformMatrix2x3fv MANGLE(ProgramUniformMatrix2x3fv)
891+#define glProgramUniformMatrix2x4dvEXT MANGLE(ProgramUniformMatrix2x4dvEXT)
892+#define glProgramUniformMatrix2x4dv MANGLE(ProgramUniformMatrix2x4dv)
893 #define glProgramUniformMatrix2x4fvEXT MANGLE(ProgramUniformMatrix2x4fvEXT)
894+#define glProgramUniformMatrix2x4fv MANGLE(ProgramUniformMatrix2x4fv)
895+#define glProgramUniformMatrix3dvEXT MANGLE(ProgramUniformMatrix3dvEXT)
896+#define glProgramUniformMatrix3dv MANGLE(ProgramUniformMatrix3dv)
897 #define glProgramUniformMatrix3fvEXT MANGLE(ProgramUniformMatrix3fvEXT)
898+#define glProgramUniformMatrix3fv MANGLE(ProgramUniformMatrix3fv)
899+#define glProgramUniformMatrix3x2dvEXT MANGLE(ProgramUniformMatrix3x2dvEXT)
900+#define glProgramUniformMatrix3x2dv MANGLE(ProgramUniformMatrix3x2dv)
901 #define glProgramUniformMatrix3x2fvEXT MANGLE(ProgramUniformMatrix3x2fvEXT)
902+#define glProgramUniformMatrix3x2fv MANGLE(ProgramUniformMatrix3x2fv)
903+#define glProgramUniformMatrix3x4dvEXT MANGLE(ProgramUniformMatrix3x4dvEXT)
904+#define glProgramUniformMatrix3x4dv MANGLE(ProgramUniformMatrix3x4dv)
905 #define glProgramUniformMatrix3x4fvEXT MANGLE(ProgramUniformMatrix3x4fvEXT)
906+#define glProgramUniformMatrix3x4fv MANGLE(ProgramUniformMatrix3x4fv)
907+#define glProgramUniformMatrix4dvEXT MANGLE(ProgramUniformMatrix4dvEXT)
908+#define glProgramUniformMatrix4dv MANGLE(ProgramUniformMatrix4dv)
909 #define glProgramUniformMatrix4fvEXT MANGLE(ProgramUniformMatrix4fvEXT)
910+#define glProgramUniformMatrix4fv MANGLE(ProgramUniformMatrix4fv)
911+#define glProgramUniformMatrix4x2dvEXT MANGLE(ProgramUniformMatrix4x2dvEXT)
912+#define glProgramUniformMatrix4x2dv MANGLE(ProgramUniformMatrix4x2dv)
913 #define glProgramUniformMatrix4x2fvEXT MANGLE(ProgramUniformMatrix4x2fvEXT)
914+#define glProgramUniformMatrix4x2fv MANGLE(ProgramUniformMatrix4x2fv)
915+#define glProgramUniformMatrix4x3dvEXT MANGLE(ProgramUniformMatrix4x3dvEXT)
916+#define glProgramUniformMatrix4x3dv MANGLE(ProgramUniformMatrix4x3dv)
917 #define glProgramUniformMatrix4x3fvEXT MANGLE(ProgramUniformMatrix4x3fvEXT)
918+#define glProgramUniformMatrix4x3fv MANGLE(ProgramUniformMatrix4x3fv)
919 #define glProgramUniformui64NV MANGLE(ProgramUniformui64NV)
920 #define glProgramUniformui64vNV MANGLE(ProgramUniformui64vNV)
921 #define glProgramVertexLimitNV MANGLE(ProgramVertexLimitNV)
922@@ -1274,6 +1475,7 @@
923 #define glPushClientAttrib MANGLE(PushClientAttrib)
924 #define glPushMatrix MANGLE(PushMatrix)
925 #define glPushName MANGLE(PushName)
926+#define glQueryCounter MANGLE(QueryCounter)
927 #define glRasterPos2d MANGLE(RasterPos2d)
928 #define glRasterPos2dv MANGLE(RasterPos2dv)
929 #define glRasterPos2f MANGLE(RasterPos2f)
930@@ -1300,6 +1502,7 @@
931 #define glRasterPos4sv MANGLE(RasterPos4sv)
932 #define glReadBuffer MANGLE(ReadBuffer)
933 #define glReadInstrumentsSGIX MANGLE(ReadInstrumentsSGIX)
934+#define glReadnPixelsARB MANGLE(ReadnPixelsARB)
935 #define glReadPixels MANGLE(ReadPixels)
936 #define glRectd MANGLE(Rectd)
937 #define glRectdv MANGLE(Rectdv)
938@@ -1310,6 +1513,7 @@
939 #define glRects MANGLE(Rects)
940 #define glRectsv MANGLE(Rectsv)
941 #define glReferencePlaneSGIX MANGLE(ReferencePlaneSGIX)
942+#define glReleaseShaderCompiler MANGLE(ReleaseShaderCompiler)
943 #define glRenderbufferStorageEXT MANGLE(RenderbufferStorageEXT)
944 #define glRenderbufferStorage MANGLE(RenderbufferStorage)
945 #define glRenderbufferStorageMultisampleCoverageNV MANGLE(RenderbufferStorageMultisampleCoverageNV)
946@@ -1345,6 +1549,7 @@
947 #define glResetMinmaxEXT MANGLE(ResetMinmaxEXT)
948 #define glResetMinmax MANGLE(ResetMinmax)
949 #define glResizeBuffersMESA MANGLE(ResizeBuffersMESA)
950+#define glResumeTransformFeedback MANGLE(ResumeTransformFeedback)
951 #define glResumeTransformFeedbackNV MANGLE(ResumeTransformFeedbackNV)
952 #define glRotated MANGLE(Rotated)
953 #define glRotatef MANGLE(Rotatef)
954@@ -1357,8 +1562,17 @@
955 #define glSampleMaskSGIS MANGLE(SampleMaskSGIS)
956 #define glSamplePatternEXT MANGLE(SamplePatternEXT)
957 #define glSamplePatternSGIS MANGLE(SamplePatternSGIS)
958+#define glSamplerParameterf MANGLE(SamplerParameterf)
959+#define glSamplerParameterfv MANGLE(SamplerParameterfv)
960+#define glSamplerParameterIiv MANGLE(SamplerParameterIiv)
961+#define glSamplerParameteri MANGLE(SamplerParameteri)
962+#define glSamplerParameterIuiv MANGLE(SamplerParameterIuiv)
963+#define glSamplerParameteriv MANGLE(SamplerParameteriv)
964 #define glScaled MANGLE(Scaled)
965 #define glScalef MANGLE(Scalef)
966+#define glScissorArrayv MANGLE(ScissorArrayv)
967+#define glScissorIndexed MANGLE(ScissorIndexed)
968+#define glScissorIndexedv MANGLE(ScissorIndexedv)
969 #define glScissor MANGLE(Scissor)
970 #define glSecondaryColor3bEXT MANGLE(SecondaryColor3bEXT)
971 #define glSecondaryColor3b MANGLE(SecondaryColor3b)
972@@ -1395,6 +1609,8 @@
973 #define glSecondaryColor3usvEXT MANGLE(SecondaryColor3usvEXT)
974 #define glSecondaryColor3usv MANGLE(SecondaryColor3usv)
975 #define glSecondaryColorFormatNV MANGLE(SecondaryColorFormatNV)
976+#define glSecondaryColorP3ui MANGLE(SecondaryColorP3ui)
977+#define glSecondaryColorP3uiv MANGLE(SecondaryColorP3uiv)
978 #define glSecondaryColorPointerEXT MANGLE(SecondaryColorPointerEXT)
979 #define glSecondaryColorPointerListIBM MANGLE(SecondaryColorPointerListIBM)
980 #define glSecondaryColorPointer MANGLE(SecondaryColorPointer)
981@@ -1408,6 +1624,7 @@
982 #define glSetInvariantEXT MANGLE(SetInvariantEXT)
983 #define glSetLocalConstantEXT MANGLE(SetLocalConstantEXT)
984 #define glShadeModel MANGLE(ShadeModel)
985+#define glShaderBinary MANGLE(ShaderBinary)
986 #define glShaderOp1EXT MANGLE(ShaderOp1EXT)
987 #define glShaderOp2EXT MANGLE(ShaderOp2EXT)
988 #define glShaderOp3EXT MANGLE(ShaderOp3EXT)
989@@ -1509,6 +1726,14 @@
990 #define glTexCoord4s MANGLE(TexCoord4s)
991 #define glTexCoord4sv MANGLE(TexCoord4sv)
992 #define glTexCoordFormatNV MANGLE(TexCoordFormatNV)
993+#define glTexCoordP1ui MANGLE(TexCoordP1ui)
994+#define glTexCoordP1uiv MANGLE(TexCoordP1uiv)
995+#define glTexCoordP2ui MANGLE(TexCoordP2ui)
996+#define glTexCoordP2uiv MANGLE(TexCoordP2uiv)
997+#define glTexCoordP3ui MANGLE(TexCoordP3ui)
998+#define glTexCoordP3uiv MANGLE(TexCoordP3uiv)
999+#define glTexCoordP4ui MANGLE(TexCoordP4ui)
1000+#define glTexCoordP4uiv MANGLE(TexCoordP4uiv)
1001 #define glTexCoordPointerEXT MANGLE(TexCoordPointerEXT)
1002 #define glTexCoordPointerListIBM MANGLE(TexCoordPointerListIBM)
1003 #define glTexCoordPointer MANGLE(TexCoordPointer)
1004@@ -1569,73 +1794,108 @@
1005 #define glTextureSubImage3DEXT MANGLE(TextureSubImage3DEXT)
1006 #define glTrackMatrixNV MANGLE(TrackMatrixNV)
1007 #define glTransformFeedbackAttribsNV MANGLE(TransformFeedbackAttribsNV)
1008+#define glTransformFeedbackStreamAttribsNV MANGLE(TransformFeedbackStreamAttribsNV)
1009 #define glTransformFeedbackVaryingsEXT MANGLE(TransformFeedbackVaryingsEXT)
1010 #define glTransformFeedbackVaryings MANGLE(TransformFeedbackVaryings)
1011 #define glTransformFeedbackVaryingsNV MANGLE(TransformFeedbackVaryingsNV)
1012 #define glTranslated MANGLE(Translated)
1013 #define glTranslatef MANGLE(Translatef)
1014+#define glUniform1d MANGLE(Uniform1d)
1015+#define glUniform1dv MANGLE(Uniform1dv)
1016 #define glUniform1fARB MANGLE(Uniform1fARB)
1017 #define glUniform1f MANGLE(Uniform1f)
1018 #define glUniform1fvARB MANGLE(Uniform1fvARB)
1019 #define glUniform1fv MANGLE(Uniform1fv)
1020+#define glUniform1i64NV MANGLE(Uniform1i64NV)
1021+#define glUniform1i64vNV MANGLE(Uniform1i64vNV)
1022 #define glUniform1iARB MANGLE(Uniform1iARB)
1023 #define glUniform1i MANGLE(Uniform1i)
1024 #define glUniform1ivARB MANGLE(Uniform1ivARB)
1025 #define glUniform1iv MANGLE(Uniform1iv)
1026+#define glUniform1ui64NV MANGLE(Uniform1ui64NV)
1027+#define glUniform1ui64vNV MANGLE(Uniform1ui64vNV)
1028 #define glUniform1uiEXT MANGLE(Uniform1uiEXT)
1029 #define glUniform1ui MANGLE(Uniform1ui)
1030 #define glUniform1uivEXT MANGLE(Uniform1uivEXT)
1031 #define glUniform1uiv MANGLE(Uniform1uiv)
1032+#define glUniform2d MANGLE(Uniform2d)
1033+#define glUniform2dv MANGLE(Uniform2dv)
1034 #define glUniform2fARB MANGLE(Uniform2fARB)
1035 #define glUniform2f MANGLE(Uniform2f)
1036 #define glUniform2fvARB MANGLE(Uniform2fvARB)
1037 #define glUniform2fv MANGLE(Uniform2fv)
1038+#define glUniform2i64NV MANGLE(Uniform2i64NV)
1039+#define glUniform2i64vNV MANGLE(Uniform2i64vNV)
1040 #define glUniform2iARB MANGLE(Uniform2iARB)
1041 #define glUniform2i MANGLE(Uniform2i)
1042 #define glUniform2ivARB MANGLE(Uniform2ivARB)
1043 #define glUniform2iv MANGLE(Uniform2iv)
1044+#define glUniform2ui64NV MANGLE(Uniform2ui64NV)
1045+#define glUniform2ui64vNV MANGLE(Uniform2ui64vNV)
1046 #define glUniform2uiEXT MANGLE(Uniform2uiEXT)
1047 #define glUniform2ui MANGLE(Uniform2ui)
1048 #define glUniform2uivEXT MANGLE(Uniform2uivEXT)
1049 #define glUniform2uiv MANGLE(Uniform2uiv)
1050+#define glUniform3d MANGLE(Uniform3d)
1051+#define glUniform3dv MANGLE(Uniform3dv)
1052 #define glUniform3fARB MANGLE(Uniform3fARB)
1053 #define glUniform3f MANGLE(Uniform3f)
1054 #define glUniform3fvARB MANGLE(Uniform3fvARB)
1055 #define glUniform3fv MANGLE(Uniform3fv)
1056+#define glUniform3i64NV MANGLE(Uniform3i64NV)
1057+#define glUniform3i64vNV MANGLE(Uniform3i64vNV)
1058 #define glUniform3iARB MANGLE(Uniform3iARB)
1059 #define glUniform3i MANGLE(Uniform3i)
1060 #define glUniform3ivARB MANGLE(Uniform3ivARB)
1061 #define glUniform3iv MANGLE(Uniform3iv)
1062+#define glUniform3ui64NV MANGLE(Uniform3ui64NV)
1063+#define glUniform3ui64vNV MANGLE(Uniform3ui64vNV)
1064 #define glUniform3uiEXT MANGLE(Uniform3uiEXT)
1065 #define glUniform3ui MANGLE(Uniform3ui)
1066 #define glUniform3uivEXT MANGLE(Uniform3uivEXT)
1067 #define glUniform3uiv MANGLE(Uniform3uiv)
1068+#define glUniform4d MANGLE(Uniform4d)
1069+#define glUniform4dv MANGLE(Uniform4dv)
1070 #define glUniform4fARB MANGLE(Uniform4fARB)
1071 #define glUniform4f MANGLE(Uniform4f)
1072 #define glUniform4fvARB MANGLE(Uniform4fvARB)
1073 #define glUniform4fv MANGLE(Uniform4fv)
1074+#define glUniform4i64NV MANGLE(Uniform4i64NV)
1075+#define glUniform4i64vNV MANGLE(Uniform4i64vNV)
1076 #define glUniform4iARB MANGLE(Uniform4iARB)
1077 #define glUniform4i MANGLE(Uniform4i)
1078 #define glUniform4ivARB MANGLE(Uniform4ivARB)
1079 #define glUniform4iv MANGLE(Uniform4iv)
1080+#define glUniform4ui64NV MANGLE(Uniform4ui64NV)
1081+#define glUniform4ui64vNV MANGLE(Uniform4ui64vNV)
1082 #define glUniform4uiEXT MANGLE(Uniform4uiEXT)
1083 #define glUniform4ui MANGLE(Uniform4ui)
1084 #define glUniform4uivEXT MANGLE(Uniform4uivEXT)
1085 #define glUniform4uiv MANGLE(Uniform4uiv)
1086 #define glUniformBlockBinding MANGLE(UniformBlockBinding)
1087 #define glUniformBufferEXT MANGLE(UniformBufferEXT)
1088+#define glUniformMatrix2dv MANGLE(UniformMatrix2dv)
1089 #define glUniformMatrix2fvARB MANGLE(UniformMatrix2fvARB)
1090 #define glUniformMatrix2fv MANGLE(UniformMatrix2fv)
1091+#define glUniformMatrix2x3dv MANGLE(UniformMatrix2x3dv)
1092 #define glUniformMatrix2x3fv MANGLE(UniformMatrix2x3fv)
1093+#define glUniformMatrix2x4dv MANGLE(UniformMatrix2x4dv)
1094 #define glUniformMatrix2x4fv MANGLE(UniformMatrix2x4fv)
1095+#define glUniformMatrix3dv MANGLE(UniformMatrix3dv)
1096 #define glUniformMatrix3fvARB MANGLE(UniformMatrix3fvARB)
1097 #define glUniformMatrix3fv MANGLE(UniformMatrix3fv)
1098+#define glUniformMatrix3x2dv MANGLE(UniformMatrix3x2dv)
1099 #define glUniformMatrix3x2fv MANGLE(UniformMatrix3x2fv)
1100+#define glUniformMatrix3x4dv MANGLE(UniformMatrix3x4dv)
1101 #define glUniformMatrix3x4fv MANGLE(UniformMatrix3x4fv)
1102+#define glUniformMatrix4dv MANGLE(UniformMatrix4dv)
1103 #define glUniformMatrix4fvARB MANGLE(UniformMatrix4fvARB)
1104 #define glUniformMatrix4fv MANGLE(UniformMatrix4fv)
1105+#define glUniformMatrix4x2dv MANGLE(UniformMatrix4x2dv)
1106 #define glUniformMatrix4x2fv MANGLE(UniformMatrix4x2fv)
1107+#define glUniformMatrix4x3dv MANGLE(UniformMatrix4x3dv)
1108 #define glUniformMatrix4x3fv MANGLE(UniformMatrix4x3fv)
1109+#define glUniformSubroutinesuiv MANGLE(UniformSubroutinesuiv)
1110 #define glUniformui64NV MANGLE(Uniformui64NV)
1111 #define glUniformui64vNV MANGLE(Uniformui64vNV)
1112 #define glUnlockArraysEXT MANGLE(UnlockArraysEXT)
1113@@ -1646,9 +1906,11 @@
1114 #define glUpdateObjectBufferATI MANGLE(UpdateObjectBufferATI)
1115 #define glUseProgram MANGLE(UseProgram)
1116 #define glUseProgramObjectARB MANGLE(UseProgramObjectARB)
1117+#define glUseProgramStages MANGLE(UseProgramStages)
1118 #define glUseShaderProgramEXT MANGLE(UseShaderProgramEXT)
1119 #define glValidateProgramARB MANGLE(ValidateProgramARB)
1120 #define glValidateProgram MANGLE(ValidateProgram)
1121+#define glValidateProgramPipeline MANGLE(ValidateProgramPipeline)
1122 #define glVariantArrayObjectATI MANGLE(VariantArrayObjectATI)
1123 #define glVariantbvEXT MANGLE(VariantbvEXT)
1124 #define glVariantdvEXT MANGLE(VariantdvEXT)
1125@@ -1659,6 +1921,16 @@
1126 #define glVariantubvEXT MANGLE(VariantubvEXT)
1127 #define glVariantuivEXT MANGLE(VariantuivEXT)
1128 #define glVariantusvEXT MANGLE(VariantusvEXT)
1129+#define glVDPAUFiniNV MANGLE(VDPAUFiniNV)
1130+#define glVDPAUGetSurfaceivNV MANGLE(VDPAUGetSurfaceivNV)
1131+#define glVDPAUInitNV MANGLE(VDPAUInitNV)
1132+#define glVDPAUIsSurfaceNV MANGLE(VDPAUIsSurfaceNV)
1133+#define glVDPAUMapSurfacesNV MANGLE(VDPAUMapSurfacesNV)
1134+#define glVDPAURegisterOutputSurfaceNV MANGLE(VDPAURegisterOutputSurfaceNV)
1135+#define glVDPAURegisterVideoSurfaceNV MANGLE(VDPAURegisterVideoSurfaceNV)
1136+#define glVDPAUSurfaceAccessNV MANGLE(VDPAUSurfaceAccessNV)
1137+#define glVDPAUUnmapSurfacesNV MANGLE(VDPAUUnmapSurfacesNV)
1138+#define glVDPAUUnregisterSurfaceNV MANGLE(VDPAUUnregisterSurfaceNV)
1139 #define glVertex2d MANGLE(Vertex2d)
1140 #define glVertex2dv MANGLE(Vertex2dv)
1141 #define glVertex2f MANGLE(Vertex2f)
1142@@ -1692,6 +1964,7 @@
1143 #define glVertexArrayParameteriAPPLE MANGLE(VertexArrayParameteriAPPLE)
1144 #define glVertexArrayRangeAPPLE MANGLE(VertexArrayRangeAPPLE)
1145 #define glVertexArrayRangeNV MANGLE(VertexArrayRangeNV)
1146+#define glVertexArrayVertexAttribLOffsetEXT MANGLE(VertexArrayVertexAttribLOffsetEXT)
1147 #define glVertexAttrib1dARB MANGLE(VertexAttrib1dARB)
1148 #define glVertexAttrib1d MANGLE(VertexAttrib1d)
1149 #define glVertexAttrib1dNV MANGLE(VertexAttrib1dNV)
1150@@ -1800,6 +2073,7 @@
1151 #define glVertexAttrib4usv MANGLE(VertexAttrib4usv)
1152 #define glVertexAttribArrayObjectATI MANGLE(VertexAttribArrayObjectATI)
1153 #define glVertexAttribDivisorARB MANGLE(VertexAttribDivisorARB)
1154+#define glVertexAttribDivisor MANGLE(VertexAttribDivisor)
1155 #define glVertexAttribFormatNV MANGLE(VertexAttribFormatNV)
1156 #define glVertexAttribI1iEXT MANGLE(VertexAttribI1iEXT)
1157 #define glVertexAttribI1i MANGLE(VertexAttribI1i)
1158@@ -1844,6 +2118,49 @@
1159 #define glVertexAttribIFormatNV MANGLE(VertexAttribIFormatNV)
1160 #define glVertexAttribIPointerEXT MANGLE(VertexAttribIPointerEXT)
1161 #define glVertexAttribIPointer MANGLE(VertexAttribIPointer)
1162+#define glVertexAttribL1dEXT MANGLE(VertexAttribL1dEXT)
1163+#define glVertexAttribL1d MANGLE(VertexAttribL1d)
1164+#define glVertexAttribL1dvEXT MANGLE(VertexAttribL1dvEXT)
1165+#define glVertexAttribL1dv MANGLE(VertexAttribL1dv)
1166+#define glVertexAttribL1i64NV MANGLE(VertexAttribL1i64NV)
1167+#define glVertexAttribL1i64vNV MANGLE(VertexAttribL1i64vNV)
1168+#define glVertexAttribL1ui64NV MANGLE(VertexAttribL1ui64NV)
1169+#define glVertexAttribL1ui64vNV MANGLE(VertexAttribL1ui64vNV)
1170+#define glVertexAttribL2dEXT MANGLE(VertexAttribL2dEXT)
1171+#define glVertexAttribL2d MANGLE(VertexAttribL2d)
1172+#define glVertexAttribL2dvEXT MANGLE(VertexAttribL2dvEXT)
1173+#define glVertexAttribL2dv MANGLE(VertexAttribL2dv)
1174+#define glVertexAttribL2i64NV MANGLE(VertexAttribL2i64NV)
1175+#define glVertexAttribL2i64vNV MANGLE(VertexAttribL2i64vNV)
1176+#define glVertexAttribL2ui64NV MANGLE(VertexAttribL2ui64NV)
1177+#define glVertexAttribL2ui64vNV MANGLE(VertexAttribL2ui64vNV)
1178+#define glVertexAttribL3dEXT MANGLE(VertexAttribL3dEXT)
1179+#define glVertexAttribL3d MANGLE(VertexAttribL3d)
1180+#define glVertexAttribL3dvEXT MANGLE(VertexAttribL3dvEXT)
1181+#define glVertexAttribL3dv MANGLE(VertexAttribL3dv)
1182+#define glVertexAttribL3i64NV MANGLE(VertexAttribL3i64NV)
1183+#define glVertexAttribL3i64vNV MANGLE(VertexAttribL3i64vNV)
1184+#define glVertexAttribL3ui64NV MANGLE(VertexAttribL3ui64NV)
1185+#define glVertexAttribL3ui64vNV MANGLE(VertexAttribL3ui64vNV)
1186+#define glVertexAttribL4dEXT MANGLE(VertexAttribL4dEXT)
1187+#define glVertexAttribL4d MANGLE(VertexAttribL4d)
1188+#define glVertexAttribL4dvEXT MANGLE(VertexAttribL4dvEXT)
1189+#define glVertexAttribL4dv MANGLE(VertexAttribL4dv)
1190+#define glVertexAttribL4i64NV MANGLE(VertexAttribL4i64NV)
1191+#define glVertexAttribL4i64vNV MANGLE(VertexAttribL4i64vNV)
1192+#define glVertexAttribL4ui64NV MANGLE(VertexAttribL4ui64NV)
1193+#define glVertexAttribL4ui64vNV MANGLE(VertexAttribL4ui64vNV)
1194+#define glVertexAttribLFormatNV MANGLE(VertexAttribLFormatNV)
1195+#define glVertexAttribLPointerEXT MANGLE(VertexAttribLPointerEXT)
1196+#define glVertexAttribLPointer MANGLE(VertexAttribLPointer)
1197+#define glVertexAttribP1ui MANGLE(VertexAttribP1ui)
1198+#define glVertexAttribP1uiv MANGLE(VertexAttribP1uiv)
1199+#define glVertexAttribP2ui MANGLE(VertexAttribP2ui)
1200+#define glVertexAttribP2uiv MANGLE(VertexAttribP2uiv)
1201+#define glVertexAttribP3ui MANGLE(VertexAttribP3ui)
1202+#define glVertexAttribP3uiv MANGLE(VertexAttribP3uiv)
1203+#define glVertexAttribP4ui MANGLE(VertexAttribP4ui)
1204+#define glVertexAttribP4uiv MANGLE(VertexAttribP4uiv)
1205 #define glVertexAttribPointerARB MANGLE(VertexAttribPointerARB)
1206 #define glVertexAttribPointer MANGLE(VertexAttribPointer)
1207 #define glVertexAttribPointerNV MANGLE(VertexAttribPointerNV)
1208@@ -1868,6 +2185,12 @@
1209 #define glVertexBlendEnvfATI MANGLE(VertexBlendEnvfATI)
1210 #define glVertexBlendEnviATI MANGLE(VertexBlendEnviATI)
1211 #define glVertexFormatNV MANGLE(VertexFormatNV)
1212+#define glVertexP2ui MANGLE(VertexP2ui)
1213+#define glVertexP2uiv MANGLE(VertexP2uiv)
1214+#define glVertexP3ui MANGLE(VertexP3ui)
1215+#define glVertexP3uiv MANGLE(VertexP3uiv)
1216+#define glVertexP4ui MANGLE(VertexP4ui)
1217+#define glVertexP4uiv MANGLE(VertexP4uiv)
1218 #define glVertexPointerEXT MANGLE(VertexPointerEXT)
1219 #define glVertexPointerListIBM MANGLE(VertexPointerListIBM)
1220 #define glVertexPointer MANGLE(VertexPointer)
1221@@ -1913,6 +2236,9 @@
1222 #define glVideoCaptureStreamParameterdvNV MANGLE(VideoCaptureStreamParameterdvNV)
1223 #define glVideoCaptureStreamParameterfvNV MANGLE(VideoCaptureStreamParameterfvNV)
1224 #define glVideoCaptureStreamParameterivNV MANGLE(VideoCaptureStreamParameterivNV)
1225+#define glViewportArrayv MANGLE(ViewportArrayv)
1226+#define glViewportIndexedf MANGLE(ViewportIndexedf)
1227+#define glViewportIndexedfv MANGLE(ViewportIndexedfv)
1228 #define glViewport MANGLE(Viewport)
1229 #define glWaitSync MANGLE(WaitSync)
1230 #define glWeightbvARB MANGLE(WeightbvARB)
1231diff --git a/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h b/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
1232index 3f66f96..75dba8c 100644
1233--- a/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
1234+++ b/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
1235@@ -258,9 +258,10 @@ vsplit_segment_fan_linear(struct vsplit_frontend *vsplit, unsigned flags,
1236 boolean use_spoken = ((flags & DRAW_SPLIT_BEFORE) != 0);
1237 unsigned nr = 0, i;
1238
1239- assert(icount + !!use_spoken <= vsplit->segment_size);
1240+ assert(icount <= vsplit->segment_size);
1241
1242 if (use_spoken) {
1243+ /* replace istart by i0 */
1244 vsplit->fetch_elts[nr++] = i0;
1245 for (i = 1 ; i < icount; i++)
1246 vsplit->fetch_elts[nr++] = istart + i;
1247diff --git a/src/gallium/targets/SConscript.dri b/src/gallium/targets/SConscript.dri
1248index bc3671a..101863a 100644
1249--- a/src/gallium/targets/SConscript.dri
1250+++ b/src/gallium/targets/SConscript.dri
1251@@ -72,7 +72,6 @@ COMMON_DRI_DRM_OBJECTS = [
1252
1253 drienv.AppendUnique(LIBS = [
1254 'expat',
1255- 'talloc',
1256 ])
1257
1258 Export([
1259diff --git a/src/gallium/targets/libgl-gdi/SConscript b/src/gallium/targets/libgl-gdi/SConscript
1260index 6fa0851..ec7dbad 100644
1261--- a/src/gallium/targets/libgl-gdi/SConscript
1262+++ b/src/gallium/targets/libgl-gdi/SConscript
1263@@ -15,7 +15,6 @@ env.Append(LIBS = [
1264 'user32',
1265 'kernel32',
1266 'ws2_32',
1267- talloc,
1268 ])
1269
1270 sources = ['libgl_gdi.c']
1271diff --git a/src/gallium/targets/libgl-xlib/SConscript b/src/gallium/targets/libgl-xlib/SConscript
1272index d932736..7f0f245 100644
1273--- a/src/gallium/targets/libgl-xlib/SConscript
1274+++ b/src/gallium/targets/libgl-xlib/SConscript
1275@@ -23,7 +23,6 @@ env.Prepend(LIBS = [
1276 mesa,
1277 glsl,
1278 gallium,
1279- 'talloc'
1280 ])
1281
1282 sources = [
1283diff --git a/src/glsl/Makefile b/src/glsl/Makefile
1284index 86a577e..7e9471e 100644
1285--- a/src/glsl/Makefile
1286+++ b/src/glsl/Makefile
1287@@ -17,6 +17,7 @@ GLCPP_SOURCES = \
1288
1289 C_SOURCES = \
1290 strtod.c \
1291+ ralloc.c \
1292 $(LIBGLCPP_SOURCES)
1293
1294 CXX_SOURCES = \
1295@@ -83,8 +84,7 @@ CXX_SOURCES = \
1296 s_expression.cpp
1297
1298 LIBS = \
1299- $(TOP)/src/glsl/libglsl.a \
1300- $(TALLOC_LIBS)
1301+ $(TOP)/src/glsl/libglsl.a
1302
1303 APPS = glsl_compiler glcpp/glcpp
1304
1305@@ -113,7 +113,6 @@ OBJECTS = \
1306 $(CXX_SOURCES:.cpp=.o)
1307
1308 INCLUDES = \
1309- $(TALLOC_CFLAGS) \
1310 -I. \
1311 -I../mesa \
1312 -I../mapi \
1313diff --git a/src/glsl/SConscript b/src/glsl/SConscript
1314index f179721..c1adfe8 100644
1315--- a/src/glsl/SConscript
1316+++ b/src/glsl/SConscript
1317@@ -7,11 +7,9 @@ env = env.Clone()
1318 env.Prepend(CPPPATH = [
1319 '#src/mapi',
1320 '#src/mesa',
1321+ '#src/glsl',
1322 ])
1323
1324-if env['platform'] == 'windows':
1325- env.Prepend(CPPPATH = ['#src/talloc'])
1326-
1327 sources = [
1328 'glcpp/glcpp-lex.c',
1329 'glcpp/glcpp-parse.c',
1330@@ -75,6 +73,7 @@ sources = [
1331 'opt_structure_splitting.cpp',
1332 'opt_swizzle_swizzle.cpp',
1333 'opt_tree_grafting.cpp',
1334+ 'ralloc.c',
1335 's_expression.cpp',
1336 'strtod.c',
1337 ]
1338@@ -96,7 +95,7 @@ if env['platform'] == 'windows':
1339 'user32',
1340 ])
1341
1342-env.Prepend(LIBS = [glsl, talloc])
1343+env.Prepend(LIBS = [glsl])
1344
1345 env.Program(
1346 target = 'glsl2',
1347diff --git a/src/glsl/ast.h b/src/glsl/ast.h
1348index a77b522..da11f5a 100644
1349--- a/src/glsl/ast.h
1350+++ b/src/glsl/ast.h
1351@@ -49,23 +49,23 @@ struct YYLTYPE;
1352 */
1353 class ast_node {
1354 public:
1355- /* Callers of this talloc-based new need not call delete. It's
1356- * easier to just talloc_free 'ctx' (or any of its ancestors). */
1357+ /* Callers of this ralloc-based new need not call delete. It's
1358+ * easier to just ralloc_free 'ctx' (or any of its ancestors). */
1359 static void* operator new(size_t size, void *ctx)
1360 {
1361 void *node;
1362
1363- node = talloc_zero_size(ctx, size);
1364+ node = rzalloc_size(ctx, size);
1365 assert(node != NULL);
1366
1367 return node;
1368 }
1369
1370 /* If the user *does* call delete, that's OK, we will just
1371- * talloc_free in that case. */
1372+ * ralloc_free in that case. */
1373 static void operator delete(void *table)
1374 {
1375- talloc_free(table);
1376+ ralloc_free(table);
1377 }
1378
1379 /**
1380@@ -318,7 +318,8 @@ public:
1381
1382
1383 enum {
1384- ast_precision_high = 0, /**< Default precision. */
1385+ ast_precision_none = 0, /**< Absence of precision qualifier. */
1386+ ast_precision_high,
1387 ast_precision_medium,
1388 ast_precision_low
1389 };
1390@@ -440,7 +441,8 @@ public:
1391 /** Construct a type specifier from a type name */
1392 ast_type_specifier(const char *name)
1393 : type_specifier(ast_type_name), type_name(name), structure(NULL),
1394- is_array(false), array_size(NULL), precision(ast_precision_high)
1395+ is_array(false), array_size(NULL), precision(ast_precision_none),
1396+ is_precision_statement(false)
1397 {
1398 /* empty */
1399 }
1400@@ -448,7 +450,8 @@ public:
1401 /** Construct a type specifier from a structure definition */
1402 ast_type_specifier(ast_struct_specifier *s)
1403 : type_specifier(ast_struct), type_name(s->name), structure(s),
1404- is_array(false), array_size(NULL), precision(ast_precision_high)
1405+ is_array(false), array_size(NULL), precision(ast_precision_none),
1406+ is_precision_statement(false)
1407 {
1408 /* empty */
1409 }
1410@@ -470,6 +473,8 @@ public:
1411 ast_expression *array_size;
1412
1413 unsigned precision:2;
1414+
1415+ bool is_precision_statement;
1416 };
1417
1418
1419diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp
1420index 6ecf779..07c994f 100644
1421--- a/src/glsl/ast_function.cpp
1422+++ b/src/glsl/ast_function.cpp
1423@@ -66,7 +66,7 @@ process_parameters(exec_list *instructions, exec_list *actual_parameters,
1424 * formal or actual parameter list. Only the type is used.
1425 *
1426 * \return
1427- * A talloced string representing the prototype of the function.
1428+ * A ralloced string representing the prototype of the function.
1429 */
1430 char *
1431 prototype_string(const glsl_type *return_type, const char *name,
1432@@ -75,19 +75,19 @@ prototype_string(const glsl_type *return_type, const char *name,
1433 char *str = NULL;
1434
1435 if (return_type != NULL)
1436- str = talloc_asprintf(str, "%s ", return_type->name);
1437+ str = ralloc_asprintf(NULL, "%s ", return_type->name);
1438
1439- str = talloc_asprintf_append(str, "%s(", name);
1440+ ralloc_asprintf_append(&str, "%s(", name);
1441
1442 const char *comma = "";
1443 foreach_list(node, parameters) {
1444 const ir_instruction *const param = (ir_instruction *) node;
1445
1446- str = talloc_asprintf_append(str, "%s%s", comma, param->type->name);
1447+ ralloc_asprintf_append(&str, "%s%s", comma, param->type->name);
1448 comma = ", ";
1449 }
1450
1451- str = talloc_strdup_append(str, ")");
1452+ ralloc_strcat(&str, ")");
1453 return str;
1454 }
1455
1456@@ -173,7 +173,7 @@ match_function_by_name(exec_list *instructions, const char *name,
1457 ir_dereference_variable *deref;
1458
1459 var = new(ctx) ir_variable(sig->return_type,
1460- talloc_asprintf(ctx, "%s_retval",
1461+ ralloc_asprintf(ctx, "%s_retval",
1462 sig->function_name()),
1463 ir_var_temporary);
1464 instructions->push_tail(var);
1465@@ -195,7 +195,7 @@ match_function_by_name(exec_list *instructions, const char *name,
1466
1467 _mesa_glsl_error(loc, state, "no matching function for call to `%s'",
1468 str);
1469- talloc_free(str);
1470+ ralloc_free(str);
1471
1472 const char *prefix = "candidates are: ";
1473
1474@@ -211,7 +211,7 @@ match_function_by_name(exec_list *instructions, const char *name,
1475
1476 str = prototype_string(sig->return_type, f->name, &sig->parameters);
1477 _mesa_glsl_error(loc, state, "%s%s\n", prefix, str);
1478- talloc_free(str);
1479+ ralloc_free(str);
1480
1481 prefix = " ";
1482 }
1483@@ -232,7 +232,7 @@ match_function_by_name(exec_list *instructions, const char *name,
1484 static ir_rvalue *
1485 convert_component(ir_rvalue *src, const glsl_type *desired_type)
1486 {
1487- void *ctx = talloc_parent(src);
1488+ void *ctx = ralloc_parent(src);
1489 const unsigned a = desired_type->base_type;
1490 const unsigned b = src->type->base_type;
1491 ir_expression *result = NULL;
1492@@ -295,7 +295,7 @@ convert_component(ir_rvalue *src, const glsl_type *desired_type)
1493 static ir_rvalue *
1494 dereference_component(ir_rvalue *src, unsigned component)
1495 {
1496- void *ctx = talloc_parent(src);
1497+ void *ctx = ralloc_parent(src);
1498 assert(component < src->type->components());
1499
1500 /* If the source is a constant, just create a new constant instead of a
1501diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
1502index 0423add..e66016d 100644
1503--- a/src/glsl/ast_to_hir.cpp
1504+++ b/src/glsl/ast_to_hir.cpp
1505@@ -715,7 +715,7 @@ do_assignment(exec_list *instructions, struct _mesa_glsl_parse_state *state,
1506 static ir_rvalue *
1507 get_lvalue_copy(exec_list *instructions, ir_rvalue *lvalue)
1508 {
1509- void *ctx = talloc_parent(lvalue);
1510+ void *ctx = ralloc_parent(lvalue);
1511 ir_variable *var;
1512
1513 var = new(ctx) ir_variable(lvalue->type, "_post_incdec_tmp",
1514@@ -1626,6 +1626,7 @@ ast_expression::hir(exec_list *instructions,
1515 result = new(ctx) ir_dereference_variable(var);
1516
1517 if (var != NULL) {
1518+ var->used = true;
1519 type = result->type;
1520 } else {
1521 _mesa_glsl_error(& loc, state, "`%s' undeclared",
1522@@ -1800,10 +1801,17 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
1523 struct _mesa_glsl_parse_state *state,
1524 YYLTYPE *loc)
1525 {
1526- if (qual->flags.q.invariant)
1527- var->invariant = 1;
1528+ if (qual->flags.q.invariant) {
1529+ if (var->used) {
1530+ _mesa_glsl_error(loc, state,
1531+ "variable `%s' may not be redeclared "
1532+ "`invariant' after being used",
1533+ var->name);
1534+ } else {
1535+ var->invariant = 1;
1536+ }
1537+ }
1538
1539- /* FINISHME: Mark 'in' variables at global scope as read-only. */
1540 if (qual->flags.q.constant || qual->flags.q.attribute
1541 || qual->flags.q.uniform
1542 || (qual->flags.q.varying && (state->target == fragment_shader)))
1543@@ -1855,6 +1863,23 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
1544 else if (qual->flags.q.uniform)
1545 var->mode = ir_var_uniform;
1546
1547+ if (state->all_invariant && (state->current_function == NULL)) {
1548+ switch (state->target) {
1549+ case vertex_shader:
1550+ if (var->mode == ir_var_out)
1551+ var->invariant = true;
1552+ break;
1553+ case geometry_shader:
1554+ if ((var->mode == ir_var_in) || (var->mode == ir_var_out))
1555+ var->invariant = true;
1556+ break;
1557+ case fragment_shader:
1558+ if (var->mode == ir_var_in)
1559+ var->invariant = true;
1560+ break;
1561+ }
1562+ }
1563+
1564 if (qual->flags.q.flat)
1565 var->interpolation = ir_var_flat;
1566 else if (qual->flags.q.noperspective)
1567@@ -1934,6 +1959,52 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
1568 }
1569 }
1570
1571+ /* Does the declaration use the 'layout' keyword?
1572+ */
1573+ const bool uses_layout = qual->flags.q.pixel_center_integer
1574+ || qual->flags.q.origin_upper_left
1575+ || qual->flags.q.explicit_location;
1576+
1577+ /* Does the declaration use the deprecated 'attribute' or 'varying'
1578+ * keywords?
1579+ */
1580+ const bool uses_deprecated_qualifier = qual->flags.q.attribute
1581+ || qual->flags.q.varying;
1582+
1583+ /* Is the 'layout' keyword used with parameters that allow relaxed checking.
1584+ * Many implementations of GL_ARB_fragment_coord_conventions_enable and some
1585+ * implementations (only Mesa?) GL_ARB_explicit_attrib_location_enable
1586+ * allowed the layout qualifier to be used with 'varying' and 'attribute'.
1587+ * These extensions and all following extensions that add the 'layout'
1588+ * keyword have been modified to require the use of 'in' or 'out'.
1589+ *
1590+ * The following extension do not allow the deprecated keywords:
1591+ *
1592+ * GL_AMD_conservative_depth
1593+ * GL_ARB_gpu_shader5
1594+ * GL_ARB_separate_shader_objects
1595+ * GL_ARB_tesselation_shader
1596+ * GL_ARB_transform_feedback3
1597+ * GL_ARB_uniform_buffer_object
1598+ *
1599+ * It is unknown whether GL_EXT_shader_image_load_store or GL_NV_gpu_shader5
1600+ * allow layout with the deprecated keywords.
1601+ */
1602+ const bool relaxed_layout_qualifier_checking =
1603+ state->ARB_fragment_coord_conventions_enable;
1604+
1605+ if (uses_layout && uses_deprecated_qualifier) {
1606+ if (relaxed_layout_qualifier_checking) {
1607+ _mesa_glsl_warning(loc, state,
1608+ "`layout' qualifier may not be used with "
1609+ "`attribute' or `varying'");
1610+ } else {
1611+ _mesa_glsl_error(loc, state,
1612+ "`layout' qualifier may not be used with "
1613+ "`attribute' or `varying'");
1614+ }
1615+ }
1616+
1617 if (var->type->is_array() && state->language_version != 110) {
1618 var->array_lvalue = true;
1619 }
1620@@ -1991,6 +2062,11 @@ ast_declarator_list::hir(exec_list *instructions,
1621 _mesa_glsl_error(& loc, state,
1622 "`%s' cannot be marked invariant, fragment shader "
1623 "inputs only\n", decl->identifier);
1624+ } else if (earlier->used) {
1625+ _mesa_glsl_error(& loc, state,
1626+ "variable `%s' may not be redeclared "
1627+ "`invariant' after being used",
1628+ earlier->name);
1629 } else {
1630 earlier->invariant = true;
1631 }
1632@@ -2060,20 +2136,23 @@ ast_declarator_list::hir(exec_list *instructions,
1633 *
1634 * Local variables can only use the qualifier const."
1635 *
1636- * This is relaxed in GLSL 1.30.
1637+ * This is relaxed in GLSL 1.30. It is also relaxed by any extension
1638+ * that adds the 'layout' keyword.
1639 */
1640- if (state->language_version < 120) {
1641+ if ((state->language_version < 130)
1642+ && !state->ARB_explicit_attrib_location_enable
1643+ && !state->ARB_fragment_coord_conventions_enable) {
1644 if (this->type->qualifier.flags.q.out) {
1645 _mesa_glsl_error(& loc, state,
1646 "`out' qualifier in declaration of `%s' "
1647- "only valid for function parameters in GLSL 1.10.",
1648- decl->identifier);
1649+ "only valid for function parameters in %s.",
1650+ decl->identifier, state->version_string);
1651 }
1652 if (this->type->qualifier.flags.q.in) {
1653 _mesa_glsl_error(& loc, state,
1654 "`in' qualifier in declaration of `%s' "
1655- "only valid for function parameters in GLSL 1.10.",
1656- decl->identifier);
1657+ "only valid for function parameters in %s.",
1658+ decl->identifier, state->version_string);
1659 }
1660 /* FINISHME: Test for other invalid qualifiers. */
1661 }
1662@@ -2129,6 +2208,8 @@ ast_declarator_list::hir(exec_list *instructions,
1663 mode, var->name, extra);
1664 }
1665 } else if (var->mode == ir_var_in) {
1666+ var->read_only = true;
1667+
1668 if (state->target == vertex_shader) {
1669 bool error_emitted = false;
1670
1671@@ -2181,6 +2262,38 @@ ast_declarator_list::hir(exec_list *instructions,
1672 }
1673 }
1674
1675+ /* Precision qualifiers exists only in GLSL versions 1.00 and >= 1.30.
1676+ */
1677+ if (this->type->specifier->precision != ast_precision_none
1678+ && state->language_version != 100
1679+ && state->language_version < 130) {
1680+
1681+ _mesa_glsl_error(&loc, state,
1682+ "precision qualifiers are supported only in GLSL ES "
1683+ "1.00, and GLSL 1.30 and later");
1684+ }
1685+
1686+
1687+ /* Precision qualifiers only apply to floating point and integer types.
1688+ *
1689+ * From section 4.5.2 of the GLSL 1.30 spec:
1690+ * "Any floating point or any integer declaration can have the type
1691+ * preceded by one of these precision qualifiers [...] Literal
1692+ * constants do not have precision qualifiers. Neither do Boolean
1693+ * variables.
1694+ */
1695+ if (this->type->specifier->precision != ast_precision_none
1696+ && !var->type->is_float()
1697+ && !var->type->is_integer()
1698+ && !(var->type->is_array()
1699+ && (var->type->fields.array->is_float()
1700+ || var->type->fields.array->is_integer()))) {
1701+
1702+ _mesa_glsl_error(&loc, state,
1703+ "precision qualifiers apply only to floating point "
1704+ "and integer types");
1705+ }
1706+
1707 /* Process the initializer and add its instructions to a temporary
1708 * list. This list will be added to the instruction stream (below) after
1709 * the declaration is added. This is done because in some cases (such as
1710@@ -2307,7 +2420,8 @@ ast_declarator_list::hir(exec_list *instructions,
1711 */
1712 if (this->type->qualifier.flags.q.constant && decl->initializer == NULL) {
1713 _mesa_glsl_error(& loc, state,
1714- "const declaration of `%s' must be initialized");
1715+ "const declaration of `%s' must be initialized",
1716+ decl->identifier);
1717 }
1718
1719 /* Check if this declaration is actually a re-declaration, either to
1720@@ -2778,27 +2892,26 @@ ast_jump_statement::hir(exec_list *instructions,
1721 assert(state->current_function);
1722
1723 if (opt_return_value) {
1724- if (state->current_function->return_type->base_type ==
1725- GLSL_TYPE_VOID) {
1726- YYLTYPE loc = this->get_location();
1727-
1728- _mesa_glsl_error(& loc, state,
1729- "`return` with a value, in function `%s' "
1730- "returning void",
1731- state->current_function->function_name());
1732- }
1733-
1734 ir_rvalue *const ret = opt_return_value->hir(instructions, state);
1735- assert(ret != NULL);
1736+
1737+ /* The value of the return type can be NULL if the shader says
1738+ * 'return foo();' and foo() is a function that returns void.
1739+ *
1740+ * NOTE: The GLSL spec doesn't say that this is an error. The type
1741+ * of the return value is void. If the return type of the function is
1742+ * also void, then this should compile without error. Seriously.
1743+ */
1744+ const glsl_type *const ret_type =
1745+ (ret == NULL) ? glsl_type::void_type : ret->type;
1746
1747 /* Implicit conversions are not allowed for return values. */
1748- if (state->current_function->return_type != ret->type) {
1749+ if (state->current_function->return_type != ret_type) {
1750 YYLTYPE loc = this->get_location();
1751
1752 _mesa_glsl_error(& loc, state,
1753 "`return' with wrong type %s, in function `%s' "
1754 "returning %s",
1755- ret->type->name,
1756+ ret_type->name,
1757 state->current_function->function_name(),
1758 state->current_function->return_type->name);
1759 }
1760@@ -3015,6 +3128,58 @@ ir_rvalue *
1761 ast_type_specifier::hir(exec_list *instructions,
1762 struct _mesa_glsl_parse_state *state)
1763 {
1764+ if (!this->is_precision_statement && this->structure == NULL)
1765+ return NULL;
1766+
1767+ YYLTYPE loc = this->get_location();
1768+
1769+ if (this->precision != ast_precision_none
1770+ && state->language_version != 100
1771+ && state->language_version < 130) {
1772+ _mesa_glsl_error(&loc, state,
1773+ "precision qualifiers exist only in "
1774+ "GLSL ES 1.00, and GLSL 1.30 and later");
1775+ return NULL;
1776+ }
1777+ if (this->precision != ast_precision_none
1778+ && this->structure != NULL) {
1779+ _mesa_glsl_error(&loc, state,
1780+ "precision qualifiers do not apply to structures");
1781+ return NULL;
1782+ }
1783+
1784+ /* If this is a precision statement, check that the type to which it is
1785+ * applied is either float or int.
1786+ *
1787+ * From section 4.5.3 of the GLSL 1.30 spec:
1788+ * "The precision statement
1789+ * precision precision-qualifier type;
1790+ * can be used to establish a default precision qualifier. The type
1791+ * field can be either int or float [...]. Any other types or
1792+ * qualifiers will result in an error.
1793+ */
1794+ if (this->is_precision_statement) {
1795+ assert(this->precision != ast_precision_none);
1796+ assert(this->structure == NULL); /* The check for structures was
1797+ * performed above. */
1798+ if (this->is_array) {
1799+ _mesa_glsl_error(&loc, state,
1800+ "default precision statements do not apply to "
1801+ "arrays");
1802+ return NULL;
1803+ }
1804+ if (this->type_specifier != ast_float
1805+ && this->type_specifier != ast_int) {
1806+ _mesa_glsl_error(&loc, state,
1807+ "default precision statements apply only to types "
1808+ "float and int");
1809+ return NULL;
1810+ }
1811+
1812+ /* FINISHME: Translate precision statements into IR. */
1813+ return NULL;
1814+ }
1815+
1816 if (this->structure != NULL)
1817 return this->structure->hir(instructions, state);
1818
1819@@ -3045,7 +3210,7 @@ ast_struct_specifier::hir(exec_list *instructions,
1820 * the types to HIR. This ensures that structure definitions embedded in
1821 * other structure definitions are processed.
1822 */
1823- glsl_struct_field *const fields = talloc_array(state, glsl_struct_field,
1824+ glsl_struct_field *const fields = ralloc_array(state, glsl_struct_field,
1825 decl_count);
1826
1827 unsigned i = 0;
1828diff --git a/src/glsl/ast_type.cpp b/src/glsl/ast_type.cpp
1829index b7488cf..47d4f9f 100644
1830--- a/src/glsl/ast_type.cpp
1831+++ b/src/glsl/ast_type.cpp
1832@@ -49,7 +49,8 @@ ast_type_specifier::print(void) const
1833
1834 ast_type_specifier::ast_type_specifier(int specifier)
1835 : type_specifier(ast_types(specifier)), type_name(NULL), structure(NULL),
1836- is_array(false), array_size(NULL), precision(ast_precision_high)
1837+ is_array(false), array_size(NULL), precision(ast_precision_none),
1838+ is_precision_statement(false)
1839 {
1840 static const char *const names[] = {
1841 "void",
1842diff --git a/src/glsl/builtin_function.cpp b/src/glsl/builtin_function.cpp
1843index 1c6d59d..c6d1fc8 100644
1844--- a/src/glsl/builtin_function.cpp
1845+++ b/src/glsl/builtin_function.cpp
1846@@ -63,7 +63,7 @@ read_builtins(GLenum target, const char *protos, const char **functions, unsigne
1847 if (st->error) {
1848 printf("error reading builtin: %.35s ...\n", functions[i]);
1849 printf("Info log:\n%s\n", st->info_log);
1850- talloc_free(sh);
1851+ ralloc_free(sh);
1852 return NULL;
1853 }
1854 }
1855@@ -13516,7 +13516,7 @@ void *builtin_mem_ctx = NULL;
1856 void
1857 _mesa_glsl_release_functions(void)
1858 {
1859- talloc_free(builtin_mem_ctx);
1860+ ralloc_free(builtin_mem_ctx);
1861 builtin_mem_ctx = NULL;
1862 memset(builtin_profiles, 0, sizeof(builtin_profiles));
1863 }
1864@@ -13533,7 +13533,7 @@ _mesa_read_profile(struct _mesa_glsl_parse_state *state,
1865
1866 if (sh == NULL) {
1867 sh = read_builtins(GL_VERTEX_SHADER, prototypes, functions, count);
1868- talloc_steal(builtin_mem_ctx, sh);
1869+ ralloc_steal(builtin_mem_ctx, sh);
1870 builtin_profiles[profile_index] = sh;
1871 }
1872
1873@@ -13546,7 +13546,7 @@ _mesa_glsl_initialize_functions(exec_list *instructions,
1874 struct _mesa_glsl_parse_state *state)
1875 {
1876 if (builtin_mem_ctx == NULL) {
1877- builtin_mem_ctx = talloc_init("GLSL built-in functions");
1878+ builtin_mem_ctx = ralloc_context(NULL); // "GLSL built-in functions"
1879 memset(&builtin_profiles, 0, sizeof(builtin_profiles));
1880 }
1881
1882diff --git a/src/glsl/builtin_types.h b/src/glsl/builtin_types.h
1883index 443ae16..8ccbf6e 100644
1884--- a/src/glsl/builtin_types.h
1885+++ b/src/glsl/builtin_types.h
1886@@ -24,10 +24,11 @@
1887 const glsl_type glsl_type::_error_type =
1888 glsl_type(GL_INVALID_ENUM, GLSL_TYPE_ERROR, 0, 0, "");
1889
1890-const glsl_type glsl_type::void_type =
1891+const glsl_type glsl_type::_void_type =
1892 glsl_type(GL_INVALID_ENUM, GLSL_TYPE_VOID, 0, 0, "void");
1893
1894 const glsl_type *const glsl_type::error_type = & glsl_type::_error_type;
1895+const glsl_type *const glsl_type::void_type = & glsl_type::_void_type;
1896
1897 /** \name Core built-in types
1898 *
1899diff --git a/src/glsl/glcpp/glcpp-lex.c b/src/glsl/glcpp/glcpp-lex.c
1900index 156af30..b53bea6 100644
1901--- a/src/glsl/glcpp/glcpp-lex.c
1902+++ b/src/glsl/glcpp/glcpp-lex.c
1903@@ -795,6 +795,10 @@ int glcpp_get_lineno (yyscan_t yyscanner );
1904
1905 void glcpp_set_lineno (int line_number ,yyscan_t yyscanner );
1906
1907+int glcpp_get_column (yyscan_t yyscanner );
1908+
1909+void glcpp_set_column (int column_no ,yyscan_t yyscanner );
1910+
1911 YYSTYPE * glcpp_get_lval (yyscan_t yyscanner );
1912
1913 void glcpp_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1914@@ -954,7 +958,7 @@ YY_DECL
1915
1916
1917 /* Single-line comments */
1918-#line 958 "glcpp/glcpp-lex.c"
1919+#line 962 "glcpp/glcpp-lex.c"
1920
1921 yylval = yylval_param;
1922
1923@@ -1121,7 +1125,7 @@ case 8:
1924 YY_RULE_SETUP
1925 #line 94 "glcpp/glcpp-lex.l"
1926 {
1927- yylval->str = talloc_strdup (yyextra, yytext);
1928+ yylval->str = ralloc_strdup (yyextra, yytext);
1929 yyextra->space_tokens = 0;
1930 return HASH_VERSION;
1931 }
1932@@ -1132,7 +1136,7 @@ case 9:
1933 YY_RULE_SETUP
1934 #line 102 "glcpp/glcpp-lex.l"
1935 {
1936- yylval->str = talloc_strdup (yyextra, yytext);
1937+ yylval->str = ralloc_strdup (yyextra, yytext);
1938 yylineno++;
1939 yycolumn = 0;
1940 return OTHER;
1941@@ -1312,7 +1316,7 @@ case 24:
1942 YY_RULE_SETUP
1943 #line 221 "glcpp/glcpp-lex.l"
1944 {
1945- yylval->str = talloc_strdup (yyextra, yytext);
1946+ yylval->str = ralloc_strdup (yyextra, yytext);
1947 return INTEGER_STRING;
1948 }
1949 YY_BREAK
1950@@ -1320,7 +1324,7 @@ case 25:
1951 YY_RULE_SETUP
1952 #line 226 "glcpp/glcpp-lex.l"
1953 {
1954- yylval->str = talloc_strdup (yyextra, yytext);
1955+ yylval->str = ralloc_strdup (yyextra, yytext);
1956 return INTEGER_STRING;
1957 }
1958 YY_BREAK
1959@@ -1328,7 +1332,7 @@ case 26:
1960 YY_RULE_SETUP
1961 #line 231 "glcpp/glcpp-lex.l"
1962 {
1963- yylval->str = talloc_strdup (yyextra, yytext);
1964+ yylval->str = ralloc_strdup (yyextra, yytext);
1965 return INTEGER_STRING;
1966 }
1967 YY_BREAK
1968@@ -1406,7 +1410,7 @@ case 37:
1969 YY_RULE_SETUP
1970 #line 276 "glcpp/glcpp-lex.l"
1971 {
1972- yylval->str = talloc_strdup (yyextra, yytext);
1973+ yylval->str = ralloc_strdup (yyextra, yytext);
1974 return IDENTIFIER;
1975 }
1976 YY_BREAK
1977@@ -1421,7 +1425,7 @@ case 39:
1978 YY_RULE_SETUP
1979 #line 285 "glcpp/glcpp-lex.l"
1980 {
1981- yylval->str = talloc_strdup (yyextra, yytext);
1982+ yylval->str = ralloc_strdup (yyextra, yytext);
1983 return OTHER;
1984 }
1985 YY_BREAK
1986@@ -1471,7 +1475,7 @@ YY_RULE_SETUP
1987 #line 319 "glcpp/glcpp-lex.l"
1988 ECHO;
1989 YY_BREAK
1990-#line 1475 "glcpp/glcpp-lex.c"
1991+#line 1479 "glcpp/glcpp-lex.c"
1992 case YY_STATE_EOF(DONE):
1993 case YY_STATE_EOF(COMMENT):
1994 case YY_STATE_EOF(UNREACHABLE):
1995diff --git a/src/glsl/glcpp/glcpp-lex.l b/src/glsl/glcpp/glcpp-lex.l
1996index e936854..11b73ae 100644
1997--- a/src/glsl/glcpp/glcpp-lex.l
1998+++ b/src/glsl/glcpp/glcpp-lex.l
1999@@ -92,7 +92,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
2000 }
2001
2002 {HASH}version {
2003- yylval->str = talloc_strdup (yyextra, yytext);
2004+ yylval->str = ralloc_strdup (yyextra, yytext);
2005 yyextra->space_tokens = 0;
2006 return HASH_VERSION;
2007 }
2008@@ -100,7 +100,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
2009 /* glcpp doesn't handle #extension, #version, or #pragma directives.
2010 * Simply pass them through to the main compiler's lexer/parser. */
2011 {HASH}(extension|pragma)[^\n]+ {
2012- yylval->str = talloc_strdup (yyextra, yytext);
2013+ yylval->str = ralloc_strdup (yyextra, yytext);
2014 yylineno++;
2015 yycolumn = 0;
2016 return OTHER;
2017@@ -219,17 +219,17 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
2018 }
2019
2020 {DECIMAL_INTEGER} {
2021- yylval->str = talloc_strdup (yyextra, yytext);
2022+ yylval->str = ralloc_strdup (yyextra, yytext);
2023 return INTEGER_STRING;
2024 }
2025
2026 {OCTAL_INTEGER} {
2027- yylval->str = talloc_strdup (yyextra, yytext);
2028+ yylval->str = ralloc_strdup (yyextra, yytext);
2029 return INTEGER_STRING;
2030 }
2031
2032 {HEXADECIMAL_INTEGER} {
2033- yylval->str = talloc_strdup (yyextra, yytext);
2034+ yylval->str = ralloc_strdup (yyextra, yytext);
2035 return INTEGER_STRING;
2036 }
2037
2038@@ -274,7 +274,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
2039 }
2040
2041 {IDENTIFIER} {
2042- yylval->str = talloc_strdup (yyextra, yytext);
2043+ yylval->str = ralloc_strdup (yyextra, yytext);
2044 return IDENTIFIER;
2045 }
2046
2047@@ -283,7 +283,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
2048 }
2049
2050 {OTHER}+ {
2051- yylval->str = talloc_strdup (yyextra, yytext);
2052+ yylval->str = ralloc_strdup (yyextra, yytext);
2053 return OTHER;
2054 }
2055
2056diff --git a/src/glsl/glcpp/glcpp-parse.c b/src/glsl/glcpp/glcpp-parse.c
2057index ab7c30e..609db08 100644
2058--- a/src/glsl/glcpp/glcpp-parse.c
2059+++ b/src/glsl/glcpp/glcpp-parse.c
2060@@ -102,10 +102,6 @@
2061 #include "main/core.h" /* for struct gl_extensions */
2062 #include "main/mtypes.h" /* for gl_api enum */
2063
2064-#define glcpp_print(stream, str) stream = talloc_strdup_append(stream, str)
2065-#define glcpp_printf(stream, fmt, args, ...) \
2066- stream = talloc_asprintf_append(stream, fmt, args)
2067-
2068 static void
2069 yyerror (YYLTYPE *locp, glcpp_parser_t *parser, const char *error);
2070
2071@@ -149,7 +145,7 @@ _argument_list_length (argument_list_t *list);
2072 static token_list_t *
2073 _argument_list_member_at (argument_list_t *list, int index);
2074
2075-/* Note: This function talloc_steal()s the str pointer. */
2076+/* Note: This function ralloc_steal()s the str pointer. */
2077 static token_t *
2078 _token_create_str (void *ctx, int type, char *str);
2079
2080@@ -159,10 +155,7 @@ _token_create_ival (void *ctx, int type, int ival);
2081 static token_list_t *
2082 _token_list_create (void *ctx);
2083
2084-/* Note: This function adds a talloc_reference() to token.
2085- *
2086- * You may want to talloc_unlink any current reference if you no
2087- * longer need it. */
2088+/* Note: This function calls ralloc_steal on token. */
2089 static void
2090 _token_list_append (token_list_t *list, token_t *token);
2091
2092@@ -219,7 +212,7 @@ add_builtin_define(glcpp_parser_t *parser, const char *name, int value);
2093
2094
2095 /* Line 189 of yacc.c */
2096-#line 223 "glcpp/glcpp-parse.c"
2097+#line 216 "glcpp/glcpp-parse.c"
2098
2099 /* Enabling traces. */
2100 #ifndef YYDEBUG
2101@@ -307,7 +300,7 @@ typedef struct YYLTYPE
2102
2103
2104 /* Line 264 of yacc.c */
2105-#line 311 "glcpp/glcpp-parse.c"
2106+#line 304 "glcpp/glcpp-parse.c"
2107
2108 #ifdef short
2109 # undef short
2110@@ -632,17 +625,17 @@ static const yytype_int8 yyrhs[] =
2111 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
2112 static const yytype_uint16 yyrline[] =
2113 {
2114- 0, 188, 188, 190, 194, 197, 202, 203, 207, 210,
2115- 216, 219, 222, 225, 233, 252, 262, 267, 272, 291,
2116- 306, 309, 312, 333, 337, 346, 351, 352, 355, 358,
2117- 361, 364, 367, 370, 373, 376, 379, 382, 385, 388,
2118- 391, 394, 397, 400, 403, 406, 409, 412, 415, 418,
2119- 424, 429, 437, 438, 442, 448, 449, 452, 454, 461,
2120- 465, 469, 474, 479, 487, 493, 501, 505, 509, 513,
2121- 517, 524, 525, 526, 527, 528, 529, 530, 531, 532,
2122- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
2123- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
2124- 553, 554
2125+ 0, 181, 181, 183, 187, 190, 195, 196, 200, 203,
2126+ 209, 212, 215, 218, 226, 245, 255, 260, 265, 284,
2127+ 299, 302, 305, 326, 330, 339, 344, 345, 348, 351,
2128+ 354, 357, 360, 363, 366, 369, 372, 375, 378, 381,
2129+ 384, 387, 390, 393, 401, 404, 407, 410, 413, 416,
2130+ 422, 427, 435, 436, 440, 446, 447, 450, 452, 459,
2131+ 463, 467, 472, 476, 483, 488, 495, 499, 503, 507,
2132+ 511, 518, 519, 520, 521, 522, 523, 524, 525, 526,
2133+ 527, 528, 529, 530, 531, 532, 533, 534, 535, 536,
2134+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
2135+ 547, 548
2136 };
2137 #endif
2138
2139@@ -1611,7 +1604,7 @@ YYLTYPE yylloc;
2140 /* User initialization code. */
2141
2142 /* Line 1251 of yacc.c */
2143-#line 155 "glcpp/glcpp-parse.y"
2144+#line 148 "glcpp/glcpp-parse.y"
2145 {
2146 yylloc.first_line = 1;
2147 yylloc.first_column = 1;
2148@@ -1621,7 +1614,7 @@ YYLTYPE yylloc;
2149 }
2150
2151 /* Line 1251 of yacc.c */
2152-#line 1625 "glcpp/glcpp-parse.c"
2153+#line 1618 "glcpp/glcpp-parse.c"
2154 yylsp[0] = yylloc;
2155
2156 goto yysetstate;
2157@@ -1809,27 +1802,27 @@ yyreduce:
2158 case 4:
2159
2160 /* Line 1464 of yacc.c */
2161-#line 194 "glcpp/glcpp-parse.y"
2162+#line 187 "glcpp/glcpp-parse.y"
2163 {
2164- glcpp_print(parser->output, "\n");
2165+ ralloc_strcat (&parser->output, "\n");
2166 ;}
2167 break;
2168
2169 case 5:
2170
2171 /* Line 1464 of yacc.c */
2172-#line 197 "glcpp/glcpp-parse.y"
2173+#line 190 "glcpp/glcpp-parse.y"
2174 {
2175 _glcpp_parser_print_expanded_token_list (parser, (yyvsp[(1) - (1)].token_list));
2176- glcpp_print(parser->output, "\n");
2177- talloc_free ((yyvsp[(1) - (1)].token_list));
2178+ ralloc_strcat (&parser->output, "\n");
2179+ ralloc_free ((yyvsp[(1) - (1)].token_list));
2180 ;}
2181 break;
2182
2183 case 8:
2184
2185 /* Line 1464 of yacc.c */
2186-#line 207 "glcpp/glcpp-parse.y"
2187+#line 200 "glcpp/glcpp-parse.y"
2188 {
2189 _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (3)]), (yyvsp[(2) - (3)].ival));
2190 ;}
2191@@ -1838,7 +1831,7 @@ yyreduce:
2192 case 9:
2193
2194 /* Line 1464 of yacc.c */
2195-#line 210 "glcpp/glcpp-parse.y"
2196+#line 203 "glcpp/glcpp-parse.y"
2197 {
2198 _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (3)]), "elif", (yyvsp[(2) - (3)].ival));
2199 ;}
2200@@ -1847,7 +1840,7 @@ yyreduce:
2201 case 10:
2202
2203 /* Line 1464 of yacc.c */
2204-#line 216 "glcpp/glcpp-parse.y"
2205+#line 209 "glcpp/glcpp-parse.y"
2206 {
2207 _define_object_macro (parser, & (yylsp[(2) - (4)]), (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].token_list));
2208 ;}
2209@@ -1856,7 +1849,7 @@ yyreduce:
2210 case 11:
2211
2212 /* Line 1464 of yacc.c */
2213-#line 219 "glcpp/glcpp-parse.y"
2214+#line 212 "glcpp/glcpp-parse.y"
2215 {
2216 _define_function_macro (parser, & (yylsp[(2) - (6)]), (yyvsp[(2) - (6)].str), NULL, (yyvsp[(5) - (6)].token_list));
2217 ;}
2218@@ -1865,7 +1858,7 @@ yyreduce:
2219 case 12:
2220
2221 /* Line 1464 of yacc.c */
2222-#line 222 "glcpp/glcpp-parse.y"
2223+#line 215 "glcpp/glcpp-parse.y"
2224 {
2225 _define_function_macro (parser, & (yylsp[(2) - (7)]), (yyvsp[(2) - (7)].str), (yyvsp[(4) - (7)].string_list), (yyvsp[(6) - (7)].token_list));
2226 ;}
2227@@ -1874,21 +1867,21 @@ yyreduce:
2228 case 13:
2229
2230 /* Line 1464 of yacc.c */
2231-#line 225 "glcpp/glcpp-parse.y"
2232+#line 218 "glcpp/glcpp-parse.y"
2233 {
2234 macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (3)].str));
2235 if (macro) {
2236 hash_table_remove (parser->defines, (yyvsp[(2) - (3)].str));
2237- talloc_free (macro);
2238+ ralloc_free (macro);
2239 }
2240- talloc_free ((yyvsp[(2) - (3)].str));
2241+ ralloc_free ((yyvsp[(2) - (3)].str));
2242 ;}
2243 break;
2244
2245 case 14:
2246
2247 /* Line 1464 of yacc.c */
2248-#line 233 "glcpp/glcpp-parse.y"
2249+#line 226 "glcpp/glcpp-parse.y"
2250 {
2251 /* Be careful to only evaluate the 'if' expression if
2252 * we are not skipping. When we are skipping, we
2253@@ -1913,7 +1906,7 @@ yyreduce:
2254 case 15:
2255
2256 /* Line 1464 of yacc.c */
2257-#line 252 "glcpp/glcpp-parse.y"
2258+#line 245 "glcpp/glcpp-parse.y"
2259 {
2260 /* #if without an expression is only an error if we
2261 * are not skipping */
2262@@ -1929,10 +1922,10 @@ yyreduce:
2263 case 16:
2264
2265 /* Line 1464 of yacc.c */
2266-#line 262 "glcpp/glcpp-parse.y"
2267+#line 255 "glcpp/glcpp-parse.y"
2268 {
2269 macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str));
2270- talloc_free ((yyvsp[(2) - (4)].str));
2271+ ralloc_free ((yyvsp[(2) - (4)].str));
2272 _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (4)]), macro != NULL);
2273 ;}
2274 break;
2275@@ -1940,10 +1933,10 @@ yyreduce:
2276 case 17:
2277
2278 /* Line 1464 of yacc.c */
2279-#line 267 "glcpp/glcpp-parse.y"
2280+#line 260 "glcpp/glcpp-parse.y"
2281 {
2282 macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str));
2283- talloc_free ((yyvsp[(2) - (4)].str));
2284+ ralloc_free ((yyvsp[(2) - (4)].str));
2285 _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (4)]), macro == NULL);
2286 ;}
2287 break;
2288@@ -1951,7 +1944,7 @@ yyreduce:
2289 case 18:
2290
2291 /* Line 1464 of yacc.c */
2292-#line 272 "glcpp/glcpp-parse.y"
2293+#line 265 "glcpp/glcpp-parse.y"
2294 {
2295 /* Be careful to only evaluate the 'elif' expression
2296 * if we are not skipping. When we are skipping, we
2297@@ -1976,7 +1969,7 @@ yyreduce:
2298 case 19:
2299
2300 /* Line 1464 of yacc.c */
2301-#line 291 "glcpp/glcpp-parse.y"
2302+#line 284 "glcpp/glcpp-parse.y"
2303 {
2304 /* #elif without an expression is an error unless we
2305 * are skipping. */
2306@@ -1997,7 +1990,7 @@ yyreduce:
2307 case 20:
2308
2309 /* Line 1464 of yacc.c */
2310-#line 306 "glcpp/glcpp-parse.y"
2311+#line 299 "glcpp/glcpp-parse.y"
2312 {
2313 _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (2)]), "else", 1);
2314 ;}
2315@@ -2006,7 +1999,7 @@ yyreduce:
2316 case 21:
2317
2318 /* Line 1464 of yacc.c */
2319-#line 309 "glcpp/glcpp-parse.y"
2320+#line 302 "glcpp/glcpp-parse.y"
2321 {
2322 _glcpp_parser_skip_stack_pop (parser, & (yylsp[(1) - (2)]));
2323 ;}
2324@@ -2015,12 +2008,12 @@ yyreduce:
2325 case 22:
2326
2327 /* Line 1464 of yacc.c */
2328-#line 312 "glcpp/glcpp-parse.y"
2329+#line 305 "glcpp/glcpp-parse.y"
2330 {
2331 macro_t *macro = hash_table_find (parser->defines, "__VERSION__");
2332 if (macro) {
2333 hash_table_remove (parser->defines, "__VERSION__");
2334- talloc_free (macro);
2335+ ralloc_free (macro);
2336 }
2337 add_builtin_define (parser, "__VERSION__", (yyvsp[(2) - (3)].ival));
2338
2339@@ -2035,14 +2028,14 @@ yyreduce:
2340 if ((yyvsp[(2) - (3)].ival) >= 130 || (yyvsp[(2) - (3)].ival) == 100)
2341 add_builtin_define (parser, "GL_FRAGMENT_PRECISION_HIGH", 1);
2342
2343- glcpp_printf(parser->output, "#version %" PRIiMAX, (yyvsp[(2) - (3)].ival));
2344+ ralloc_asprintf_append (&parser->output, "#version %" PRIiMAX, (yyvsp[(2) - (3)].ival));
2345 ;}
2346 break;
2347
2348 case 24:
2349
2350 /* Line 1464 of yacc.c */
2351-#line 337 "glcpp/glcpp-parse.y"
2352+#line 330 "glcpp/glcpp-parse.y"
2353 {
2354 if (strlen ((yyvsp[(1) - (1)].str)) >= 3 && strncmp ((yyvsp[(1) - (1)].str), "0x", 2) == 0) {
2355 (yyval.ival) = strtoll ((yyvsp[(1) - (1)].str) + 2, NULL, 16);
2356@@ -2057,7 +2050,7 @@ yyreduce:
2357 case 25:
2358
2359 /* Line 1464 of yacc.c */
2360-#line 346 "glcpp/glcpp-parse.y"
2361+#line 339 "glcpp/glcpp-parse.y"
2362 {
2363 (yyval.ival) = (yyvsp[(1) - (1)].ival);
2364 ;}
2365@@ -2066,7 +2059,7 @@ yyreduce:
2366 case 27:
2367
2368 /* Line 1464 of yacc.c */
2369-#line 352 "glcpp/glcpp-parse.y"
2370+#line 345 "glcpp/glcpp-parse.y"
2371 {
2372 (yyval.ival) = (yyvsp[(1) - (3)].ival) || (yyvsp[(3) - (3)].ival);
2373 ;}
2374@@ -2075,7 +2068,7 @@ yyreduce:
2375 case 28:
2376
2377 /* Line 1464 of yacc.c */
2378-#line 355 "glcpp/glcpp-parse.y"
2379+#line 348 "glcpp/glcpp-parse.y"
2380 {
2381 (yyval.ival) = (yyvsp[(1) - (3)].ival) && (yyvsp[(3) - (3)].ival);
2382 ;}
2383@@ -2084,7 +2077,7 @@ yyreduce:
2384 case 29:
2385
2386 /* Line 1464 of yacc.c */
2387-#line 358 "glcpp/glcpp-parse.y"
2388+#line 351 "glcpp/glcpp-parse.y"
2389 {
2390 (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival);
2391 ;}
2392@@ -2093,7 +2086,7 @@ yyreduce:
2393 case 30:
2394
2395 /* Line 1464 of yacc.c */
2396-#line 361 "glcpp/glcpp-parse.y"
2397+#line 354 "glcpp/glcpp-parse.y"
2398 {
2399 (yyval.ival) = (yyvsp[(1) - (3)].ival) ^ (yyvsp[(3) - (3)].ival);
2400 ;}
2401@@ -2102,7 +2095,7 @@ yyreduce:
2402 case 31:
2403
2404 /* Line 1464 of yacc.c */
2405-#line 364 "glcpp/glcpp-parse.y"
2406+#line 357 "glcpp/glcpp-parse.y"
2407 {
2408 (yyval.ival) = (yyvsp[(1) - (3)].ival) & (yyvsp[(3) - (3)].ival);
2409 ;}
2410@@ -2111,7 +2104,7 @@ yyreduce:
2411 case 32:
2412
2413 /* Line 1464 of yacc.c */
2414-#line 367 "glcpp/glcpp-parse.y"
2415+#line 360 "glcpp/glcpp-parse.y"
2416 {
2417 (yyval.ival) = (yyvsp[(1) - (3)].ival) != (yyvsp[(3) - (3)].ival);
2418 ;}
2419@@ -2120,7 +2113,7 @@ yyreduce:
2420 case 33:
2421
2422 /* Line 1464 of yacc.c */
2423-#line 370 "glcpp/glcpp-parse.y"
2424+#line 363 "glcpp/glcpp-parse.y"
2425 {
2426 (yyval.ival) = (yyvsp[(1) - (3)].ival) == (yyvsp[(3) - (3)].ival);
2427 ;}
2428@@ -2129,7 +2122,7 @@ yyreduce:
2429 case 34:
2430
2431 /* Line 1464 of yacc.c */
2432-#line 373 "glcpp/glcpp-parse.y"
2433+#line 366 "glcpp/glcpp-parse.y"
2434 {
2435 (yyval.ival) = (yyvsp[(1) - (3)].ival) >= (yyvsp[(3) - (3)].ival);
2436 ;}
2437@@ -2138,7 +2131,7 @@ yyreduce:
2438 case 35:
2439
2440 /* Line 1464 of yacc.c */
2441-#line 376 "glcpp/glcpp-parse.y"
2442+#line 369 "glcpp/glcpp-parse.y"
2443 {
2444 (yyval.ival) = (yyvsp[(1) - (3)].ival) <= (yyvsp[(3) - (3)].ival);
2445 ;}
2446@@ -2147,7 +2140,7 @@ yyreduce:
2447 case 36:
2448
2449 /* Line 1464 of yacc.c */
2450-#line 379 "glcpp/glcpp-parse.y"
2451+#line 372 "glcpp/glcpp-parse.y"
2452 {
2453 (yyval.ival) = (yyvsp[(1) - (3)].ival) > (yyvsp[(3) - (3)].ival);
2454 ;}
2455@@ -2156,7 +2149,7 @@ yyreduce:
2456 case 37:
2457
2458 /* Line 1464 of yacc.c */
2459-#line 382 "glcpp/glcpp-parse.y"
2460+#line 375 "glcpp/glcpp-parse.y"
2461 {
2462 (yyval.ival) = (yyvsp[(1) - (3)].ival) < (yyvsp[(3) - (3)].ival);
2463 ;}
2464@@ -2165,7 +2158,7 @@ yyreduce:
2465 case 38:
2466
2467 /* Line 1464 of yacc.c */
2468-#line 385 "glcpp/glcpp-parse.y"
2469+#line 378 "glcpp/glcpp-parse.y"
2470 {
2471 (yyval.ival) = (yyvsp[(1) - (3)].ival) >> (yyvsp[(3) - (3)].ival);
2472 ;}
2473@@ -2174,7 +2167,7 @@ yyreduce:
2474 case 39:
2475
2476 /* Line 1464 of yacc.c */
2477-#line 388 "glcpp/glcpp-parse.y"
2478+#line 381 "glcpp/glcpp-parse.y"
2479 {
2480 (yyval.ival) = (yyvsp[(1) - (3)].ival) << (yyvsp[(3) - (3)].ival);
2481 ;}
2482@@ -2183,7 +2176,7 @@ yyreduce:
2483 case 40:
2484
2485 /* Line 1464 of yacc.c */
2486-#line 391 "glcpp/glcpp-parse.y"
2487+#line 384 "glcpp/glcpp-parse.y"
2488 {
2489 (yyval.ival) = (yyvsp[(1) - (3)].ival) - (yyvsp[(3) - (3)].ival);
2490 ;}
2491@@ -2192,7 +2185,7 @@ yyreduce:
2492 case 41:
2493
2494 /* Line 1464 of yacc.c */
2495-#line 394 "glcpp/glcpp-parse.y"
2496+#line 387 "glcpp/glcpp-parse.y"
2497 {
2498 (yyval.ival) = (yyvsp[(1) - (3)].ival) + (yyvsp[(3) - (3)].ival);
2499 ;}
2500@@ -2201,7 +2194,7 @@ yyreduce:
2501 case 42:
2502
2503 /* Line 1464 of yacc.c */
2504-#line 397 "glcpp/glcpp-parse.y"
2505+#line 390 "glcpp/glcpp-parse.y"
2506 {
2507 (yyval.ival) = (yyvsp[(1) - (3)].ival) % (yyvsp[(3) - (3)].ival);
2508 ;}
2509@@ -2210,16 +2203,21 @@ yyreduce:
2510 case 43:
2511
2512 /* Line 1464 of yacc.c */
2513-#line 400 "glcpp/glcpp-parse.y"
2514+#line 393 "glcpp/glcpp-parse.y"
2515 {
2516- (yyval.ival) = (yyvsp[(1) - (3)].ival) / (yyvsp[(3) - (3)].ival);
2517+ if ((yyvsp[(3) - (3)].ival) == 0) {
2518+ yyerror (& (yylsp[(1) - (3)]), parser,
2519+ "division by 0 in preprocessor directive");
2520+ } else {
2521+ (yyval.ival) = (yyvsp[(1) - (3)].ival) / (yyvsp[(3) - (3)].ival);
2522+ }
2523 ;}
2524 break;
2525
2526 case 44:
2527
2528 /* Line 1464 of yacc.c */
2529-#line 403 "glcpp/glcpp-parse.y"
2530+#line 401 "glcpp/glcpp-parse.y"
2531 {
2532 (yyval.ival) = (yyvsp[(1) - (3)].ival) * (yyvsp[(3) - (3)].ival);
2533 ;}
2534@@ -2228,7 +2226,7 @@ yyreduce:
2535 case 45:
2536
2537 /* Line 1464 of yacc.c */
2538-#line 406 "glcpp/glcpp-parse.y"
2539+#line 404 "glcpp/glcpp-parse.y"
2540 {
2541 (yyval.ival) = ! (yyvsp[(2) - (2)].ival);
2542 ;}
2543@@ -2237,7 +2235,7 @@ yyreduce:
2544 case 46:
2545
2546 /* Line 1464 of yacc.c */
2547-#line 409 "glcpp/glcpp-parse.y"
2548+#line 407 "glcpp/glcpp-parse.y"
2549 {
2550 (yyval.ival) = ~ (yyvsp[(2) - (2)].ival);
2551 ;}
2552@@ -2246,7 +2244,7 @@ yyreduce:
2553 case 47:
2554
2555 /* Line 1464 of yacc.c */
2556-#line 412 "glcpp/glcpp-parse.y"
2557+#line 410 "glcpp/glcpp-parse.y"
2558 {
2559 (yyval.ival) = - (yyvsp[(2) - (2)].ival);
2560 ;}
2561@@ -2255,7 +2253,7 @@ yyreduce:
2562 case 48:
2563
2564 /* Line 1464 of yacc.c */
2565-#line 415 "glcpp/glcpp-parse.y"
2566+#line 413 "glcpp/glcpp-parse.y"
2567 {
2568 (yyval.ival) = + (yyvsp[(2) - (2)].ival);
2569 ;}
2570@@ -2264,7 +2262,7 @@ yyreduce:
2571 case 49:
2572
2573 /* Line 1464 of yacc.c */
2574-#line 418 "glcpp/glcpp-parse.y"
2575+#line 416 "glcpp/glcpp-parse.y"
2576 {
2577 (yyval.ival) = (yyvsp[(2) - (3)].ival);
2578 ;}
2579@@ -2273,36 +2271,36 @@ yyreduce:
2580 case 50:
2581
2582 /* Line 1464 of yacc.c */
2583-#line 424 "glcpp/glcpp-parse.y"
2584+#line 422 "glcpp/glcpp-parse.y"
2585 {
2586 (yyval.string_list) = _string_list_create (parser);
2587 _string_list_append_item ((yyval.string_list), (yyvsp[(1) - (1)].str));
2588- talloc_steal ((yyval.string_list), (yyvsp[(1) - (1)].str));
2589+ ralloc_steal ((yyval.string_list), (yyvsp[(1) - (1)].str));
2590 ;}
2591 break;
2592
2593 case 51:
2594
2595 /* Line 1464 of yacc.c */
2596-#line 429 "glcpp/glcpp-parse.y"
2597+#line 427 "glcpp/glcpp-parse.y"
2598 {
2599 (yyval.string_list) = (yyvsp[(1) - (3)].string_list);
2600 _string_list_append_item ((yyval.string_list), (yyvsp[(3) - (3)].str));
2601- talloc_steal ((yyval.string_list), (yyvsp[(3) - (3)].str));
2602+ ralloc_steal ((yyval.string_list), (yyvsp[(3) - (3)].str));
2603 ;}
2604 break;
2605
2606 case 52:
2607
2608 /* Line 1464 of yacc.c */
2609-#line 437 "glcpp/glcpp-parse.y"
2610+#line 435 "glcpp/glcpp-parse.y"
2611 { (yyval.token_list) = NULL; ;}
2612 break;
2613
2614 case 54:
2615
2616 /* Line 1464 of yacc.c */
2617-#line 442 "glcpp/glcpp-parse.y"
2618+#line 440 "glcpp/glcpp-parse.y"
2619 {
2620 yyerror (& (yylsp[(1) - (2)]), parser, "Invalid tokens after #");
2621 ;}
2622@@ -2311,14 +2309,14 @@ yyreduce:
2623 case 55:
2624
2625 /* Line 1464 of yacc.c */
2626-#line 448 "glcpp/glcpp-parse.y"
2627+#line 446 "glcpp/glcpp-parse.y"
2628 { (yyval.token_list) = NULL; ;}
2629 break;
2630
2631 case 58:
2632
2633 /* Line 1464 of yacc.c */
2634-#line 454 "glcpp/glcpp-parse.y"
2635+#line 452 "glcpp/glcpp-parse.y"
2636 {
2637 glcpp_warning(&(yylsp[(1) - (1)]), parser, "extra tokens at end of directive");
2638 ;}
2639@@ -2327,7 +2325,7 @@ yyreduce:
2640 case 59:
2641
2642 /* Line 1464 of yacc.c */
2643-#line 461 "glcpp/glcpp-parse.y"
2644+#line 459 "glcpp/glcpp-parse.y"
2645 {
2646 int v = hash_table_find (parser->defines, (yyvsp[(2) - (2)].str)) ? 1 : 0;
2647 (yyval.token) = _token_create_ival (parser, INTEGER, v);
2648@@ -2337,7 +2335,7 @@ yyreduce:
2649 case 60:
2650
2651 /* Line 1464 of yacc.c */
2652-#line 465 "glcpp/glcpp-parse.y"
2653+#line 463 "glcpp/glcpp-parse.y"
2654 {
2655 int v = hash_table_find (parser->defines, (yyvsp[(3) - (4)].str)) ? 1 : 0;
2656 (yyval.token) = _token_create_ival (parser, INTEGER, v);
2657@@ -2347,52 +2345,48 @@ yyreduce:
2658 case 62:
2659
2660 /* Line 1464 of yacc.c */
2661-#line 474 "glcpp/glcpp-parse.y"
2662+#line 472 "glcpp/glcpp-parse.y"
2663 {
2664 (yyval.token_list) = _token_list_create (parser);
2665 _token_list_append ((yyval.token_list), (yyvsp[(1) - (1)].token));
2666- talloc_unlink (parser, (yyvsp[(1) - (1)].token));
2667 ;}
2668 break;
2669
2670 case 63:
2671
2672 /* Line 1464 of yacc.c */
2673-#line 479 "glcpp/glcpp-parse.y"
2674+#line 476 "glcpp/glcpp-parse.y"
2675 {
2676 (yyval.token_list) = (yyvsp[(1) - (2)].token_list);
2677 _token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token));
2678- talloc_unlink (parser, (yyvsp[(2) - (2)].token));
2679 ;}
2680 break;
2681
2682 case 64:
2683
2684 /* Line 1464 of yacc.c */
2685-#line 487 "glcpp/glcpp-parse.y"
2686+#line 483 "glcpp/glcpp-parse.y"
2687 {
2688 parser->space_tokens = 1;
2689 (yyval.token_list) = _token_list_create (parser);
2690 _token_list_append ((yyval.token_list), (yyvsp[(1) - (1)].token));
2691- talloc_unlink (parser, (yyvsp[(1) - (1)].token));
2692 ;}
2693 break;
2694
2695 case 65:
2696
2697 /* Line 1464 of yacc.c */
2698-#line 493 "glcpp/glcpp-parse.y"
2699+#line 488 "glcpp/glcpp-parse.y"
2700 {
2701 (yyval.token_list) = (yyvsp[(1) - (2)].token_list);
2702 _token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token));
2703- talloc_unlink (parser, (yyvsp[(2) - (2)].token));
2704 ;}
2705 break;
2706
2707 case 66:
2708
2709 /* Line 1464 of yacc.c */
2710-#line 501 "glcpp/glcpp-parse.y"
2711+#line 495 "glcpp/glcpp-parse.y"
2712 {
2713 (yyval.token) = _token_create_str (parser, IDENTIFIER, (yyvsp[(1) - (1)].str));
2714 (yyval.token)->location = yylloc;
2715@@ -2402,7 +2396,7 @@ yyreduce:
2716 case 67:
2717
2718 /* Line 1464 of yacc.c */
2719-#line 505 "glcpp/glcpp-parse.y"
2720+#line 499 "glcpp/glcpp-parse.y"
2721 {
2722 (yyval.token) = _token_create_str (parser, INTEGER_STRING, (yyvsp[(1) - (1)].str));
2723 (yyval.token)->location = yylloc;
2724@@ -2412,7 +2406,7 @@ yyreduce:
2725 case 68:
2726
2727 /* Line 1464 of yacc.c */
2728-#line 509 "glcpp/glcpp-parse.y"
2729+#line 503 "glcpp/glcpp-parse.y"
2730 {
2731 (yyval.token) = _token_create_ival (parser, (yyvsp[(1) - (1)].ival), (yyvsp[(1) - (1)].ival));
2732 (yyval.token)->location = yylloc;
2733@@ -2422,7 +2416,7 @@ yyreduce:
2734 case 69:
2735
2736 /* Line 1464 of yacc.c */
2737-#line 513 "glcpp/glcpp-parse.y"
2738+#line 507 "glcpp/glcpp-parse.y"
2739 {
2740 (yyval.token) = _token_create_str (parser, OTHER, (yyvsp[(1) - (1)].str));
2741 (yyval.token)->location = yylloc;
2742@@ -2432,7 +2426,7 @@ yyreduce:
2743 case 70:
2744
2745 /* Line 1464 of yacc.c */
2746-#line 517 "glcpp/glcpp-parse.y"
2747+#line 511 "glcpp/glcpp-parse.y"
2748 {
2749 (yyval.token) = _token_create_ival (parser, SPACE, SPACE);
2750 (yyval.token)->location = yylloc;
2751@@ -2442,224 +2436,224 @@ yyreduce:
2752 case 71:
2753
2754 /* Line 1464 of yacc.c */
2755-#line 524 "glcpp/glcpp-parse.y"
2756+#line 518 "glcpp/glcpp-parse.y"
2757 { (yyval.ival) = '['; ;}
2758 break;
2759
2760 case 72:
2761
2762 /* Line 1464 of yacc.c */
2763-#line 525 "glcpp/glcpp-parse.y"
2764+#line 519 "glcpp/glcpp-parse.y"
2765 { (yyval.ival) = ']'; ;}
2766 break;
2767
2768 case 73:
2769
2770 /* Line 1464 of yacc.c */
2771-#line 526 "glcpp/glcpp-parse.y"
2772+#line 520 "glcpp/glcpp-parse.y"
2773 { (yyval.ival) = '('; ;}
2774 break;
2775
2776 case 74:
2777
2778 /* Line 1464 of yacc.c */
2779-#line 527 "glcpp/glcpp-parse.y"
2780+#line 521 "glcpp/glcpp-parse.y"
2781 { (yyval.ival) = ')'; ;}
2782 break;
2783
2784 case 75:
2785
2786 /* Line 1464 of yacc.c */
2787-#line 528 "glcpp/glcpp-parse.y"
2788+#line 522 "glcpp/glcpp-parse.y"
2789 { (yyval.ival) = '{'; ;}
2790 break;
2791
2792 case 76:
2793
2794 /* Line 1464 of yacc.c */
2795-#line 529 "glcpp/glcpp-parse.y"
2796+#line 523 "glcpp/glcpp-parse.y"
2797 { (yyval.ival) = '}'; ;}
2798 break;
2799
2800 case 77:
2801
2802 /* Line 1464 of yacc.c */
2803-#line 530 "glcpp/glcpp-parse.y"
2804+#line 524 "glcpp/glcpp-parse.y"
2805 { (yyval.ival) = '.'; ;}
2806 break;
2807
2808 case 78:
2809
2810 /* Line 1464 of yacc.c */
2811-#line 531 "glcpp/glcpp-parse.y"
2812+#line 525 "glcpp/glcpp-parse.y"
2813 { (yyval.ival) = '&'; ;}
2814 break;
2815
2816 case 79:
2817
2818 /* Line 1464 of yacc.c */
2819-#line 532 "glcpp/glcpp-parse.y"
2820+#line 526 "glcpp/glcpp-parse.y"
2821 { (yyval.ival) = '*'; ;}
2822 break;
2823
2824 case 80:
2825
2826 /* Line 1464 of yacc.c */
2827-#line 533 "glcpp/glcpp-parse.y"
2828+#line 527 "glcpp/glcpp-parse.y"
2829 { (yyval.ival) = '+'; ;}
2830 break;
2831
2832 case 81:
2833
2834 /* Line 1464 of yacc.c */
2835-#line 534 "glcpp/glcpp-parse.y"
2836+#line 528 "glcpp/glcpp-parse.y"
2837 { (yyval.ival) = '-'; ;}
2838 break;
2839
2840 case 82:
2841
2842 /* Line 1464 of yacc.c */
2843-#line 535 "glcpp/glcpp-parse.y"
2844+#line 529 "glcpp/glcpp-parse.y"
2845 { (yyval.ival) = '~'; ;}
2846 break;
2847
2848 case 83:
2849
2850 /* Line 1464 of yacc.c */
2851-#line 536 "glcpp/glcpp-parse.y"
2852+#line 530 "glcpp/glcpp-parse.y"
2853 { (yyval.ival) = '!'; ;}
2854 break;
2855
2856 case 84:
2857
2858 /* Line 1464 of yacc.c */
2859-#line 537 "glcpp/glcpp-parse.y"
2860+#line 531 "glcpp/glcpp-parse.y"
2861 { (yyval.ival) = '/'; ;}
2862 break;
2863
2864 case 85:
2865
2866 /* Line 1464 of yacc.c */
2867-#line 538 "glcpp/glcpp-parse.y"
2868+#line 532 "glcpp/glcpp-parse.y"
2869 { (yyval.ival) = '%'; ;}
2870 break;
2871
2872 case 86:
2873
2874 /* Line 1464 of yacc.c */
2875-#line 539 "glcpp/glcpp-parse.y"
2876+#line 533 "glcpp/glcpp-parse.y"
2877 { (yyval.ival) = LEFT_SHIFT; ;}
2878 break;
2879
2880 case 87:
2881
2882 /* Line 1464 of yacc.c */
2883-#line 540 "glcpp/glcpp-parse.y"
2884+#line 534 "glcpp/glcpp-parse.y"
2885 { (yyval.ival) = RIGHT_SHIFT; ;}
2886 break;
2887
2888 case 88:
2889
2890 /* Line 1464 of yacc.c */
2891-#line 541 "glcpp/glcpp-parse.y"
2892+#line 535 "glcpp/glcpp-parse.y"
2893 { (yyval.ival) = '<'; ;}
2894 break;
2895
2896 case 89:
2897
2898 /* Line 1464 of yacc.c */
2899-#line 542 "glcpp/glcpp-parse.y"
2900+#line 536 "glcpp/glcpp-parse.y"
2901 { (yyval.ival) = '>'; ;}
2902 break;
2903
2904 case 90:
2905
2906 /* Line 1464 of yacc.c */
2907-#line 543 "glcpp/glcpp-parse.y"
2908+#line 537 "glcpp/glcpp-parse.y"
2909 { (yyval.ival) = LESS_OR_EQUAL; ;}
2910 break;
2911
2912 case 91:
2913
2914 /* Line 1464 of yacc.c */
2915-#line 544 "glcpp/glcpp-parse.y"
2916+#line 538 "glcpp/glcpp-parse.y"
2917 { (yyval.ival) = GREATER_OR_EQUAL; ;}
2918 break;
2919
2920 case 92:
2921
2922 /* Line 1464 of yacc.c */
2923-#line 545 "glcpp/glcpp-parse.y"
2924+#line 539 "glcpp/glcpp-parse.y"
2925 { (yyval.ival) = EQUAL; ;}
2926 break;
2927
2928 case 93:
2929
2930 /* Line 1464 of yacc.c */
2931-#line 546 "glcpp/glcpp-parse.y"
2932+#line 540 "glcpp/glcpp-parse.y"
2933 { (yyval.ival) = NOT_EQUAL; ;}
2934 break;
2935
2936 case 94:
2937
2938 /* Line 1464 of yacc.c */
2939-#line 547 "glcpp/glcpp-parse.y"
2940+#line 541 "glcpp/glcpp-parse.y"
2941 { (yyval.ival) = '^'; ;}
2942 break;
2943
2944 case 95:
2945
2946 /* Line 1464 of yacc.c */
2947-#line 548 "glcpp/glcpp-parse.y"
2948+#line 542 "glcpp/glcpp-parse.y"
2949 { (yyval.ival) = '|'; ;}
2950 break;
2951
2952 case 96:
2953
2954 /* Line 1464 of yacc.c */
2955-#line 549 "glcpp/glcpp-parse.y"
2956+#line 543 "glcpp/glcpp-parse.y"
2957 { (yyval.ival) = AND; ;}
2958 break;
2959
2960 case 97:
2961
2962 /* Line 1464 of yacc.c */
2963-#line 550 "glcpp/glcpp-parse.y"
2964+#line 544 "glcpp/glcpp-parse.y"
2965 { (yyval.ival) = OR; ;}
2966 break;
2967
2968 case 98:
2969
2970 /* Line 1464 of yacc.c */
2971-#line 551 "glcpp/glcpp-parse.y"
2972+#line 545 "glcpp/glcpp-parse.y"
2973 { (yyval.ival) = ';'; ;}
2974 break;
2975
2976 case 99:
2977
2978 /* Line 1464 of yacc.c */
2979-#line 552 "glcpp/glcpp-parse.y"
2980+#line 546 "glcpp/glcpp-parse.y"
2981 { (yyval.ival) = ','; ;}
2982 break;
2983
2984 case 100:
2985
2986 /* Line 1464 of yacc.c */
2987-#line 553 "glcpp/glcpp-parse.y"
2988+#line 547 "glcpp/glcpp-parse.y"
2989 { (yyval.ival) = '='; ;}
2990 break;
2991
2992 case 101:
2993
2994 /* Line 1464 of yacc.c */
2995-#line 554 "glcpp/glcpp-parse.y"
2996+#line 548 "glcpp/glcpp-parse.y"
2997 { (yyval.ival) = PASTE; ;}
2998 break;
2999
3000
3001
3002 /* Line 1464 of yacc.c */
3003-#line 2663 "glcpp/glcpp-parse.c"
3004+#line 2657 "glcpp/glcpp-parse.c"
3005 default: break;
3006 }
3007 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3008@@ -2878,7 +2872,7 @@ yyreturn:
3009
3010
3011 /* Line 1684 of yacc.c */
3012-#line 557 "glcpp/glcpp-parse.y"
3013+#line 551 "glcpp/glcpp-parse.y"
3014
3015
3016 string_list_t *
3017@@ -2886,7 +2880,7 @@ _string_list_create (void *ctx)
3018 {
3019 string_list_t *list;
3020
3021- list = talloc (ctx, string_list_t);
3022+ list = ralloc (ctx, string_list_t);
3023 list->head = NULL;
3024 list->tail = NULL;
3025
3026@@ -2898,8 +2892,8 @@ _string_list_append_item (string_list_t *list, const char *str)
3027 {
3028 string_node_t *node;
3029
3030- node = talloc (list, string_node_t);
3031- node->str = talloc_strdup (node, str);
3032+ node = ralloc (list, string_node_t);
3033+ node->str = ralloc_strdup (node, str);
3034
3035 node->next = NULL;
3036
3037@@ -2977,7 +2971,7 @@ _argument_list_create (void *ctx)
3038 {
3039 argument_list_t *list;
3040
3041- list = talloc (ctx, argument_list_t);
3042+ list = ralloc (ctx, argument_list_t);
3043 list->head = NULL;
3044 list->tail = NULL;
3045
3046@@ -2989,7 +2983,7 @@ _argument_list_append (argument_list_t *list, token_list_t *argument)
3047 {
3048 argument_node_t *node;
3049
3050- node = talloc (list, argument_node_t);
3051+ node = ralloc (list, argument_node_t);
3052 node->argument = argument;
3053
3054 node->next = NULL;
3055@@ -3040,15 +3034,17 @@ _argument_list_member_at (argument_list_t *list, int index)
3056 return NULL;
3057 }
3058
3059-/* Note: This function talloc_steal()s the str pointer. */
3060+/* Note: This function ralloc_steal()s the str pointer. */
3061 token_t *
3062 _token_create_str (void *ctx, int type, char *str)
3063 {
3064 token_t *token;
3065
3066- token = talloc (ctx, token_t);
3067+ token = ralloc (ctx, token_t);
3068 token->type = type;
3069- token->value.str = talloc_steal (token, str);
3070+ token->value.str = str;
3071+
3072+ ralloc_steal (token, str);
3073
3074 return token;
3075 }
3076@@ -3058,7 +3054,7 @@ _token_create_ival (void *ctx, int type, int ival)
3077 {
3078 token_t *token;
3079
3080- token = talloc (ctx, token_t);
3081+ token = ralloc (ctx, token_t);
3082 token->type = type;
3083 token->value.ival = ival;
3084
3085@@ -3070,7 +3066,7 @@ _token_list_create (void *ctx)
3086 {
3087 token_list_t *list;
3088
3089- list = talloc (ctx, token_list_t);
3090+ list = ralloc (ctx, token_list_t);
3091 list->head = NULL;
3092 list->tail = NULL;
3093 list->non_space_tail = NULL;
3094@@ -3083,11 +3079,12 @@ _token_list_append (token_list_t *list, token_t *token)
3095 {
3096 token_node_t *node;
3097
3098- node = talloc (list, token_node_t);
3099- node->token = talloc_reference (list, token);
3100-
3101+ node = ralloc (list, token_node_t);
3102+ node->token = token;
3103 node->next = NULL;
3104
3105+ ralloc_steal (list, token);
3106+
3107 if (list->head == NULL) {
3108 list->head = node;
3109 } else {
3110@@ -3125,8 +3122,11 @@ _token_list_copy (void *ctx, token_list_t *other)
3111 return NULL;
3112
3113 copy = _token_list_create (ctx);
3114- for (node = other->head; node; node = node->next)
3115- _token_list_append (copy, node->token);
3116+ for (node = other->head; node; node = node->next) {
3117+ token_t *new_token = ralloc (copy, token_t);
3118+ *new_token = *node->token;
3119+ _token_list_append (copy, new_token);
3120+ }
3121
3122 return copy;
3123 }
3124@@ -3143,17 +3143,38 @@ _token_list_trim_trailing_space (token_list_t *list)
3125
3126 while (tail) {
3127 next = tail->next;
3128- talloc_free (tail);
3129+ ralloc_free (tail);
3130 tail = next;
3131 }
3132 }
3133 }
3134
3135 int
3136+_token_list_is_empty_ignoring_space (token_list_t *l)
3137+{
3138+ token_node_t *n;
3139+
3140+ if (l == NULL)
3141+ return 1;
3142+
3143+ n = l->head;
3144+ while (n != NULL && n->token->type == SPACE)
3145+ n = n->next;
3146+
3147+ return n == NULL;
3148+}
3149+
3150+int
3151 _token_list_equal_ignoring_space (token_list_t *a, token_list_t *b)
3152 {
3153 token_node_t *node_a, *node_b;
3154
3155+ if (a == NULL || b == NULL) {
3156+ int a_empty = _token_list_is_empty_ignoring_space(a);
3157+ int b_empty = _token_list_is_empty_ignoring_space(b);
3158+ return a_empty == b_empty;
3159+ }
3160+
3161 node_a = a->head;
3162 node_b = b->head;
3163
3164@@ -3208,51 +3229,51 @@ static void
3165 _token_print (char **out, token_t *token)
3166 {
3167 if (token->type < 256) {
3168- glcpp_printf (*out, "%c", token->type);
3169+ ralloc_asprintf_append (out, "%c", token->type);
3170 return;
3171 }
3172
3173 switch (token->type) {
3174 case INTEGER:
3175- glcpp_printf (*out, "%" PRIiMAX, token->value.ival);
3176+ ralloc_asprintf_append (out, "%" PRIiMAX, token->value.ival);
3177 break;
3178 case IDENTIFIER:
3179 case INTEGER_STRING:
3180 case OTHER:
3181- glcpp_print (*out, token->value.str);
3182+ ralloc_strcat (out, token->value.str);
3183 break;
3184 case SPACE:
3185- glcpp_print (*out, " ");
3186+ ralloc_strcat (out, " ");
3187 break;
3188 case LEFT_SHIFT:
3189- glcpp_print (*out, "<<");
3190+ ralloc_strcat (out, "<<");
3191 break;
3192 case RIGHT_SHIFT:
3193- glcpp_print (*out, ">>");
3194+ ralloc_strcat (out, ">>");
3195 break;
3196 case LESS_OR_EQUAL:
3197- glcpp_print (*out, "<=");
3198+ ralloc_strcat (out, "<=");
3199 break;
3200 case GREATER_OR_EQUAL:
3201- glcpp_print (*out, ">=");
3202+ ralloc_strcat (out, ">=");
3203 break;
3204 case EQUAL:
3205- glcpp_print (*out, "==");
3206+ ralloc_strcat (out, "==");
3207 break;
3208 case NOT_EQUAL:
3209- glcpp_print (*out, "!=");
3210+ ralloc_strcat (out, "!=");
3211 break;
3212 case AND:
3213- glcpp_print (*out, "&&");
3214+ ralloc_strcat (out, "&&");
3215 break;
3216 case OR:
3217- glcpp_print (*out, "||");
3218+ ralloc_strcat (out, "||");
3219 break;
3220 case PASTE:
3221- glcpp_print (*out, "##");
3222+ ralloc_strcat (out, "##");
3223 break;
3224 case COMMA_FINAL:
3225- glcpp_print (*out, ",");
3226+ ralloc_strcat (out, ",");
3227 break;
3228 case PLACEHOLDER:
3229 /* Nothing to print. */
3230@@ -3263,7 +3284,7 @@ _token_print (char **out, token_t *token)
3231 }
3232 }
3233
3234-/* Return a new token (talloc()ed off of 'token') formed by pasting
3235+/* Return a new token (ralloc()ed off of 'token') formed by pasting
3236 * 'token' and 'other'. Note that this function may return 'token' or
3237 * 'other' directly rather than allocating anything new.
3238 *
3239@@ -3334,7 +3355,7 @@ _token_paste (glcpp_parser_t *parser, token_t *token, token_t *other)
3240 {
3241 char *str;
3242
3243- str = talloc_asprintf (token, "%s%s", token->value.str,
3244+ str = ralloc_asprintf (token, "%s%s", token->value.str,
3245 other->value.str);
3246 combined = _token_create_str (token, token->type, str);
3247 combined->location = token->location;
3248@@ -3342,11 +3363,11 @@ _token_paste (glcpp_parser_t *parser, token_t *token, token_t *other)
3249 }
3250
3251 glcpp_error (&token->location, parser, "");
3252- glcpp_print (parser->info_log, "Pasting \"");
3253+ ralloc_strcat (&parser->info_log, "Pasting \"");
3254 _token_print (&parser->info_log, token);
3255- glcpp_print (parser->info_log, "\" and \"");
3256+ ralloc_strcat (&parser->info_log, "\" and \"");
3257 _token_print (&parser->info_log, other);
3258- glcpp_print (parser->info_log, "\" does not give a valid preprocessing token.\n");
3259+ ralloc_strcat (&parser->info_log, "\" does not give a valid preprocessing token.\n");
3260
3261 return token;
3262 }
3263@@ -3380,8 +3401,6 @@ static void add_builtin_define(glcpp_parser_t *parser,
3264 list = _token_list_create(parser);
3265 _token_list_append(list, tok);
3266 _define_object_macro(parser, NULL, name, list);
3267-
3268- talloc_unlink(parser, tok);
3269 }
3270
3271 glcpp_parser_t *
3272@@ -3390,7 +3409,7 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api)
3273 glcpp_parser_t *parser;
3274 int language_version;
3275
3276- parser = talloc (NULL, glcpp_parser_t);
3277+ parser = ralloc (NULL, glcpp_parser_t);
3278
3279 glcpp_lex_init_extra (parser, &parser->scanner);
3280 parser->defines = hash_table_ctor (32, hash_table_string_hash,
3281@@ -3407,8 +3426,8 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api)
3282 parser->lex_from_list = NULL;
3283 parser->lex_from_node = NULL;
3284
3285- parser->output = talloc_strdup(parser, "");
3286- parser->info_log = talloc_strdup(parser, "");
3287+ parser->output = ralloc_strdup(parser, "");
3288+ parser->info_log = ralloc_strdup(parser, "");
3289 parser->error = 0;
3290
3291 /* Add pre-defined macros. */
3292@@ -3448,7 +3467,7 @@ glcpp_parser_destroy (glcpp_parser_t *parser)
3293 {
3294 glcpp_lex_destroy (parser->scanner);
3295 hash_table_dtor (parser->defines);
3296- talloc_free (parser);
3297+ ralloc_free (parser);
3298 }
3299
3300 typedef enum function_status
3301@@ -3619,7 +3638,7 @@ _glcpp_parser_expand_function (glcpp_parser_t *parser,
3302
3303 /* Replace a macro defined as empty with a SPACE token. */
3304 if (macro->replacements == NULL) {
3305- talloc_free (arguments);
3306+ ralloc_free (arguments);
3307 return _token_list_create_with_one_space (parser);
3308 }
3309
3310@@ -3775,7 +3794,7 @@ _glcpp_parser_expand_node (glcpp_parser_t *parser,
3311 token_list_t *expansion;
3312 token_t *final;
3313
3314- str = talloc_strdup (parser, token->value.str);
3315+ str = ralloc_strdup (parser, token->value.str);
3316 final = _token_create_str (parser, OTHER, str);
3317 expansion = _token_list_create (parser);
3318 _token_list_append (expansion, final);
3319@@ -3811,8 +3830,8 @@ _active_list_push (active_list_t *list,
3320 {
3321 active_list_t *node;
3322
3323- node = talloc (list, active_list_t);
3324- node->identifier = talloc_strdup (node, identifier);
3325+ node = ralloc (list, active_list_t);
3326+ node->identifier = ralloc_strdup (node, identifier);
3327 node->marker = marker;
3328 node->next = list;
3329
3330@@ -3828,7 +3847,7 @@ _active_list_pop (active_list_t *list)
3331 return NULL;
3332
3333 node = list->next;
3334- talloc_free (list);
3335+ ralloc_free (list);
3336
3337 return node;
3338 }
3339@@ -3977,17 +3996,18 @@ _define_object_macro (glcpp_parser_t *parser,
3340 if (loc != NULL)
3341 _check_for_reserved_macro_name(parser, loc, identifier);
3342
3343- macro = talloc (parser, macro_t);
3344+ macro = ralloc (parser, macro_t);
3345
3346 macro->is_function = 0;
3347 macro->parameters = NULL;
3348- macro->identifier = talloc_strdup (macro, identifier);
3349- macro->replacements = talloc_steal (macro, replacements);
3350+ macro->identifier = ralloc_strdup (macro, identifier);
3351+ macro->replacements = replacements;
3352+ ralloc_steal (macro, replacements);
3353
3354 previous = hash_table_find (parser->defines, identifier);
3355 if (previous) {
3356 if (_macro_equal (macro, previous)) {
3357- talloc_free (macro);
3358+ ralloc_free (macro);
3359 return;
3360 }
3361 glcpp_error (loc, parser, "Redefinition of macro %s\n",
3362@@ -4008,17 +4028,18 @@ _define_function_macro (glcpp_parser_t *parser,
3363
3364 _check_for_reserved_macro_name(parser, loc, identifier);
3365
3366- macro = talloc (parser, macro_t);
3367+ macro = ralloc (parser, macro_t);
3368+ ralloc_steal (macro, parameters);
3369+ ralloc_steal (macro, replacements);
3370
3371 macro->is_function = 1;
3372- macro->parameters = talloc_steal (macro, parameters);
3373- macro->identifier = talloc_strdup (macro, identifier);
3374- macro->replacements = talloc_steal (macro, replacements);
3375-
3376+ macro->parameters = parameters;
3377+ macro->identifier = ralloc_strdup (macro, identifier);
3378+ macro->replacements = replacements;
3379 previous = hash_table_find (parser->defines, identifier);
3380 if (previous) {
3381 if (_macro_equal (macro, previous)) {
3382- talloc_free (macro);
3383+ ralloc_free (macro);
3384 return;
3385 }
3386 glcpp_error (loc, parser, "Redefinition of macro %s\n",
3387@@ -4094,7 +4115,7 @@ glcpp_parser_lex (YYSTYPE *yylval, YYLTYPE *yylloc, glcpp_parser_t *parser)
3388 node = parser->lex_from_node;
3389
3390 if (node == NULL) {
3391- talloc_free (parser->lex_from_list);
3392+ ralloc_free (parser->lex_from_list);
3393 parser->lex_from_list = NULL;
3394 return NEWLINE;
3395 }
3396@@ -4123,13 +4144,13 @@ glcpp_parser_lex_from (glcpp_parser_t *parser, token_list_t *list)
3397 _token_list_append (parser->lex_from_list, node->token);
3398 }
3399
3400- talloc_free (list);
3401+ ralloc_free (list);
3402
3403 parser->lex_from_node = parser->lex_from_list->head;
3404
3405 /* It's possible the list consisted of nothing but whitespace. */
3406 if (parser->lex_from_node == NULL) {
3407- talloc_free (parser->lex_from_list);
3408+ ralloc_free (parser->lex_from_list);
3409 parser->lex_from_list = NULL;
3410 }
3411 }
3412@@ -4144,7 +4165,7 @@ _glcpp_parser_skip_stack_push_if (glcpp_parser_t *parser, YYLTYPE *loc,
3413 if (parser->skip_stack)
3414 current = parser->skip_stack->type;
3415
3416- node = talloc (parser, skip_node_t);
3417+ node = ralloc (parser, skip_node_t);
3418 node->loc = *loc;
3419
3420 if (current == SKIP_NO_SKIP) {
3421@@ -4189,6 +4210,6 @@ _glcpp_parser_skip_stack_pop (glcpp_parser_t *parser, YYLTYPE *loc)
3422
3423 node = parser->skip_stack;
3424 parser->skip_stack = node->next;
3425- talloc_free (node);
3426+ ralloc_free (node);
3427 }
3428
3429diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y
3430index 558ad0a..5e218ad 100644
3431--- a/src/glsl/glcpp/glcpp-parse.y
3432+++ b/src/glsl/glcpp/glcpp-parse.y
3433@@ -32,10 +32,6 @@
3434 #include "main/core.h" /* for struct gl_extensions */
3435 #include "main/mtypes.h" /* for gl_api enum */
3436
3437-#define glcpp_print(stream, str) stream = talloc_strdup_append(stream, str)
3438-#define glcpp_printf(stream, fmt, args, ...) \
3439- stream = talloc_asprintf_append(stream, fmt, args)
3440-
3441 static void
3442 yyerror (YYLTYPE *locp, glcpp_parser_t *parser, const char *error);
3443
3444@@ -79,7 +75,7 @@ _argument_list_length (argument_list_t *list);
3445 static token_list_t *
3446 _argument_list_member_at (argument_list_t *list, int index);
3447
3448-/* Note: This function talloc_steal()s the str pointer. */
3449+/* Note: This function ralloc_steal()s the str pointer. */
3450 static token_t *
3451 _token_create_str (void *ctx, int type, char *str);
3452
3453@@ -89,10 +85,7 @@ _token_create_ival (void *ctx, int type, int ival);
3454 static token_list_t *
3455 _token_list_create (void *ctx);
3456
3457-/* Note: This function adds a talloc_reference() to token.
3458- *
3459- * You may want to talloc_unlink any current reference if you no
3460- * longer need it. */
3461+/* Note: This function calls ralloc_steal on token. */
3462 static void
3463 _token_list_append (token_list_t *list, token_t *token);
3464
3465@@ -192,12 +185,12 @@ input:
3466
3467 line:
3468 control_line {
3469- glcpp_print(parser->output, "\n");
3470+ ralloc_strcat (&parser->output, "\n");
3471 }
3472 | text_line {
3473 _glcpp_parser_print_expanded_token_list (parser, $1);
3474- glcpp_print(parser->output, "\n");
3475- talloc_free ($1);
3476+ ralloc_strcat (&parser->output, "\n");
3477+ ralloc_free ($1);
3478 }
3479 | expanded_line
3480 | HASH non_directive
3481@@ -226,9 +219,9 @@ control_line:
3482 macro_t *macro = hash_table_find (parser->defines, $2);
3483 if (macro) {
3484 hash_table_remove (parser->defines, $2);
3485- talloc_free (macro);
3486+ ralloc_free (macro);
3487 }
3488- talloc_free ($2);
3489+ ralloc_free ($2);
3490 }
3491 | HASH_IF conditional_tokens NEWLINE {
3492 /* Be careful to only evaluate the 'if' expression if
3493@@ -261,12 +254,12 @@ control_line:
3494 }
3495 | HASH_IFDEF IDENTIFIER junk NEWLINE {
3496 macro_t *macro = hash_table_find (parser->defines, $2);
3497- talloc_free ($2);
3498+ ralloc_free ($2);
3499 _glcpp_parser_skip_stack_push_if (parser, & @1, macro != NULL);
3500 }
3501 | HASH_IFNDEF IDENTIFIER junk NEWLINE {
3502 macro_t *macro = hash_table_find (parser->defines, $2);
3503- talloc_free ($2);
3504+ ralloc_free ($2);
3505 _glcpp_parser_skip_stack_push_if (parser, & @1, macro == NULL);
3506 }
3507 | HASH_ELIF conditional_tokens NEWLINE {
3508@@ -313,7 +306,7 @@ control_line:
3509 macro_t *macro = hash_table_find (parser->defines, "__VERSION__");
3510 if (macro) {
3511 hash_table_remove (parser->defines, "__VERSION__");
3512- talloc_free (macro);
3513+ ralloc_free (macro);
3514 }
3515 add_builtin_define (parser, "__VERSION__", $2);
3516
3517@@ -328,7 +321,7 @@ control_line:
3518 if ($2 >= 130 || $2 == 100)
3519 add_builtin_define (parser, "GL_FRAGMENT_PRECISION_HIGH", 1);
3520
3521- glcpp_printf(parser->output, "#version %" PRIiMAX, $2);
3522+ ralloc_asprintf_append (&parser->output, "#version %" PRIiMAX, $2);
3523 }
3524 | HASH NEWLINE
3525 ;
3526@@ -398,7 +391,12 @@ expression:
3527 $$ = $1 % $3;
3528 }
3529 | expression '/' expression {
3530- $$ = $1 / $3;
3531+ if ($3 == 0) {
3532+ yyerror (& @1, parser,
3533+ "division by 0 in preprocessor directive");
3534+ } else {
3535+ $$ = $1 / $3;
3536+ }
3537 }
3538 | expression '*' expression {
3539 $$ = $1 * $3;
3540@@ -424,12 +422,12 @@ identifier_list:
3541 IDENTIFIER {
3542 $$ = _string_list_create (parser);
3543 _string_list_append_item ($$, $1);
3544- talloc_steal ($$, $1);
3545+ ralloc_steal ($$, $1);
3546 }
3547 | identifier_list ',' IDENTIFIER {
3548 $$ = $1;
3549 _string_list_append_item ($$, $3);
3550- talloc_steal ($$, $3);
3551+ ralloc_steal ($$, $3);
3552 }
3553 ;
3554
3555@@ -474,12 +472,10 @@ conditional_tokens:
3556 conditional_token {
3557 $$ = _token_list_create (parser);
3558 _token_list_append ($$, $1);
3559- talloc_unlink (parser, $1);
3560 }
3561 | conditional_tokens conditional_token {
3562 $$ = $1;
3563 _token_list_append ($$, $2);
3564- talloc_unlink (parser, $2);
3565 }
3566 ;
3567
3568@@ -488,12 +484,10 @@ pp_tokens:
3569 parser->space_tokens = 1;
3570 $$ = _token_list_create (parser);
3571 _token_list_append ($$, $1);
3572- talloc_unlink (parser, $1);
3573 }
3574 | pp_tokens preprocessing_token {
3575 $$ = $1;
3576 _token_list_append ($$, $2);
3577- talloc_unlink (parser, $2);
3578 }
3579 ;
3580
3581@@ -561,7 +555,7 @@ _string_list_create (void *ctx)
3582 {
3583 string_list_t *list;
3584
3585- list = talloc (ctx, string_list_t);
3586+ list = ralloc (ctx, string_list_t);
3587 list->head = NULL;
3588 list->tail = NULL;
3589
3590@@ -573,8 +567,8 @@ _string_list_append_item (string_list_t *list, const char *str)
3591 {
3592 string_node_t *node;
3593
3594- node = talloc (list, string_node_t);
3595- node->str = talloc_strdup (node, str);
3596+ node = ralloc (list, string_node_t);
3597+ node->str = ralloc_strdup (node, str);
3598
3599 node->next = NULL;
3600
3601@@ -652,7 +646,7 @@ _argument_list_create (void *ctx)
3602 {
3603 argument_list_t *list;
3604
3605- list = talloc (ctx, argument_list_t);
3606+ list = ralloc (ctx, argument_list_t);
3607 list->head = NULL;
3608 list->tail = NULL;
3609
3610@@ -664,7 +658,7 @@ _argument_list_append (argument_list_t *list, token_list_t *argument)
3611 {
3612 argument_node_t *node;
3613
3614- node = talloc (list, argument_node_t);
3615+ node = ralloc (list, argument_node_t);
3616 node->argument = argument;
3617
3618 node->next = NULL;
3619@@ -715,15 +709,17 @@ _argument_list_member_at (argument_list_t *list, int index)
3620 return NULL;
3621 }
3622
3623-/* Note: This function talloc_steal()s the str pointer. */
3624+/* Note: This function ralloc_steal()s the str pointer. */
3625 token_t *
3626 _token_create_str (void *ctx, int type, char *str)
3627 {
3628 token_t *token;
3629
3630- token = talloc (ctx, token_t);
3631+ token = ralloc (ctx, token_t);
3632 token->type = type;
3633- token->value.str = talloc_steal (token, str);
3634+ token->value.str = str;
3635+
3636+ ralloc_steal (token, str);
3637
3638 return token;
3639 }
3640@@ -733,7 +729,7 @@ _token_create_ival (void *ctx, int type, int ival)
3641 {
3642 token_t *token;
3643
3644- token = talloc (ctx, token_t);
3645+ token = ralloc (ctx, token_t);
3646 token->type = type;
3647 token->value.ival = ival;
3648
3649@@ -745,7 +741,7 @@ _token_list_create (void *ctx)
3650 {
3651 token_list_t *list;
3652
3653- list = talloc (ctx, token_list_t);
3654+ list = ralloc (ctx, token_list_t);
3655 list->head = NULL;
3656 list->tail = NULL;
3657 list->non_space_tail = NULL;
3658@@ -758,11 +754,12 @@ _token_list_append (token_list_t *list, token_t *token)
3659 {
3660 token_node_t *node;
3661
3662- node = talloc (list, token_node_t);
3663- node->token = talloc_reference (list, token);
3664-
3665+ node = ralloc (list, token_node_t);
3666+ node->token = token;
3667 node->next = NULL;
3668
3669+ ralloc_steal (list, token);
3670+
3671 if (list->head == NULL) {
3672 list->head = node;
3673 } else {
3674@@ -800,8 +797,11 @@ _token_list_copy (void *ctx, token_list_t *other)
3675 return NULL;
3676
3677 copy = _token_list_create (ctx);
3678- for (node = other->head; node; node = node->next)
3679- _token_list_append (copy, node->token);
3680+ for (node = other->head; node; node = node->next) {
3681+ token_t *new_token = ralloc (copy, token_t);
3682+ *new_token = *node->token;
3683+ _token_list_append (copy, new_token);
3684+ }
3685
3686 return copy;
3687 }
3688@@ -818,17 +818,38 @@ _token_list_trim_trailing_space (token_list_t *list)
3689
3690 while (tail) {
3691 next = tail->next;
3692- talloc_free (tail);
3693+ ralloc_free (tail);
3694 tail = next;
3695 }
3696 }
3697 }
3698
3699 int
3700+_token_list_is_empty_ignoring_space (token_list_t *l)
3701+{
3702+ token_node_t *n;
3703+
3704+ if (l == NULL)
3705+ return 1;
3706+
3707+ n = l->head;
3708+ while (n != NULL && n->token->type == SPACE)
3709+ n = n->next;
3710+
3711+ return n == NULL;
3712+}
3713+
3714+int
3715 _token_list_equal_ignoring_space (token_list_t *a, token_list_t *b)
3716 {
3717 token_node_t *node_a, *node_b;
3718
3719+ if (a == NULL || b == NULL) {
3720+ int a_empty = _token_list_is_empty_ignoring_space(a);
3721+ int b_empty = _token_list_is_empty_ignoring_space(b);
3722+ return a_empty == b_empty;
3723+ }
3724+
3725 node_a = a->head;
3726 node_b = b->head;
3727
3728@@ -883,51 +904,51 @@ static void
3729 _token_print (char **out, token_t *token)
3730 {
3731 if (token->type < 256) {
3732- glcpp_printf (*out, "%c", token->type);
3733+ ralloc_asprintf_append (out, "%c", token->type);
3734 return;
3735 }
3736
3737 switch (token->type) {
3738 case INTEGER:
3739- glcpp_printf (*out, "%" PRIiMAX, token->value.ival);
3740+ ralloc_asprintf_append (out, "%" PRIiMAX, token->value.ival);
3741 break;
3742 case IDENTIFIER:
3743 case INTEGER_STRING:
3744 case OTHER:
3745- glcpp_print (*out, token->value.str);
3746+ ralloc_strcat (out, token->value.str);
3747 break;
3748 case SPACE:
3749- glcpp_print (*out, " ");
3750+ ralloc_strcat (out, " ");
3751 break;
3752 case LEFT_SHIFT:
3753- glcpp_print (*out, "<<");
3754+ ralloc_strcat (out, "<<");
3755 break;
3756 case RIGHT_SHIFT:
3757- glcpp_print (*out, ">>");
3758+ ralloc_strcat (out, ">>");
3759 break;
3760 case LESS_OR_EQUAL:
3761- glcpp_print (*out, "<=");
3762+ ralloc_strcat (out, "<=");
3763 break;
3764 case GREATER_OR_EQUAL:
3765- glcpp_print (*out, ">=");
3766+ ralloc_strcat (out, ">=");
3767 break;
3768 case EQUAL:
3769- glcpp_print (*out, "==");
3770+ ralloc_strcat (out, "==");
3771 break;
3772 case NOT_EQUAL:
3773- glcpp_print (*out, "!=");
3774+ ralloc_strcat (out, "!=");
3775 break;
3776 case AND:
3777- glcpp_print (*out, "&&");
3778+ ralloc_strcat (out, "&&");
3779 break;
3780 case OR:
3781- glcpp_print (*out, "||");
3782+ ralloc_strcat (out, "||");
3783 break;
3784 case PASTE:
3785- glcpp_print (*out, "##");
3786+ ralloc_strcat (out, "##");
3787 break;
3788 case COMMA_FINAL:
3789- glcpp_print (*out, ",");
3790+ ralloc_strcat (out, ",");
3791 break;
3792 case PLACEHOLDER:
3793 /* Nothing to print. */
3794@@ -938,7 +959,7 @@ _token_print (char **out, token_t *token)
3795 }
3796 }
3797
3798-/* Return a new token (talloc()ed off of 'token') formed by pasting
3799+/* Return a new token (ralloc()ed off of 'token') formed by pasting
3800 * 'token' and 'other'. Note that this function may return 'token' or
3801 * 'other' directly rather than allocating anything new.
3802 *
3803@@ -1009,7 +1030,7 @@ _token_paste (glcpp_parser_t *parser, token_t *token, token_t *other)
3804 {
3805 char *str;
3806
3807- str = talloc_asprintf (token, "%s%s", token->value.str,
3808+ str = ralloc_asprintf (token, "%s%s", token->value.str,
3809 other->value.str);
3810 combined = _token_create_str (token, token->type, str);
3811 combined->location = token->location;
3812@@ -1017,11 +1038,11 @@ _token_paste (glcpp_parser_t *parser, token_t *token, token_t *other)
3813 }
3814
3815 glcpp_error (&token->location, parser, "");
3816- glcpp_print (parser->info_log, "Pasting \"");
3817+ ralloc_strcat (&parser->info_log, "Pasting \"");
3818 _token_print (&parser->info_log, token);
3819- glcpp_print (parser->info_log, "\" and \"");
3820+ ralloc_strcat (&parser->info_log, "\" and \"");
3821 _token_print (&parser->info_log, other);
3822- glcpp_print (parser->info_log, "\" does not give a valid preprocessing token.\n");
3823+ ralloc_strcat (&parser->info_log, "\" does not give a valid preprocessing token.\n");
3824
3825 return token;
3826 }
3827@@ -1055,8 +1076,6 @@ static void add_builtin_define(glcpp_parser_t *parser,
3828 list = _token_list_create(parser);
3829 _token_list_append(list, tok);
3830 _define_object_macro(parser, NULL, name, list);
3831-
3832- talloc_unlink(parser, tok);
3833 }
3834
3835 glcpp_parser_t *
3836@@ -1065,7 +1084,7 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api)
3837 glcpp_parser_t *parser;
3838 int language_version;
3839
3840- parser = talloc (NULL, glcpp_parser_t);
3841+ parser = ralloc (NULL, glcpp_parser_t);
3842
3843 glcpp_lex_init_extra (parser, &parser->scanner);
3844 parser->defines = hash_table_ctor (32, hash_table_string_hash,
3845@@ -1082,8 +1101,8 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api)
3846 parser->lex_from_list = NULL;
3847 parser->lex_from_node = NULL;
3848
3849- parser->output = talloc_strdup(parser, "");
3850- parser->info_log = talloc_strdup(parser, "");
3851+ parser->output = ralloc_strdup(parser, "");
3852+ parser->info_log = ralloc_strdup(parser, "");
3853 parser->error = 0;
3854
3855 /* Add pre-defined macros. */
3856@@ -1123,7 +1142,7 @@ glcpp_parser_destroy (glcpp_parser_t *parser)
3857 {
3858 glcpp_lex_destroy (parser->scanner);
3859 hash_table_dtor (parser->defines);
3860- talloc_free (parser);
3861+ ralloc_free (parser);
3862 }
3863
3864 typedef enum function_status
3865@@ -1294,7 +1313,7 @@ _glcpp_parser_expand_function (glcpp_parser_t *parser,
3866
3867 /* Replace a macro defined as empty with a SPACE token. */
3868 if (macro->replacements == NULL) {
3869- talloc_free (arguments);
3870+ ralloc_free (arguments);
3871 return _token_list_create_with_one_space (parser);
3872 }
3873
3874@@ -1450,7 +1469,7 @@ _glcpp_parser_expand_node (glcpp_parser_t *parser,
3875 token_list_t *expansion;
3876 token_t *final;
3877
3878- str = talloc_strdup (parser, token->value.str);
3879+ str = ralloc_strdup (parser, token->value.str);
3880 final = _token_create_str (parser, OTHER, str);
3881 expansion = _token_list_create (parser);
3882 _token_list_append (expansion, final);
3883@@ -1486,8 +1505,8 @@ _active_list_push (active_list_t *list,
3884 {
3885 active_list_t *node;
3886
3887- node = talloc (list, active_list_t);
3888- node->identifier = talloc_strdup (node, identifier);
3889+ node = ralloc (list, active_list_t);
3890+ node->identifier = ralloc_strdup (node, identifier);
3891 node->marker = marker;
3892 node->next = list;
3893
3894@@ -1503,7 +1522,7 @@ _active_list_pop (active_list_t *list)
3895 return NULL;
3896
3897 node = list->next;
3898- talloc_free (list);
3899+ ralloc_free (list);
3900
3901 return node;
3902 }
3903@@ -1652,17 +1671,18 @@ _define_object_macro (glcpp_parser_t *parser,
3904 if (loc != NULL)
3905 _check_for_reserved_macro_name(parser, loc, identifier);
3906
3907- macro = talloc (parser, macro_t);
3908+ macro = ralloc (parser, macro_t);
3909
3910 macro->is_function = 0;
3911 macro->parameters = NULL;
3912- macro->identifier = talloc_strdup (macro, identifier);
3913- macro->replacements = talloc_steal (macro, replacements);
3914+ macro->identifier = ralloc_strdup (macro, identifier);
3915+ macro->replacements = replacements;
3916+ ralloc_steal (macro, replacements);
3917
3918 previous = hash_table_find (parser->defines, identifier);
3919 if (previous) {
3920 if (_macro_equal (macro, previous)) {
3921- talloc_free (macro);
3922+ ralloc_free (macro);
3923 return;
3924 }
3925 glcpp_error (loc, parser, "Redefinition of macro %s\n",
3926@@ -1683,17 +1703,18 @@ _define_function_macro (glcpp_parser_t *parser,
3927
3928 _check_for_reserved_macro_name(parser, loc, identifier);
3929
3930- macro = talloc (parser, macro_t);
3931+ macro = ralloc (parser, macro_t);
3932+ ralloc_steal (macro, parameters);
3933+ ralloc_steal (macro, replacements);
3934
3935 macro->is_function = 1;
3936- macro->parameters = talloc_steal (macro, parameters);
3937- macro->identifier = talloc_strdup (macro, identifier);
3938- macro->replacements = talloc_steal (macro, replacements);
3939-
3940+ macro->parameters = parameters;
3941+ macro->identifier = ralloc_strdup (macro, identifier);
3942+ macro->replacements = replacements;
3943 previous = hash_table_find (parser->defines, identifier);
3944 if (previous) {
3945 if (_macro_equal (macro, previous)) {
3946- talloc_free (macro);
3947+ ralloc_free (macro);
3948 return;
3949 }
3950 glcpp_error (loc, parser, "Redefinition of macro %s\n",
3951@@ -1769,7 +1790,7 @@ glcpp_parser_lex (YYSTYPE *yylval, YYLTYPE *yylloc, glcpp_parser_t *parser)
3952 node = parser->lex_from_node;
3953
3954 if (node == NULL) {
3955- talloc_free (parser->lex_from_list);
3956+ ralloc_free (parser->lex_from_list);
3957 parser->lex_from_list = NULL;
3958 return NEWLINE;
3959 }
3960@@ -1798,13 +1819,13 @@ glcpp_parser_lex_from (glcpp_parser_t *parser, token_list_t *list)
3961 _token_list_append (parser->lex_from_list, node->token);
3962 }
3963
3964- talloc_free (list);
3965+ ralloc_free (list);
3966
3967 parser->lex_from_node = parser->lex_from_list->head;
3968
3969 /* It's possible the list consisted of nothing but whitespace. */
3970 if (parser->lex_from_node == NULL) {
3971- talloc_free (parser->lex_from_list);
3972+ ralloc_free (parser->lex_from_list);
3973 parser->lex_from_list = NULL;
3974 }
3975 }
3976@@ -1819,7 +1840,7 @@ _glcpp_parser_skip_stack_push_if (glcpp_parser_t *parser, YYLTYPE *loc,
3977 if (parser->skip_stack)
3978 current = parser->skip_stack->type;
3979
3980- node = talloc (parser, skip_node_t);
3981+ node = ralloc (parser, skip_node_t);
3982 node->loc = *loc;
3983
3984 if (current == SKIP_NO_SKIP) {
3985@@ -1864,5 +1885,5 @@ _glcpp_parser_skip_stack_pop (glcpp_parser_t *parser, YYLTYPE *loc)
3986
3987 node = parser->skip_stack;
3988 parser->skip_stack = node->next;
3989- talloc_free (node);
3990+ ralloc_free (node);
3991 }
3992diff --git a/src/glsl/glcpp/glcpp.c b/src/glsl/glcpp/glcpp.c
3993index 062eb6b..564194c 100644
3994--- a/src/glsl/glcpp/glcpp.c
3995+++ b/src/glsl/glcpp/glcpp.c
3996@@ -54,7 +54,7 @@ load_text_fd (void *ctx, int fd)
3997 while (1) {
3998 if (total_read + CHUNK + 1 > text_size) {
3999 text_size = text_size ? text_size * 2 : CHUNK + 1;
4000- text = talloc_realloc_size (ctx, text, text_size);
4001+ text = reralloc_size (ctx, text, text_size);
4002 if (text == NULL) {
4003 fprintf (stderr, "Out of memory\n");
4004 return NULL;
4005@@ -64,7 +64,7 @@ load_text_fd (void *ctx, int fd)
4006 if (bytes < 0) {
4007 fprintf (stderr, "Error while reading: %s\n",
4008 strerror (errno));
4009- talloc_free (text);
4010+ ralloc_free (text);
4011 return NULL;
4012 }
4013
4014@@ -107,8 +107,8 @@ int
4015 main (int argc, char *argv[])
4016 {
4017 char *filename = NULL;
4018- void *ctx = talloc(NULL, void*);
4019- char *info_log = talloc_strdup(ctx, "");
4020+ void *ctx = ralloc(NULL, void*);
4021+ char *info_log = ralloc_strdup(ctx, "");
4022 const char *shader;
4023 int ret;
4024
4025@@ -125,7 +125,7 @@ main (int argc, char *argv[])
4026 printf("%s", shader);
4027 fprintf(stderr, "%s", info_log);
4028
4029- talloc_free(ctx);
4030+ ralloc_free(ctx);
4031
4032 return ret;
4033 }
4034diff --git a/src/glsl/glcpp/glcpp.h b/src/glsl/glcpp/glcpp.h
4035index 7125d32..dc816e9 100644
4036--- a/src/glsl/glcpp/glcpp.h
4037+++ b/src/glsl/glcpp/glcpp.h
4038@@ -26,7 +26,7 @@
4039
4040 #include <stdint.h>
4041
4042-#include <talloc.h>
4043+#include "../ralloc.h"
4044
4045 #include "program/hash_table.h"
4046
4047@@ -189,7 +189,7 @@ void
4048 glcpp_parser_destroy (glcpp_parser_t *parser);
4049
4050 int
4051-preprocess(void *talloc_ctx, const char **shader, char **info_log,
4052+preprocess(void *ralloc_ctx, const char **shader, char **info_log,
4053 const struct gl_extensions *extensions, int api);
4054
4055 /* Functions for writing to the info log */
4056diff --git a/src/glsl/glcpp/pp.c b/src/glsl/glcpp/pp.c
4057index e1a3a88..3640896 100644
4058--- a/src/glsl/glcpp/pp.c
4059+++ b/src/glsl/glcpp/pp.c
4060@@ -33,16 +33,15 @@ glcpp_error (YYLTYPE *locp, glcpp_parser_t *parser, const char *fmt, ...)
4061 va_list ap;
4062
4063 parser->error = 1;
4064- parser->info_log = talloc_asprintf_append(parser->info_log,
4065- "%u:%u(%u): "
4066+ ralloc_asprintf_append(&parser->info_log, "%u:%u(%u): "
4067 "preprocessor error: ",
4068 locp->source,
4069 locp->first_line,
4070 locp->first_column);
4071 va_start(ap, fmt);
4072- parser->info_log = talloc_vasprintf_append(parser->info_log, fmt, ap);
4073+ ralloc_vasprintf_append(&parser->info_log, fmt, ap);
4074 va_end(ap);
4075- parser->info_log = talloc_strdup_append(parser->info_log, "\n");
4076+ ralloc_strcat(&parser->info_log, "\n");
4077 }
4078
4079 void
4080@@ -50,16 +49,15 @@ glcpp_warning (YYLTYPE *locp, glcpp_parser_t *parser, const char *fmt, ...)
4081 {
4082 va_list ap;
4083
4084- parser->info_log = talloc_asprintf_append(parser->info_log,
4085- "%u:%u(%u): "
4086+ ralloc_asprintf_append(&parser->info_log, "%u:%u(%u): "
4087 "preprocessor warning: ",
4088 locp->source,
4089 locp->first_line,
4090 locp->first_column);
4091 va_start(ap, fmt);
4092- parser->info_log = talloc_vasprintf_append(parser->info_log, fmt, ap);
4093+ ralloc_vasprintf_append(&parser->info_log, fmt, ap);
4094 va_end(ap);
4095- parser->info_log = talloc_strdup_append(parser->info_log, "\n");
4096+ ralloc_strcat(&parser->info_log, "\n");
4097 }
4098
4099 /* Searches backwards for '^ *#' from a given starting point. */
4100@@ -92,7 +90,7 @@ remove_line_continuations(glcpp_parser_t *ctx, const char *shader)
4101 {
4102 int in_continued_line = 0;
4103 int extra_newlines = 0;
4104- char *clean = talloc_strdup(ctx, "");
4105+ char *clean = ralloc_strdup(ctx, "");
4106 const char *search_start = shader;
4107 const char *newline;
4108 while ((newline = strchr(search_start, '\n')) != NULL) {
4109@@ -122,27 +120,27 @@ remove_line_continuations(glcpp_parser_t *ctx, const char *shader)
4110 }
4111 if (in_continued_line) {
4112 /* Copy everything before the \ */
4113- clean = talloc_strndup_append(clean, shader, backslash - shader);
4114+ ralloc_strncat(&clean, shader, backslash - shader);
4115 shader = newline + 1;
4116 extra_newlines++;
4117 }
4118 } else if (in_continued_line) {
4119 /* Copy everything up to and including the \n */
4120- clean = talloc_strndup_append(clean, shader, newline - shader + 1);
4121+ ralloc_strncat(&clean, shader, newline - shader + 1);
4122 shader = newline + 1;
4123 /* Output extra newlines to make line numbers match */
4124 for (; extra_newlines > 0; extra_newlines--)
4125- clean = talloc_strdup_append(clean, "\n");
4126+ ralloc_strcat(&clean, "\n");
4127 in_continued_line = 0;
4128 }
4129 search_start = newline + 1;
4130 }
4131- clean = talloc_strdup_append(clean, shader);
4132+ ralloc_strcat(&clean, shader);
4133 return clean;
4134 }
4135
4136 int
4137-preprocess(void *talloc_ctx, const char **shader, char **info_log,
4138+preprocess(void *ralloc_ctx, const char **shader, char **info_log,
4139 const struct gl_extensions *extensions, int api)
4140 {
4141 int errors;
4142@@ -156,9 +154,9 @@ preprocess(void *talloc_ctx, const char **shader, char **info_log,
4143 if (parser->skip_stack)
4144 glcpp_error (&parser->skip_stack->loc, parser, "Unterminated #if\n");
4145
4146- *info_log = talloc_strdup_append(*info_log, parser->info_log);
4147+ ralloc_strcat(info_log, parser->info_log);
4148
4149- talloc_steal(talloc_ctx, parser->output);
4150+ ralloc_steal(ralloc_ctx, parser->output);
4151 *shader = parser->output;
4152
4153 errors = parser->error;
4154diff --git a/src/glsl/glsl_lexer.cpp b/src/glsl/glsl_lexer.cpp
4155index 39c1190..3b648d5 100644
4156--- a/src/glsl/glsl_lexer.cpp
4157+++ b/src/glsl/glsl_lexer.cpp
4158@@ -349,8 +349,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
4159 *yy_cp = '\0'; \
4160 yyg->yy_c_buf_p = yy_cp;
4161
4162-#define YY_NUM_RULES 209
4163-#define YY_END_OF_BUFFER 210
4164+#define YY_NUM_RULES 210
4165+#define YY_END_OF_BUFFER 211
4166 /* This struct is not used in this scanner,
4167 but its presence is necessary. */
4168 struct yy_trans_info
4169@@ -358,98 +358,100 @@ struct yy_trans_info
4170 flex_int32_t yy_verify;
4171 flex_int32_t yy_nxt;
4172 };
4173-static yyconst flex_int16_t yy_accept[813] =
4174+static yyconst flex_int16_t yy_accept[836] =
4175 { 0,
4176- 0, 0, 15, 15, 0, 0, 210, 208, 1, 20,
4177- 208, 208, 208, 208, 208, 208, 208, 208, 119, 117,
4178- 208, 208, 208, 207, 208, 207, 207, 207, 207, 207,
4179- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4180- 207, 207, 207, 207, 207, 208, 1, 208, 209, 15,
4181- 19, 209, 18, 16, 17, 13, 12, 1, 101, 110,
4182- 102, 113, 107, 96, 109, 97, 116, 121, 108, 122,
4183- 119, 0, 0, 124, 119, 0, 117, 117, 105, 98,
4184- 100, 99, 106, 207, 114, 104, 207, 207, 207, 207,
4185- 207, 207, 207, 207, 207, 207, 207, 207, 29, 207,
4186-
4187- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4188- 207, 207, 33, 207, 207, 60, 207, 207, 207, 207,
4189- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4190- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4191- 207, 207, 207, 207, 207, 207, 207, 207, 207, 115,
4192- 103, 1, 0, 0, 2, 0, 0, 0, 0, 15,
4193- 14, 18, 17, 0, 121, 120, 0, 122, 0, 123,
4194- 118, 111, 112, 207, 127, 207, 207, 207, 207, 207,
4195- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4196- 207, 207, 207, 207, 207, 207, 32, 207, 207, 207,
4197-
4198- 207, 207, 207, 207, 207, 207, 207, 25, 207, 207,
4199- 207, 207, 207, 207, 207, 207, 207, 207, 207, 61,
4200- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4201- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4202- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4203- 0, 0, 0, 0, 14, 0, 121, 0, 120, 0,
4204- 122, 123, 118, 207, 207, 23, 207, 207, 174, 167,
4205- 207, 207, 207, 207, 207, 207, 207, 207, 207, 31,
4206- 130, 207, 207, 207, 207, 67, 207, 207, 135, 149,
4207- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4208-
4209- 207, 207, 146, 170, 48, 49, 50, 207, 207, 207,
4210- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4211- 207, 207, 207, 207, 207, 207, 207, 133, 125, 207,
4212- 207, 26, 207, 207, 207, 207, 207, 207, 207, 45,
4213- 46, 47, 94, 207, 207, 0, 0, 0, 0, 0,
4214- 120, 207, 207, 27, 36, 37, 38, 207, 128, 207,
4215- 22, 207, 207, 207, 207, 157, 158, 159, 207, 126,
4216- 207, 150, 24, 160, 161, 162, 172, 154, 155, 156,
4217- 207, 207, 207, 62, 152, 207, 207, 207, 39, 40,
4218- 41, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4219-
4220- 207, 207, 207, 207, 207, 207, 207, 147, 207, 207,
4221- 207, 207, 207, 207, 207, 207, 207, 207, 129, 207,
4222- 207, 169, 42, 43, 44, 207, 207, 30, 0, 0,
4223- 0, 0, 177, 207, 207, 175, 207, 207, 207, 148,
4224- 143, 180, 207, 207, 207, 207, 207, 207, 138, 207,
4225- 207, 207, 95, 51, 52, 53, 54, 55, 56, 57,
4226- 58, 59, 207, 207, 207, 207, 153, 134, 207, 207,
4227- 141, 35, 207, 207, 166, 68, 142, 93, 178, 136,
4228- 207, 207, 207, 207, 207, 207, 207, 207, 0, 0,
4229- 0, 0, 207, 207, 207, 137, 34, 207, 207, 207,
4230-
4231- 207, 207, 207, 181, 182, 183, 207, 207, 207, 207,
4232- 207, 171, 207, 207, 207, 207, 207, 207, 207, 207,
4233- 131, 207, 207, 207, 207, 207, 63, 207, 207, 64,
4234- 207, 0, 0, 0, 0, 0, 207, 65, 28, 144,
4235- 185, 186, 187, 207, 207, 207, 207, 207, 207, 207,
4236- 207, 207, 207, 207, 207, 139, 207, 207, 207, 207,
4237- 207, 207, 207, 207, 207, 132, 189, 190, 191, 207,
4238- 207, 151, 207, 140, 0, 0, 6, 0, 0, 0,
4239- 11, 3, 21, 207, 207, 207, 207, 207, 207, 207,
4240- 207, 207, 184, 145, 66, 207, 207, 207, 207, 168,
4241-
4242- 207, 176, 173, 206, 70, 71, 72, 207, 207, 207,
4243- 207, 207, 207, 207, 207, 207, 207, 0, 0, 0,
4244- 0, 0, 0, 207, 207, 207, 188, 207, 207, 207,
4245- 207, 207, 81, 82, 83, 207, 207, 207, 207, 207,
4246- 207, 207, 207, 207, 207, 207, 207, 207, 192, 87,
4247- 88, 89, 207, 4, 0, 5, 0, 0, 0, 0,
4248- 0, 207, 207, 207, 207, 207, 207, 207, 203, 207,
4249- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4250- 73, 207, 207, 207, 207, 207, 207, 0, 0, 0,
4251- 207, 207, 204, 193, 207, 194, 207, 207, 207, 84,
4252-
4253- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
4254- 207, 205, 207, 207, 90, 0, 0, 195, 196, 207,
4255- 199, 207, 200, 207, 207, 69, 207, 207, 207, 163,
4256- 207, 164, 179, 207, 197, 198, 207, 207, 0, 0,
4257- 207, 207, 207, 207, 74, 207, 75, 207, 207, 207,
4258- 207, 207, 0, 0, 0, 207, 207, 85, 86, 207,
4259- 76, 207, 207, 77, 207, 91, 92, 0, 0, 0,
4260- 207, 207, 207, 207, 207, 207, 0, 0, 0, 207,
4261- 207, 207, 207, 207, 78, 0, 0, 7, 0, 0,
4262- 201, 202, 207, 207, 207, 0, 8, 0, 0, 207,
4263-
4264- 207, 165, 0, 0, 79, 80, 0, 0, 9, 0,
4265- 10, 0
4266+ 0, 0, 16, 16, 0, 0, 211, 209, 1, 21,
4267+ 209, 209, 209, 209, 209, 209, 209, 209, 120, 118,
4268+ 209, 209, 209, 208, 209, 208, 208, 208, 208, 208,
4269+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4270+ 208, 208, 208, 208, 208, 209, 1, 209, 210, 16,
4271+ 20, 210, 19, 17, 18, 14, 13, 1, 102, 111,
4272+ 103, 114, 108, 97, 110, 98, 117, 122, 109, 123,
4273+ 120, 0, 0, 125, 120, 0, 118, 118, 106, 99,
4274+ 101, 100, 107, 208, 115, 105, 208, 208, 208, 208,
4275+ 208, 208, 208, 208, 208, 208, 208, 208, 30, 208,
4276+
4277+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4278+ 208, 208, 34, 208, 208, 61, 208, 208, 208, 208,
4279+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4280+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4281+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 116,
4282+ 104, 1, 0, 0, 2, 0, 0, 0, 0, 16,
4283+ 15, 19, 18, 0, 122, 121, 0, 123, 0, 124,
4284+ 119, 112, 113, 208, 128, 208, 208, 208, 208, 208,
4285+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4286+ 208, 208, 208, 208, 208, 208, 33, 208, 208, 208,
4287+
4288+ 208, 208, 208, 208, 208, 208, 208, 26, 208, 208,
4289+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 62,
4290+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4291+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4292+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4293+ 0, 0, 0, 0, 15, 0, 122, 0, 121, 0,
4294+ 123, 124, 119, 208, 208, 24, 208, 208, 175, 168,
4295+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 32,
4296+ 131, 208, 208, 208, 208, 68, 208, 208, 136, 150,
4297+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4298+
4299+ 208, 208, 147, 171, 49, 50, 51, 208, 208, 208,
4300+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4301+ 208, 208, 208, 208, 208, 208, 208, 134, 126, 208,
4302+ 208, 27, 208, 208, 208, 208, 208, 208, 208, 46,
4303+ 47, 48, 95, 208, 208, 0, 0, 0, 0, 0,
4304+ 121, 208, 208, 28, 37, 38, 39, 208, 129, 208,
4305+ 23, 208, 208, 208, 208, 158, 159, 160, 208, 127,
4306+ 208, 151, 25, 161, 162, 163, 173, 155, 156, 157,
4307+ 208, 208, 208, 63, 153, 208, 208, 208, 40, 41,
4308+ 42, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4309+
4310+ 208, 208, 208, 208, 208, 208, 208, 148, 208, 208,
4311+ 208, 208, 208, 208, 208, 208, 208, 208, 130, 208,
4312+ 208, 170, 43, 44, 45, 208, 208, 31, 0, 0,
4313+ 0, 0, 178, 208, 208, 176, 208, 208, 208, 149,
4314+ 144, 181, 208, 208, 208, 208, 208, 208, 139, 208,
4315+ 208, 208, 96, 52, 53, 54, 55, 56, 57, 58,
4316+ 59, 60, 208, 208, 208, 208, 154, 135, 208, 208,
4317+ 142, 36, 208, 208, 167, 69, 143, 94, 179, 137,
4318+ 208, 208, 208, 208, 208, 208, 208, 208, 0, 0,
4319+ 0, 0, 208, 208, 208, 138, 35, 208, 208, 208,
4320+
4321+ 208, 208, 208, 182, 183, 184, 208, 208, 208, 208,
4322+ 208, 172, 208, 208, 208, 208, 208, 208, 208, 208,
4323+ 132, 208, 208, 208, 208, 208, 64, 208, 208, 65,
4324+ 208, 0, 0, 0, 0, 0, 208, 66, 29, 145,
4325+ 186, 187, 188, 208, 208, 208, 208, 208, 208, 208,
4326+ 208, 208, 208, 208, 208, 140, 208, 208, 208, 208,
4327+ 208, 208, 208, 208, 208, 133, 190, 191, 192, 208,
4328+ 208, 152, 208, 141, 0, 0, 6, 0, 0, 0,
4329+ 12, 3, 22, 208, 208, 208, 208, 208, 208, 208,
4330+ 208, 208, 185, 146, 67, 208, 208, 208, 208, 169,
4331+
4332+ 208, 177, 174, 207, 71, 72, 73, 208, 208, 208,
4333+ 208, 208, 208, 208, 208, 208, 208, 0, 0, 0,
4334+ 0, 0, 0, 0, 208, 208, 208, 189, 208, 208,
4335+ 208, 208, 208, 82, 83, 84, 208, 208, 208, 208,
4336+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 193,
4337+ 88, 89, 90, 208, 4, 0, 5, 0, 0, 0,
4338+ 0, 0, 0, 208, 208, 208, 208, 208, 208, 208,
4339+ 204, 208, 208, 208, 208, 208, 208, 208, 208, 208,
4340+ 208, 208, 74, 208, 208, 208, 208, 208, 208, 0,
4341+ 0, 0, 0, 208, 208, 205, 194, 208, 195, 208,
4342+
4343+ 208, 208, 85, 208, 208, 208, 208, 208, 208, 208,
4344+ 208, 208, 208, 208, 206, 208, 208, 91, 0, 0,
4345+ 0, 196, 197, 208, 200, 208, 201, 208, 208, 70,
4346+ 208, 208, 208, 164, 208, 165, 180, 208, 198, 199,
4347+ 208, 208, 0, 0, 0, 208, 208, 208, 208, 75,
4348+ 208, 76, 208, 208, 208, 208, 208, 0, 0, 0,
4349+ 0, 208, 208, 86, 87, 208, 77, 208, 208, 78,
4350+ 208, 92, 93, 0, 0, 0, 0, 208, 208, 208,
4351+ 208, 208, 208, 0, 0, 0, 0, 208, 208, 208,
4352+ 208, 208, 79, 0, 0, 0, 7, 0, 0, 202,
4353+
4354+ 203, 208, 208, 208, 0, 0, 8, 0, 0, 208,
4355+ 208, 166, 0, 0, 0, 80, 81, 0, 0, 0,
4356+ 9, 0, 0, 10, 0, 0, 0, 0, 0, 0,
4357+ 0, 0, 0, 11, 0
4358 } ;
4359
4360 static yyconst flex_int32_t yy_ec[256] =
4361@@ -461,13 +463,13 @@ static yyconst flex_int32_t yy_ec[256] =
4362 10, 11, 12, 1, 13, 14, 15, 16, 17, 18,
4363 19, 20, 21, 21, 21, 22, 22, 23, 1, 24,
4364 25, 26, 1, 1, 27, 28, 29, 30, 31, 32,
4365- 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
4366- 33, 34, 35, 33, 36, 33, 33, 37, 33, 33,
4367- 1, 1, 1, 38, 39, 1, 40, 41, 42, 43,
4368+ 33, 34, 34, 34, 34, 35, 34, 34, 34, 34,
4369+ 34, 36, 37, 38, 39, 34, 34, 40, 34, 34,
4370+ 1, 1, 1, 41, 42, 1, 43, 44, 45, 46,
4371
4372- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4373- 54, 55, 33, 56, 57, 58, 59, 60, 61, 62,
4374- 63, 64, 1, 65, 1, 1, 1, 1, 1, 1,
4375+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4376+ 57, 58, 34, 59, 60, 61, 62, 63, 64, 65,
4377+ 66, 67, 1, 68, 1, 1, 1, 1, 1, 1,
4378 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4379 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4380 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4381@@ -484,350 +486,357 @@ static yyconst flex_int32_t yy_ec[256] =
4382 1, 1, 1, 1, 1
4383 } ;
4384
4385-static yyconst flex_int32_t yy_meta[66] =
4386+static yyconst flex_int32_t yy_meta[69] =
4387 { 0,
4388- 1, 2, 3, 1, 1, 1, 1, 1, 1, 1,
4389- 1, 1, 1, 1, 1, 4, 4, 4, 4, 4,
4390- 4, 5, 1, 1, 1, 1, 6, 6, 6, 6,
4391- 5, 5, 7, 7, 7, 7, 8, 1, 7, 6,
4392- 6, 6, 6, 5, 5, 7, 7, 7, 7, 7,
4393- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
4394- 7, 8, 7, 7, 1
4395+ 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
4396+ 1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
4397+ 3, 3, 1, 1, 1, 1, 4, 4, 4, 4,
4398+ 3, 3, 5, 5, 5, 5, 5, 5, 5, 5,
4399+ 1, 5, 4, 4, 4, 4, 3, 3, 5, 5,
4400+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
4401+ 5, 5, 5, 5, 5, 5, 5, 1
4402 } ;
4403
4404-static yyconst flex_int16_t yy_base[824] =
4405+static yyconst flex_int16_t yy_base[845] =
4406 { 0,
4407- 0, 64, 70, 0, 1185, 1184, 1186, 1189, 65, 1189,
4408- 1160, 1159, 128, 1158, 125, 126, 124, 1157, 140, 189,
4409- 123, 1156, 138, 0, 127, 124, 113, 135, 144, 161,
4410- 176, 1126, 130, 187, 140, 143, 161, 1120, 182, 174,
4411- 202, 199, 211, 212, 1131, 130, 263, 255, 1189, 189,
4412- 1189, 1162, 256, 1189, 0, 1189, 1189, 215, 1189, 1189,
4413- 1189, 1189, 1189, 1189, 1189, 1189, 1189, 248, 1189, 250,
4414- 112, 302, 319, 1189, 1189, 0, 0, 1189, 1151, 1189,
4415- 1189, 1189, 1150, 0, 1189, 1189, 1116, 1121, 1114, 1117,
4416- 1126, 1125, 1111, 1114, 1126, 144, 1120, 1107, 1104, 1118,
4417-
4418- 1104, 1101, 1101, 1107, 175, 191, 1101, 1112, 1097, 1103,
4419- 1107, 1108, 0, 1099, 1110, 247, 1109, 1104, 1084, 230,
4420- 1088, 1102, 1092, 241, 1085, 228, 1098, 1100, 1082, 1078,
4421- 1086, 1083, 1072, 1081, 173, 1079, 1085, 1080, 1083, 1071,
4422- 1074, 233, 240, 260, 1084, 1071, 1084, 239, 1077, 1189,
4423- 1189, 307, 301, 323, 1189, 1062, 1075, 1066, 1077, 249,
4424- 0, 368, 0, 379, 1189, 298, 390, 1189, 397, 404,
4425- 291, 1189, 1189, 1072, 0, 1063, 1067, 1077, 1074, 270,
4426- 1057, 1057, 1061, 291, 1072, 1069, 1069, 1067, 1064, 1055,
4427- 1062, 1048, 1046, 1059, 1044, 1061, 0, 1058, 1045, 1053,
4428-
4429- 1050, 1054, 1055, 1048, 1045, 1033, 1032, 1046, 1049, 1036,
4430- 1045, 1032, 1039, 1029, 335, 1035, 1038, 1028, 1036, 1024,
4431- 1028, 1019, 1034, 1024, 1015, 1034, 1017, 1015, 1026, 1015,
4432- 1010, 1008, 1022, 1007, 1009, 1006, 1018, 1017, 1020, 1001,
4433- 306, 1010, 1005, 1003, 1013, 991, 339, 1010, 1012, 1000,
4434- 992, 996, 1008, 991, 0, 411, 421, 438, 1189, 451,
4435- 458, 1189, 1189, 986, 997, 0, 994, 344, 0, 0,
4436- 987, 985, 987, 982, 991, 979, 997, 985, 350, 0,
4437- 0, 979, 990, 989, 989, 0, 973, 353, 0, 0,
4438- 975, 357, 983, 984, 974, 968, 967, 968, 967, 967,
4439-
4440- 361, 962, 0, 0, 958, 957, 956, 958, 959, 964,
4441- 958, 954, 968, 963, 962, 961, 952, 955, 955, 947,
4442- 950, 945, 954, 959, 944, 957, 947, 0, 0, 954,
4443- 950, 0, 941, 941, 947, 937, 945, 426, 942, 0,
4444- 0, 0, 0, 931, 944, 943, 942, 939, 927, 465,
4445- 475, 939, 941, 0, 0, 0, 0, 927, 0, 927,
4446- 0, 926, 927, 921, 932, 0, 0, 0, 922, 0,
4447- 918, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4448- 929, 481, 928, 0, 0, 926, 922, 918, 0, 0,
4449- 0, 910, 443, 486, 493, 915, 911, 917, 907, 905,
4450-
4451- 919, 903, 903, 917, 905, 917, 912, 0, 910, 907,
4452- 911, 894, 896, 903, 909, 904, 903, 890, 0, 892,
4453- 893, 0, 0, 0, 0, 890, 894, 0, 888, 938,
4454- 887, 890, 0, 878, 888, 0, 876, 876, 890, 0,
4455- 892, 0, 497, 901, 900, 899, 869, 868, 0, 886,
4456- 885, 880, 0, 0, 0, 0, 0, 0, 0, 0,
4457- 0, 0, 868, 882, 868, 865, 0, 0, 871, 870,
4458- 0, 0, 868, 860, 0, 0, 0, 0, 0, 0,
4459- 857, 869, 500, 861, 868, 867, 864, 858, 851, 519,
4460- 867, 852, 847, 861, 859, 0, 0, 851, 871, 870,
4461-
4462- 869, 839, 838, 495, 496, 0, 851, 854, 852, 840,
4463- 836, 0, 849, 846, 845, 834, 833, 832, 515, 841,
4464- 0, 854, 853, 852, 822, 821, 0, 836, 822, 0,
4465- 833, 828, 543, 545, 873, 821, 829, 0, 0, 0,
4466- 845, 844, 0, 825, 828, 812, 820, 810, 818, 819,
4467- 819, 818, 803, 539, 816, 0, 817, 805, 804, 800,
4468- 825, 824, 823, 793, 792, 0, 823, 822, 0, 803,
4469- 806, 0, 552, 0, 792, 557, 1189, 580, 0, 590,
4470- 499, 1189, 0, 789, 788, 798, 798, 785, 800, 783,
4471- 798, 793, 0, 0, 0, 806, 805, 804, 774, 0,
4472-
4473- 774, 0, 0, 0, 559, 568, 797, 785, 788, 772,
4474- 771, 781, 781, 794, 793, 792, 762, 767, 552, 613,
4475- 363, 775, 763, 761, 760, 771, 0, 774, 770, 772,
4476- 768, 754, 782, 781, 0, 766, 758, 749, 757, 747,
4477- 758, 754, 756, 754, 754, 741, 740, 751, 0, 767,
4478- 766, 0, 751, 1189, 391, 1189, 620, 0, 640, 750,
4479- 732, 749, 748, 731, 723, 731, 721, 729, 0, 726,
4480- 725, 736, 719, 722, 737, 720, 733, 734, 731, 728,
4481- 736, 730, 729, 712, 711, 710, 721, 402, 705, 715,
4482- 699, 698, 0, 725, 698, 723, 696, 700, 699, 0,
4483-
4484- 710, 713, 709, 711, 688, 702, 686, 680, 688, 671,
4485- 662, 0, 640, 639, 0, 648, 641, 0, 0, 645,
4486- 0, 644, 0, 650, 649, 0, 625, 633, 623, 650,
4487- 630, 0, 0, 643, 0, 0, 642, 641, 582, 632,
4488- 639, 638, 614, 613, 635, 608, 633, 607, 590, 607,
4489- 586, 585, 611, 380, 526, 545, 544, 0, 0, 538,
4490- 0, 504, 510, 0, 495, 0, 0, 550, 572, 483,
4491- 470, 454, 462, 449, 445, 404, 419, 616, 619, 391,
4492- 387, 404, 392, 290, 0, 617, 642, 1189, 644, 570,
4493- 0, 0, 263, 258, 139, 645, 1189, 643, 618, 107,
4494-
4495- 77, 0, 23, 662, 0, 0, 663, 664, 1189, 665,
4496- 1189, 1189, 697, 702, 707, 712, 714, 716, 722, 729,
4497- 734, 739, 744
4498+ 0, 67, 73, 0, 1210, 1209, 1211, 1214, 68, 1214,
4499+ 1185, 1184, 134, 1183, 131, 132, 130, 1182, 146, 198,
4500+ 129, 1181, 144, 0, 130, 113, 124, 141, 150, 126,
4501+ 181, 1148, 159, 192, 118, 129, 146, 1142, 147, 174,
4502+ 206, 192, 203, 222, 1153, 203, 221, 231, 1214, 260,
4503+ 1214, 1187, 279, 1214, 0, 1214, 1214, 270, 1214, 1214,
4504+ 1214, 1214, 1214, 1214, 1214, 1214, 1214, 244, 1214, 255,
4505+ 139, 290, 307, 1214, 1214, 0, 0, 1214, 1176, 1214,
4506+ 1214, 1214, 1175, 0, 1214, 1214, 1138, 1143, 1136, 1139,
4507+ 1148, 1147, 1133, 1136, 1148, 144, 1142, 1129, 1126, 1140,
4508+
4509+ 1126, 1123, 1123, 1129, 219, 193, 1123, 1134, 1119, 1125,
4510+ 1129, 1130, 0, 1121, 1132, 278, 1131, 1126, 1106, 224,
4511+ 1110, 1124, 1114, 232, 1107, 271, 1120, 1122, 1104, 1100,
4512+ 1108, 1105, 1094, 1103, 234, 1101, 1107, 1102, 1105, 1093,
4513+ 1096, 226, 145, 262, 1106, 1093, 1106, 263, 1099, 1214,
4514+ 1214, 338, 331, 343, 1214, 1084, 1097, 1088, 1099, 345,
4515+ 0, 334, 0, 345, 1214, 328, 391, 1214, 352, 398,
4516+ 338, 1214, 1214, 1094, 0, 1085, 1089, 1099, 1096, 332,
4517+ 1079, 1079, 1083, 320, 1094, 1091, 1091, 1089, 1086, 1077,
4518+ 1084, 1070, 1068, 1081, 1066, 1083, 0, 1080, 1067, 1075,
4519+
4520+ 1072, 1076, 1077, 1070, 1067, 1055, 1054, 1068, 1071, 1058,
4521+ 1067, 1054, 1061, 1051, 364, 1057, 1060, 1050, 1058, 1046,
4522+ 1050, 1041, 1056, 1046, 1037, 1056, 1039, 1037, 1048, 1037,
4523+ 1032, 1030, 1044, 1029, 1031, 1028, 1040, 1039, 1042, 1023,
4524+ 338, 1032, 1027, 1025, 1035, 1013, 403, 1032, 1034, 1022,
4525+ 1014, 1018, 1030, 1013, 0, 415, 422, 439, 1214, 446,
4526+ 455, 1214, 1214, 1008, 1019, 0, 1016, 406, 0, 0,
4527+ 1009, 1007, 1009, 1004, 1013, 1001, 1019, 1007, 409, 0,
4528+ 0, 1001, 1012, 1011, 1011, 0, 995, 429, 0, 0,
4529+ 997, 460, 1005, 1006, 996, 990, 989, 990, 989, 989,
4530+
4531+ 463, 984, 0, 0, 980, 979, 978, 980, 981, 986,
4532+ 980, 976, 990, 985, 984, 983, 974, 977, 977, 969,
4533+ 972, 967, 976, 981, 966, 979, 969, 0, 0, 976,
4534+ 972, 0, 963, 963, 969, 959, 967, 466, 964, 0,
4535+ 0, 0, 0, 953, 966, 965, 964, 961, 949, 472,
4536+ 479, 961, 963, 0, 0, 0, 0, 949, 0, 949,
4537+ 0, 948, 949, 943, 954, 0, 0, 0, 944, 0,
4538+ 940, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4539+ 951, 487, 950, 0, 0, 948, 944, 940, 0, 0,
4540+ 0, 932, 489, 494, 499, 937, 933, 939, 929, 927,
4541+
4542+ 941, 925, 925, 939, 927, 939, 934, 0, 932, 929,
4543+ 933, 916, 918, 925, 931, 926, 925, 912, 0, 914,
4544+ 915, 0, 0, 0, 0, 912, 916, 0, 910, 963,
4545+ 909, 912, 0, 900, 910, 0, 898, 898, 912, 0,
4546+ 914, 0, 503, 926, 925, 924, 891, 890, 0, 908,
4547+ 907, 902, 0, 0, 0, 0, 0, 0, 0, 0,
4548+ 0, 0, 890, 904, 890, 887, 0, 0, 893, 892,
4549+ 0, 0, 890, 882, 0, 0, 0, 0, 0, 0,
4550+ 879, 891, 506, 883, 890, 889, 886, 880, 873, 524,
4551+ 889, 874, 869, 883, 881, 0, 0, 873, 896, 895,
4552+
4553+ 894, 861, 860, 361, 365, 0, 873, 876, 874, 862,
4554+ 858, 0, 871, 868, 867, 856, 855, 854, 519, 863,
4555+ 0, 879, 878, 877, 844, 843, 0, 858, 844, 0,
4556+ 855, 850, 547, 553, 898, 843, 851, 0, 0, 0,
4557+ 870, 869, 0, 847, 850, 834, 842, 832, 840, 841,
4558+ 841, 840, 825, 559, 838, 0, 839, 827, 826, 822,
4559+ 850, 849, 848, 815, 814, 0, 848, 847, 0, 825,
4560+ 828, 0, 562, 0, 814, 580, 1214, 587, 0, 607,
4561+ 584, 1214, 0, 811, 810, 820, 820, 807, 822, 805,
4562+ 820, 815, 0, 0, 0, 831, 830, 829, 796, 0,
4563+
4564+ 796, 0, 0, 0, 502, 524, 820, 807, 810, 794,
4565+ 793, 803, 803, 819, 818, 817, 784, 789, 615, 640,
4566+ 550, 806, 796, 784, 782, 781, 792, 0, 795, 791,
4567+ 793, 789, 775, 806, 805, 0, 787, 779, 770, 778,
4568+ 768, 779, 775, 777, 775, 775, 762, 761, 772, 0,
4569+ 791, 790, 0, 772, 1214, 555, 1214, 647, 0, 667,
4570+ 785, 770, 752, 769, 768, 751, 743, 751, 741, 749,
4571+ 0, 746, 745, 756, 739, 742, 757, 740, 753, 754,
4572+ 751, 748, 757, 750, 749, 732, 731, 730, 741, 582,
4573+ 754, 724, 734, 718, 717, 0, 745, 717, 743, 715,
4574+
4575+ 719, 718, 0, 729, 732, 728, 730, 711, 725, 709,
4576+ 710, 718, 701, 700, 0, 706, 705, 0, 728, 713,
4577+ 706, 0, 0, 710, 0, 709, 0, 715, 714, 0,
4578+ 690, 698, 688, 716, 695, 0, 0, 708, 0, 0,
4579+ 707, 706, 746, 611, 696, 703, 702, 678, 677, 705,
4580+ 677, 703, 689, 674, 691, 670, 669, 190, 613, 557,
4581+ 667, 687, 686, 0, 0, 681, 0, 680, 686, 0,
4582+ 671, 0, 0, 671, 590, 343, 672, 645, 644, 654,
4583+ 635, 631, 612, 612, 604, 443, 635, 576, 575, 549,
4584+ 25, 87, 0, 183, 500, 552, 1214, 636, 591, 0,
4585+
4586+ 0, 196, 258, 254, 272, 609, 1214, 614, 598, 279,
4587+ 284, 0, 336, 348, 671, 0, 0, 362, 672, 688,
4588+ 1214, 394, 689, 1214, 408, 670, 691, 649, 651, 474,
4589+ 476, 693, 694, 1214, 1214, 704, 707, 710, 530, 591,
4590+ 713, 717, 720, 722
4591 } ;
4592
4593-static yyconst flex_int16_t yy_def[824] =
4594+static yyconst flex_int16_t yy_def[845] =
4595 { 0,
4596- 812, 1, 812, 3, 813, 813, 812, 812, 812, 812,
4597- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
4598- 812, 812, 812, 814, 812, 814, 814, 814, 814, 814,
4599- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4600- 814, 814, 814, 814, 814, 812, 812, 812, 812, 812,
4601- 812, 812, 812, 812, 815, 812, 812, 812, 812, 812,
4602- 812, 812, 812, 812, 812, 812, 812, 816, 812, 817,
4603- 19, 812, 812, 812, 812, 818, 20, 812, 812, 812,
4604- 812, 812, 812, 814, 812, 812, 814, 814, 814, 814,
4605- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4606-
4607- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4608- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4609- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4610- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4611- 814, 814, 814, 814, 814, 814, 814, 814, 814, 812,
4612- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
4613- 819, 812, 815, 812, 812, 817, 812, 812, 812, 812,
4614- 818, 812, 812, 814, 814, 814, 814, 814, 814, 814,
4615- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4616- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4617-
4618- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4619- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4620- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4621- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4622- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4623- 812, 812, 812, 812, 819, 812, 812, 812, 812, 812,
4624- 812, 812, 812, 814, 814, 814, 814, 814, 814, 814,
4625- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4626- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4627- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4628-
4629- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4630- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4631- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4632- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4633- 814, 814, 814, 814, 814, 812, 812, 812, 812, 812,
4634- 812, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4635- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4636- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4637- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4638- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4639-
4640- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4641- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4642- 814, 814, 814, 814, 814, 814, 814, 814, 812, 812,
4643- 812, 812, 814, 814, 814, 814, 814, 814, 814, 814,
4644- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4645- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4646- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4647- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4648- 814, 814, 814, 814, 814, 814, 814, 814, 812, 812,
4649- 812, 812, 814, 814, 814, 814, 814, 814, 814, 814,
4650-
4651- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4652- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4653- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4654- 814, 812, 820, 812, 812, 812, 814, 814, 814, 814,
4655- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4656- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4657- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4658- 814, 814, 814, 814, 812, 812, 812, 812, 821, 812,
4659- 812, 812, 814, 814, 814, 814, 814, 814, 814, 814,
4660- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4661-
4662- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4663- 814, 814, 814, 814, 814, 814, 814, 812, 822, 812,
4664- 821, 812, 812, 814, 814, 814, 814, 814, 814, 814,
4665- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4666- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4667- 814, 814, 814, 812, 812, 812, 812, 823, 812, 812,
4668- 812, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4669- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4670- 814, 814, 814, 814, 814, 814, 814, 823, 812, 812,
4671- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4672-
4673- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4674- 814, 814, 814, 814, 814, 812, 812, 814, 814, 814,
4675- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4676- 814, 814, 814, 814, 814, 814, 814, 814, 812, 812,
4677- 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
4678- 814, 814, 812, 812, 812, 814, 814, 814, 814, 814,
4679- 814, 814, 814, 814, 814, 814, 814, 812, 812, 812,
4680- 814, 814, 814, 814, 814, 814, 812, 812, 812, 814,
4681- 814, 814, 814, 814, 814, 812, 812, 812, 812, 812,
4682- 814, 814, 814, 814, 814, 812, 812, 812, 812, 814,
4683-
4684- 814, 814, 812, 812, 814, 814, 812, 812, 812, 812,
4685- 812, 0, 812, 812, 812, 812, 812, 812, 812, 812,
4686- 812, 812, 812
4687+ 835, 1, 835, 3, 836, 836, 835, 835, 835, 835,
4688+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
4689+ 835, 835, 835, 837, 835, 837, 837, 837, 837, 837,
4690+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4691+ 837, 837, 837, 837, 837, 835, 835, 835, 835, 835,
4692+ 835, 835, 835, 835, 838, 835, 835, 835, 835, 835,
4693+ 835, 835, 835, 835, 835, 835, 835, 839, 835, 840,
4694+ 19, 835, 835, 835, 835, 841, 20, 835, 835, 835,
4695+ 835, 835, 835, 837, 835, 835, 837, 837, 837, 837,
4696+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4697+
4698+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4699+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4700+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4701+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4702+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 835,
4703+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
4704+ 842, 835, 838, 835, 835, 840, 835, 835, 835, 835,
4705+ 841, 835, 835, 837, 837, 837, 837, 837, 837, 837,
4706+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4707+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4708+
4709+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4710+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4711+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4712+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4713+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4714+ 835, 835, 835, 835, 842, 835, 835, 835, 835, 835,
4715+ 835, 835, 835, 837, 837, 837, 837, 837, 837, 837,
4716+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4717+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4718+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4719+
4720+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4721+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4722+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4723+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4724+ 837, 837, 837, 837, 837, 835, 835, 835, 835, 835,
4725+ 835, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4726+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4727+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4728+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4729+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4730+
4731+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4732+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4733+ 837, 837, 837, 837, 837, 837, 837, 837, 835, 835,
4734+ 835, 835, 837, 837, 837, 837, 837, 837, 837, 837,
4735+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4736+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4737+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4738+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4739+ 837, 837, 837, 837, 837, 837, 837, 837, 835, 835,
4740+ 835, 835, 837, 837, 837, 837, 837, 837, 837, 837,
4741+
4742+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4743+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4744+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4745+ 837, 835, 835, 835, 835, 835, 837, 837, 837, 837,
4746+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4747+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4748+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4749+ 837, 837, 837, 837, 835, 835, 835, 835, 843, 835,
4750+ 835, 835, 837, 837, 837, 837, 837, 837, 837, 837,
4751+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4752+
4753+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4754+ 837, 837, 837, 837, 837, 837, 837, 835, 835, 835,
4755+ 843, 835, 835, 835, 837, 837, 837, 837, 837, 837,
4756+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4757+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4758+ 837, 837, 837, 837, 835, 835, 835, 835, 844, 835,
4759+ 835, 835, 835, 837, 837, 837, 837, 837, 837, 837,
4760+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4761+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 844,
4762+ 835, 835, 835, 837, 837, 837, 837, 837, 837, 837,
4763+
4764+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4765+ 837, 837, 837, 837, 837, 837, 837, 837, 835, 835,
4766+ 835, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4767+ 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4768+ 837, 837, 835, 835, 835, 837, 837, 837, 837, 837,
4769+ 837, 837, 837, 837, 837, 837, 837, 835, 835, 835,
4770+ 835, 837, 837, 837, 837, 837, 837, 837, 837, 837,
4771+ 837, 837, 837, 835, 835, 835, 835, 837, 837, 837,
4772+ 837, 837, 837, 835, 835, 835, 835, 837, 837, 837,
4773+ 837, 837, 837, 835, 835, 835, 835, 835, 835, 837,
4774+
4775+ 837, 837, 837, 837, 835, 835, 835, 835, 835, 837,
4776+ 837, 837, 835, 835, 835, 837, 837, 835, 835, 835,
4777+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
4778+ 835, 835, 835, 835, 0, 835, 835, 835, 835, 835,
4779+ 835, 835, 835, 835
4780 } ;
4781
4782-static yyconst flex_int16_t yy_nxt[1255] =
4783+static yyconst flex_int16_t yy_nxt[1283] =
4784 { 0,
4785 8, 9, 10, 9, 11, 8, 12, 13, 8, 8,
4786 14, 15, 16, 17, 18, 19, 20, 20, 20, 20,
4787 20, 20, 8, 21, 22, 23, 24, 24, 24, 24,
4788- 24, 24, 24, 24, 24, 24, 24, 25, 24, 26,
4789- 27, 28, 29, 30, 31, 32, 33, 34, 24, 24,
4790- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
4791- 45, 24, 24, 24, 46, 47, 58, 807, 58, 48,
4792- 49, 50, 51, 50, 49, 49, 49, 49, 49, 49,
4793- 49, 49, 49, 49, 52, 49, 53, 53, 53, 53,
4794- 53, 53, 54, 49, 49, 49, 55, 55, 55, 55,
4795-
4796- 55, 55, 55, 55, 55, 55, 55, 49, 55, 55,
4797+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
4798+ 25, 24, 26, 27, 28, 29, 30, 31, 32, 33,
4799+ 34, 24, 24, 35, 36, 37, 38, 39, 40, 41,
4800+ 42, 43, 44, 45, 24, 24, 24, 46, 47, 58,
4801+ 803, 58, 48, 49, 50, 51, 50, 49, 49, 49,
4802+ 49, 49, 49, 49, 49, 49, 49, 52, 49, 53,
4803+ 53, 53, 53, 53, 53, 54, 49, 49, 49, 55,
4804+
4805+ 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
4806+ 55, 55, 55, 49, 55, 55, 55, 55, 55, 55,
4807 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
4808 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
4809- 55, 55, 55, 55, 49, 61, 64, 806, 66, 68,
4810- 68, 68, 68, 68, 68, 68, 79, 80, 812, 65,
4811- 67, 85, 62, 70, 150, 71, 71, 71, 71, 71,
4812- 71, 72, 82, 83, 86, 87, 90, 805, 91, 110,
4813- 73, 74, 92, 812, 93, 75, 76, 111, 94, 119,
4814- 88, 89, 121, 73, 74, 95, 122, 97, 96, 112,
4815- 160, 98, 160, 120, 151, 183, 184, 99, 75, 802,
4816-
4817- 123, 76, 70, 100, 77, 77, 77, 77, 77, 77,
4818- 77, 101, 231, 102, 124, 104, 58, 129, 58, 73,
4819- 74, 126, 103, 105, 78, 193, 106, 130, 232, 107,
4820- 195, 113, 73, 74, 114, 108, 194, 127, 115, 116,
4821- 128, 131, 138, 117, 196, 139, 118, 78, 132, 133,
4822- 160, 146, 160, 134, 140, 147, 154, 155, 142, 135,
4823- 136, 141, 137, 143, 152, 148, 58, 144, 153, 221,
4824- 145, 162, 162, 162, 162, 162, 162, 162, 164, 165,
4825- 167, 168, 213, 222, 239, 240, 248, 241, 218, 249,
4826- 214, 164, 165, 167, 168, 219, 242, 205, 156, 243,
4827-
4828- 206, 207, 154, 155, 208, 157, 209, 244, 152, 158,
4829- 58, 801, 153, 269, 159, 70, 800, 72, 72, 72,
4830- 72, 72, 72, 72, 154, 155, 263, 270, 258, 259,
4831- 169, 169, 73, 74, 170, 170, 170, 170, 170, 170,
4832- 170, 258, 259, 795, 156, 73, 74, 274, 275, 263,
4833- 333, 157, 305, 306, 307, 158, 340, 341, 342, 334,
4834- 159, 355, 356, 357, 576, 577, 156, 366, 367, 368,
4835- 374, 375, 376, 157, 378, 379, 380, 158, 389, 390,
4836- 391, 768, 159, 162, 162, 162, 162, 162, 162, 162,
4837- 256, 256, 655, 656, 257, 257, 257, 257, 257, 257,
4838-
4839- 257, 260, 260, 655, 656, 261, 261, 261, 261, 261,
4840- 261, 261, 170, 170, 170, 170, 170, 170, 170, 170,
4841- 170, 170, 170, 170, 170, 170, 257, 257, 257, 257,
4842- 257, 257, 257, 769, 794, 262, 257, 257, 257, 257,
4843- 257, 257, 257, 423, 424, 425, 793, 792, 262, 350,
4844- 350, 791, 165, 351, 351, 351, 351, 351, 351, 351,
4845- 454, 455, 456, 786, 785, 165, 261, 261, 261, 261,
4846- 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
4847- 351, 351, 351, 351, 351, 351, 351, 784, 783, 168,
4848- 351, 351, 351, 351, 351, 351, 351, 444, 445, 446,
4849-
4850- 581, 782, 168, 457, 458, 459, 259, 781, 447, 448,
4851- 460, 461, 462, 499, 500, 501, 522, 523, 524, 259,
4852- 490, 546, 548, 780, 502, 503, 779, 525, 526, 547,
4853- 549, 561, 562, 563, 533, 534, 534, 534, 534, 534,
4854- 534, 622, 564, 565, 576, 577, 576, 577, 776, 775,
4855- 774, 768, 623, 655, 656, 596, 597, 598, 576, 577,
4856- 580, 580, 580, 580, 580, 580, 580, 599, 614, 615,
4857- 616, 798, 619, 620, 620, 620, 620, 620, 620, 579,
4858- 617, 576, 577, 753, 773, 638, 772, 771, 658, 770,
4859- 754, 576, 577, 639, 640, 578, 578, 578, 578, 578,
4860-
4861- 578, 641, 642, 769, 579, 580, 580, 580, 580, 580,
4862- 580, 580, 753, 658, 655, 656, 777, 787, 796, 754,
4863- 789, 655, 656, 799, 778, 788, 797, 790, 659, 659,
4864- 659, 659, 659, 659, 659, 657, 657, 657, 657, 657,
4865- 657, 655, 656, 787, 798, 789, 796, 767, 766, 765,
4866- 764, 788, 790, 763, 797, 659, 659, 659, 659, 659,
4867- 659, 659, 803, 808, 810, 808, 810, 762, 761, 760,
4868- 804, 809, 811, 809, 811, 759, 758, 757, 756, 755,
4869- 752, 751, 750, 749, 748, 747, 746, 745, 744, 743,
4870- 742, 741, 740, 739, 738, 737, 799, 56, 56, 56,
4871-
4872- 56, 56, 56, 56, 56, 84, 84, 84, 84, 84,
4873- 163, 163, 163, 163, 163, 68, 68, 166, 166, 171,
4874- 171, 171, 255, 255, 736, 255, 255, 255, 255, 255,
4875- 578, 578, 578, 735, 734, 733, 578, 621, 621, 621,
4876- 657, 657, 657, 732, 731, 730, 657, 688, 688, 688,
4877- 729, 728, 727, 726, 725, 724, 723, 722, 721, 720,
4878- 719, 718, 717, 716, 715, 714, 713, 712, 711, 710,
4879- 709, 708, 707, 706, 705, 704, 703, 702, 701, 700,
4880- 699, 698, 697, 696, 695, 694, 693, 692, 691, 690,
4881- 689, 687, 686, 685, 684, 683, 682, 681, 680, 679,
4882-
4883- 678, 677, 676, 675, 674, 673, 672, 671, 670, 669,
4884- 668, 667, 666, 665, 664, 663, 662, 661, 660, 654,
4885- 653, 652, 651, 650, 649, 648, 647, 646, 645, 644,
4886- 643, 637, 636, 635, 634, 633, 632, 631, 630, 629,
4887- 628, 627, 626, 625, 624, 618, 613, 612, 611, 610,
4888- 609, 608, 607, 606, 605, 604, 603, 602, 601, 600,
4889- 595, 594, 593, 592, 591, 590, 589, 588, 587, 586,
4890- 585, 584, 583, 582, 581, 575, 574, 573, 572, 571,
4891- 570, 569, 568, 567, 566, 560, 559, 558, 557, 556,
4892- 555, 554, 553, 552, 551, 550, 545, 544, 543, 542,
4893-
4894- 541, 540, 539, 538, 537, 536, 535, 532, 531, 530,
4895- 529, 528, 527, 521, 520, 519, 518, 517, 516, 515,
4896- 514, 513, 512, 511, 510, 509, 508, 507, 506, 505,
4897- 504, 498, 497, 496, 495, 494, 493, 492, 491, 490,
4898- 489, 488, 487, 486, 485, 484, 483, 482, 481, 480,
4899- 479, 478, 477, 476, 475, 474, 473, 472, 471, 470,
4900- 469, 468, 467, 466, 465, 464, 463, 453, 452, 451,
4901- 450, 449, 443, 442, 441, 440, 439, 438, 437, 436,
4902- 435, 434, 433, 432, 431, 430, 429, 428, 427, 426,
4903- 422, 421, 420, 419, 418, 417, 416, 415, 414, 413,
4904-
4905- 412, 411, 410, 409, 408, 407, 406, 405, 404, 403,
4906- 402, 401, 400, 399, 398, 397, 396, 395, 394, 393,
4907- 392, 388, 387, 386, 385, 384, 383, 382, 381, 377,
4908- 373, 372, 371, 370, 369, 365, 364, 363, 362, 361,
4909- 360, 359, 358, 354, 353, 352, 349, 348, 347, 346,
4910- 345, 344, 343, 339, 338, 337, 336, 335, 332, 331,
4911- 330, 329, 328, 327, 326, 325, 324, 323, 322, 321,
4912- 320, 319, 318, 317, 316, 315, 314, 313, 312, 311,
4913- 310, 309, 308, 304, 303, 302, 301, 300, 299, 298,
4914- 297, 296, 295, 294, 293, 292, 291, 290, 289, 288,
4915-
4916- 287, 286, 285, 284, 283, 282, 281, 280, 279, 278,
4917- 277, 276, 273, 272, 271, 268, 267, 266, 265, 264,
4918- 254, 253, 252, 251, 250, 247, 246, 245, 238, 237,
4919- 236, 235, 234, 233, 230, 229, 228, 227, 226, 225,
4920- 224, 223, 220, 217, 216, 215, 212, 211, 210, 204,
4921- 203, 202, 201, 200, 199, 198, 197, 192, 191, 190,
4922- 189, 188, 187, 186, 185, 182, 181, 180, 179, 178,
4923- 177, 176, 175, 174, 173, 172, 161, 149, 125, 109,
4924- 81, 69, 63, 60, 59, 812, 57, 57, 7, 812,
4925- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
4926-
4927- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
4928- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
4929- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
4930- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
4931- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
4932- 812, 812, 812, 812
4933+ 49, 61, 64, 804, 66, 68, 68, 68, 68, 68,
4934+ 68, 68, 79, 80, 85, 65, 67, 87, 62, 70,
4935+ 119, 71, 71, 71, 71, 71, 71, 72, 82, 83,
4936+ 86, 121, 88, 89, 120, 122, 73, 74, 835, 101,
4937+ 90, 102, 91, 93, 75, 76, 92, 94, 123, 126,
4938+ 103, 758, 73, 74, 95, 241, 97, 96, 183, 184,
4939+
4940+ 98, 110, 124, 835, 242, 127, 99, 75, 128, 111,
4941+ 76, 70, 100, 77, 77, 77, 77, 77, 77, 77,
4942+ 129, 112, 152, 104, 58, 805, 153, 150, 73, 74,
4943+ 130, 105, 154, 155, 106, 195, 78, 107, 138, 113,
4944+ 774, 139, 114, 108, 73, 74, 115, 116, 131, 196,
4945+ 140, 117, 810, 142, 118, 132, 133, 141, 143, 78,
4946+ 134, 160, 144, 160, 146, 145, 135, 136, 147, 137,
4947+ 151, 58, 193, 58, 164, 165, 231, 156, 148, 213,
4948+ 239, 240, 218, 194, 157, 167, 168, 214, 158, 219,
4949+ 164, 165, 232, 159, 162, 162, 162, 162, 162, 162,
4950+
4951+ 162, 167, 168, 70, 243, 72, 72, 72, 72, 72,
4952+ 72, 72, 244, 248, 811, 221, 249, 812, 169, 169,
4953+ 73, 74, 170, 170, 170, 170, 170, 170, 170, 222,
4954+ 813, 205, 154, 155, 206, 207, 73, 74, 208, 152,
4955+ 209, 58, 816, 153, 154, 155, 160, 817, 160, 162,
4956+ 162, 162, 162, 162, 162, 162, 256, 256, 258, 259,
4957+ 257, 257, 257, 257, 257, 257, 257, 170, 170, 170,
4958+ 170, 170, 170, 170, 258, 259, 263, 156, 269, 274,
4959+ 275, 305, 306, 307, 157, 333, 818, 546, 158, 156,
4960+ 785, 548, 270, 159, 334, 819, 157, 547, 786, 263,
4961+
4962+ 158, 549, 260, 260, 822, 159, 261, 261, 261, 261,
4963+ 261, 261, 261, 170, 170, 170, 170, 170, 170, 170,
4964+ 340, 341, 342, 355, 356, 357, 366, 367, 368, 262,
4965+ 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
4966+ 257, 257, 257, 257, 796, 262, 374, 375, 376, 825,
4967+ 350, 350, 797, 165, 351, 351, 351, 351, 351, 351,
4968+ 351, 261, 261, 261, 261, 261, 261, 261, 826, 165,
4969+ 261, 261, 261, 261, 261, 261, 261, 378, 379, 380,
4970+ 389, 390, 391, 423, 424, 425, 168, 351, 351, 351,
4971+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
4972+
4973+ 351, 806, 168, 444, 445, 446, 454, 455, 456, 807,
4974+ 259, 457, 458, 459, 447, 448, 460, 461, 462, 499,
4975+ 500, 501, 522, 523, 524, 490, 259, 831, 639, 832,
4976+ 502, 503, 68, 525, 526, 561, 562, 563, 640, 533,
4977+ 534, 534, 534, 534, 534, 534, 564, 565, 576, 577,
4978+ 641, 576, 577, 796, 576, 577, 656, 657, 775, 642,
4979+ 643, 797, 578, 578, 578, 578, 578, 578, 580, 580,
4980+ 580, 580, 580, 580, 580, 596, 597, 598, 614, 615,
4981+ 616, 576, 577, 656, 657, 581, 579, 599, 576, 577,
4982+ 617, 775, 808, 166, 802, 619, 620, 620, 620, 620,
4983+
4984+ 620, 620, 578, 578, 578, 578, 578, 578, 576, 577,
4985+ 806, 579, 759, 776, 759, 808, 656, 657, 807, 760,
4986+ 622, 760, 580, 580, 580, 580, 580, 580, 580, 623,
4987+ 658, 658, 658, 658, 658, 658, 798, 798, 801, 800,
4988+ 624, 656, 657, 799, 799, 814, 776, 809, 656, 657,
4989+ 829, 795, 829, 815, 659, 660, 660, 660, 660, 660,
4990+ 660, 660, 658, 658, 658, 658, 658, 658, 656, 657,
4991+ 809, 827, 820, 823, 794, 793, 792, 791, 828, 659,
4992+ 821, 824, 660, 660, 660, 660, 660, 660, 660, 820,
4993+ 823, 830, 827, 830, 833, 833, 790, 821, 824, 828,
4994+
4995+ 789, 788, 834, 834, 56, 56, 56, 56, 56, 84,
4996+ 84, 84, 163, 163, 163, 171, 171, 255, 787, 255,
4997+ 255, 255, 621, 621, 690, 690, 784, 783, 782, 781,
4998+ 780, 779, 778, 777, 773, 772, 771, 770, 769, 768,
4999+ 767, 766, 765, 764, 763, 762, 761, 758, 757, 756,
5000+ 755, 754, 753, 752, 751, 750, 749, 748, 747, 746,
5001+ 745, 744, 743, 742, 741, 740, 739, 738, 737, 736,
5002+ 735, 734, 733, 732, 731, 730, 729, 728, 727, 726,
5003+ 725, 724, 723, 722, 721, 720, 719, 718, 717, 716,
5004+ 715, 714, 713, 712, 711, 710, 709, 708, 707, 706,
5005+
5006+ 705, 704, 703, 702, 701, 700, 699, 698, 697, 696,
5007+ 695, 694, 693, 692, 691, 689, 688, 687, 686, 685,
5008+ 684, 683, 682, 681, 680, 679, 678, 677, 676, 675,
5009+ 674, 673, 672, 671, 670, 669, 668, 667, 666, 665,
5010+ 664, 663, 662, 661, 655, 654, 653, 652, 651, 650,
5011+ 649, 648, 647, 646, 645, 644, 638, 637, 636, 635,
5012+ 634, 633, 632, 631, 630, 629, 628, 627, 626, 625,
5013+ 618, 613, 612, 611, 610, 609, 608, 607, 606, 605,
5014+ 604, 603, 602, 601, 600, 595, 594, 593, 592, 591,
5015+ 590, 589, 588, 587, 586, 585, 584, 583, 582, 581,
5016+
5017+ 575, 574, 573, 572, 571, 570, 569, 568, 567, 566,
5018+ 560, 559, 558, 557, 556, 555, 554, 553, 552, 551,
5019+ 550, 545, 544, 543, 542, 541, 540, 539, 538, 537,
5020+ 536, 535, 532, 531, 530, 529, 528, 527, 521, 520,
5021+ 519, 518, 517, 516, 515, 514, 513, 512, 511, 510,
5022+ 509, 508, 507, 506, 505, 504, 498, 497, 496, 495,
5023+ 494, 493, 492, 491, 490, 489, 488, 487, 486, 485,
5024+ 484, 483, 482, 481, 480, 479, 478, 477, 476, 475,
5025+ 474, 473, 472, 471, 470, 469, 468, 467, 466, 465,
5026+ 464, 463, 453, 452, 451, 450, 449, 443, 442, 441,
5027+
5028+ 440, 439, 438, 437, 436, 435, 434, 433, 432, 431,
5029+ 430, 429, 428, 427, 426, 422, 421, 420, 419, 418,
5030+ 417, 416, 415, 414, 413, 412, 411, 410, 409, 408,
5031+ 407, 406, 405, 404, 403, 402, 401, 400, 399, 398,
5032+ 397, 396, 395, 394, 393, 392, 388, 387, 386, 385,
5033+ 384, 383, 382, 381, 377, 373, 372, 371, 370, 369,
5034+ 365, 364, 363, 362, 361, 360, 359, 358, 354, 353,
5035+ 352, 349, 348, 347, 346, 345, 344, 343, 339, 338,
5036+ 337, 336, 335, 332, 331, 330, 329, 328, 327, 326,
5037+ 325, 324, 323, 322, 321, 320, 319, 318, 317, 316,
5038+
5039+ 315, 314, 313, 312, 311, 310, 309, 308, 304, 303,
5040+ 302, 301, 300, 299, 298, 297, 296, 295, 294, 293,
5041+ 292, 291, 290, 289, 288, 287, 286, 285, 284, 283,
5042+ 282, 281, 280, 279, 278, 277, 276, 273, 272, 271,
5043+ 268, 267, 266, 265, 264, 254, 253, 252, 251, 250,
5044+ 247, 246, 245, 238, 237, 236, 235, 234, 233, 230,
5045+ 229, 228, 227, 226, 225, 224, 223, 220, 217, 216,
5046+ 215, 212, 211, 210, 204, 203, 202, 201, 200, 199,
5047+ 198, 197, 192, 191, 190, 189, 188, 187, 186, 185,
5048+ 182, 181, 180, 179, 178, 177, 176, 175, 174, 173,
5049+
5050+ 172, 161, 149, 125, 109, 81, 69, 63, 60, 59,
5051+ 835, 57, 57, 7, 835, 835, 835, 835, 835, 835,
5052+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5053+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5054+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5055+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5056+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5057+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5058+ 835, 835
5059 } ;
5060
5061-static yyconst flex_int16_t yy_chk[1255] =
5062+static yyconst flex_int16_t yy_chk[1283] =
5063 { 0,
5064 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5065 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5066@@ -835,138 +844,141 @@ static yyconst flex_int16_t yy_chk[1255] =
5067 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5068 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5069 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5070- 1, 1, 1, 1, 1, 2, 9, 803, 9, 2,
5071- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5072+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 9,
5073+ 791, 9, 2, 3, 3, 3, 3, 3, 3, 3,
5074 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5075 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5076
5077 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5078 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5079 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5080- 3, 3, 3, 3, 3, 13, 15, 801, 16, 17,
5081- 17, 17, 17, 17, 17, 17, 21, 21, 71, 15,
5082- 16, 25, 13, 19, 46, 19, 19, 19, 19, 19,
5083- 19, 19, 23, 23, 25, 26, 27, 800, 27, 33,
5084- 19, 19, 27, 71, 28, 19, 19, 33, 28, 35,
5085- 26, 26, 36, 19, 19, 28, 36, 29, 28, 33,
5086- 50, 29, 50, 35, 46, 96, 96, 29, 19, 795,
5087-
5088- 37, 19, 20, 29, 20, 20, 20, 20, 20, 20,
5089- 20, 30, 135, 30, 37, 31, 58, 40, 58, 20,
5090- 20, 39, 30, 31, 20, 105, 31, 40, 135, 31,
5091- 106, 34, 20, 20, 34, 31, 105, 39, 34, 34,
5092- 39, 41, 42, 34, 106, 42, 34, 20, 41, 41,
5093- 160, 44, 160, 41, 42, 44, 48, 48, 43, 41,
5094- 41, 42, 41, 43, 47, 44, 47, 43, 47, 126,
5095- 43, 53, 53, 53, 53, 53, 53, 53, 68, 68,
5096- 70, 70, 120, 126, 142, 142, 148, 143, 124, 148,
5097- 120, 68, 68, 70, 70, 124, 143, 116, 48, 144,
5098-
5099- 116, 116, 153, 153, 116, 48, 116, 144, 152, 48,
5100- 152, 794, 152, 180, 48, 72, 793, 72, 72, 72,
5101- 72, 72, 72, 72, 154, 154, 171, 180, 166, 166,
5102- 73, 73, 72, 72, 73, 73, 73, 73, 73, 73,
5103- 73, 166, 166, 784, 153, 72, 72, 184, 184, 171,
5104- 241, 153, 215, 215, 215, 153, 247, 247, 247, 241,
5105- 153, 268, 268, 268, 621, 621, 154, 279, 279, 279,
5106- 288, 288, 288, 154, 292, 292, 292, 154, 301, 301,
5107- 301, 754, 154, 162, 162, 162, 162, 162, 162, 162,
5108- 164, 164, 655, 655, 164, 164, 164, 164, 164, 164,
5109-
5110- 164, 167, 167, 688, 688, 167, 167, 167, 167, 167,
5111- 167, 167, 169, 169, 169, 169, 169, 169, 169, 170,
5112- 170, 170, 170, 170, 170, 170, 256, 256, 256, 256,
5113- 256, 256, 256, 754, 783, 170, 257, 257, 257, 257,
5114- 257, 257, 257, 338, 338, 338, 782, 781, 170, 258,
5115- 258, 780, 257, 258, 258, 258, 258, 258, 258, 258,
5116- 393, 393, 393, 777, 776, 257, 260, 260, 260, 260,
5117- 260, 260, 260, 261, 261, 261, 261, 261, 261, 261,
5118- 350, 350, 350, 350, 350, 350, 350, 775, 774, 261,
5119- 351, 351, 351, 351, 351, 351, 351, 382, 382, 382,
5120-
5121- 581, 773, 261, 394, 394, 394, 351, 772, 382, 382,
5122- 395, 395, 395, 443, 443, 443, 483, 483, 483, 351,
5123- 490, 504, 505, 771, 443, 443, 770, 483, 483, 504,
5124- 505, 519, 519, 519, 490, 490, 490, 490, 490, 490,
5125- 490, 581, 519, 519, 533, 533, 534, 534, 765, 763,
5126- 762, 768, 581, 619, 619, 554, 554, 554, 576, 576,
5127- 534, 534, 534, 534, 534, 534, 534, 554, 573, 573,
5128- 573, 790, 576, 576, 576, 576, 576, 576, 576, 533,
5129- 573, 578, 578, 739, 760, 605, 757, 756, 619, 755,
5130- 739, 580, 580, 605, 606, 578, 578, 578, 578, 578,
5131-
5132- 578, 606, 606, 768, 533, 580, 580, 580, 580, 580,
5133- 580, 580, 753, 619, 620, 620, 769, 778, 786, 753,
5134- 779, 657, 657, 790, 769, 778, 786, 779, 620, 620,
5135- 620, 620, 620, 620, 620, 657, 657, 657, 657, 657,
5136- 657, 659, 659, 787, 798, 789, 796, 752, 751, 750,
5137- 749, 787, 789, 748, 796, 659, 659, 659, 659, 659,
5138- 659, 659, 799, 804, 807, 808, 810, 747, 746, 745,
5139- 799, 804, 807, 808, 810, 744, 743, 742, 741, 740,
5140- 738, 737, 734, 731, 730, 729, 728, 727, 725, 724,
5141- 722, 720, 717, 716, 714, 713, 798, 813, 813, 813,
5142-
5143- 813, 813, 813, 813, 813, 814, 814, 814, 814, 814,
5144- 815, 815, 815, 815, 815, 816, 816, 817, 817, 818,
5145- 818, 818, 819, 819, 711, 819, 819, 819, 819, 819,
5146- 820, 820, 820, 710, 709, 708, 820, 821, 821, 821,
5147- 822, 822, 822, 707, 706, 705, 822, 823, 823, 823,
5148- 704, 703, 702, 701, 699, 698, 697, 696, 695, 694,
5149- 692, 691, 690, 689, 687, 686, 685, 684, 683, 682,
5150- 681, 680, 679, 678, 677, 676, 675, 674, 673, 672,
5151- 671, 670, 668, 667, 666, 665, 664, 663, 662, 661,
5152- 660, 653, 651, 650, 648, 647, 646, 645, 644, 643,
5153-
5154- 642, 641, 640, 639, 638, 637, 636, 634, 633, 632,
5155- 631, 630, 629, 628, 626, 625, 624, 623, 622, 618,
5156- 617, 616, 615, 614, 613, 612, 611, 610, 609, 608,
5157- 607, 601, 599, 598, 597, 596, 592, 591, 590, 589,
5158- 588, 587, 586, 585, 584, 575, 571, 570, 568, 567,
5159- 565, 564, 563, 562, 561, 560, 559, 558, 557, 555,
5160- 553, 552, 551, 550, 549, 548, 547, 546, 545, 544,
5161- 542, 541, 537, 536, 535, 532, 531, 529, 528, 526,
5162- 525, 524, 523, 522, 520, 518, 517, 516, 515, 514,
5163- 513, 511, 510, 509, 508, 507, 503, 502, 501, 500,
5164-
5165- 499, 498, 495, 494, 493, 492, 491, 489, 488, 487,
5166- 486, 485, 484, 482, 481, 474, 473, 470, 469, 466,
5167- 465, 464, 463, 452, 451, 450, 448, 447, 446, 445,
5168- 444, 441, 439, 438, 437, 435, 434, 432, 431, 430,
5169- 429, 427, 426, 421, 420, 418, 417, 416, 415, 414,
5170- 413, 412, 411, 410, 409, 407, 406, 405, 404, 403,
5171- 402, 401, 400, 399, 398, 397, 396, 392, 388, 387,
5172- 386, 383, 381, 371, 369, 365, 364, 363, 362, 360,
5173- 358, 353, 352, 349, 348, 347, 346, 345, 344, 339,
5174- 337, 336, 335, 334, 333, 331, 330, 327, 326, 325,
5175-
5176- 324, 323, 322, 321, 320, 319, 318, 317, 316, 315,
5177- 314, 313, 312, 311, 310, 309, 308, 307, 306, 305,
5178- 302, 300, 299, 298, 297, 296, 295, 294, 293, 291,
5179- 287, 285, 284, 283, 282, 278, 277, 276, 275, 274,
5180- 273, 272, 271, 267, 265, 264, 254, 253, 252, 251,
5181- 250, 249, 248, 246, 245, 244, 243, 242, 240, 239,
5182- 238, 237, 236, 235, 234, 233, 232, 231, 230, 229,
5183- 228, 227, 226, 225, 224, 223, 222, 221, 220, 219,
5184- 218, 217, 216, 214, 213, 212, 211, 210, 209, 208,
5185- 207, 206, 205, 204, 203, 202, 201, 200, 199, 198,
5186-
5187- 196, 195, 194, 193, 192, 191, 190, 189, 188, 187,
5188- 186, 185, 183, 182, 181, 179, 178, 177, 176, 174,
5189- 159, 158, 157, 156, 149, 147, 146, 145, 141, 140,
5190- 139, 138, 137, 136, 134, 133, 132, 131, 130, 129,
5191- 128, 127, 125, 123, 122, 121, 119, 118, 117, 115,
5192- 114, 112, 111, 110, 109, 108, 107, 104, 103, 102,
5193- 101, 100, 99, 98, 97, 95, 94, 93, 92, 91,
5194- 90, 89, 88, 87, 83, 79, 52, 45, 38, 32,
5195- 22, 18, 14, 12, 11, 7, 6, 5, 812, 812,
5196- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
5197-
5198- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
5199- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
5200- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
5201- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
5202- 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
5203- 812, 812, 812, 812
5204+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5205+ 3, 13, 15, 792, 16, 17, 17, 17, 17, 17,
5206+ 17, 17, 21, 21, 25, 15, 16, 26, 13, 19,
5207+ 35, 19, 19, 19, 19, 19, 19, 19, 23, 23,
5208+ 25, 36, 26, 26, 35, 36, 19, 19, 71, 30,
5209+ 27, 30, 27, 28, 19, 19, 27, 28, 37, 39,
5210+ 30, 758, 19, 19, 28, 143, 29, 28, 96, 96,
5211+
5212+ 29, 33, 37, 71, 143, 39, 29, 19, 39, 33,
5213+ 19, 20, 29, 20, 20, 20, 20, 20, 20, 20,
5214+ 40, 33, 47, 31, 47, 794, 47, 46, 20, 20,
5215+ 40, 31, 48, 48, 31, 106, 20, 31, 42, 34,
5216+ 758, 42, 34, 31, 20, 20, 34, 34, 41, 106,
5217+ 42, 34, 802, 43, 34, 41, 41, 42, 43, 20,
5218+ 41, 50, 43, 50, 44, 43, 41, 41, 44, 41,
5219+ 46, 58, 105, 58, 68, 68, 135, 48, 44, 120,
5220+ 142, 142, 124, 105, 48, 70, 70, 120, 48, 124,
5221+ 68, 68, 135, 48, 53, 53, 53, 53, 53, 53,
5222+
5223+ 53, 70, 70, 72, 144, 72, 72, 72, 72, 72,
5224+ 72, 72, 144, 148, 803, 126, 148, 804, 73, 73,
5225+ 72, 72, 73, 73, 73, 73, 73, 73, 73, 126,
5226+ 805, 116, 153, 153, 116, 116, 72, 72, 116, 152,
5227+ 116, 152, 810, 152, 154, 154, 160, 811, 160, 162,
5228+ 162, 162, 162, 162, 162, 162, 164, 164, 166, 166,
5229+ 164, 164, 164, 164, 164, 164, 164, 169, 169, 169,
5230+ 169, 169, 169, 169, 166, 166, 171, 153, 180, 184,
5231+ 184, 215, 215, 215, 153, 241, 813, 504, 153, 154,
5232+ 776, 505, 180, 153, 241, 814, 154, 504, 776, 171,
5233+
5234+ 154, 505, 167, 167, 818, 154, 167, 167, 167, 167,
5235+ 167, 167, 167, 170, 170, 170, 170, 170, 170, 170,
5236+ 247, 247, 247, 268, 268, 268, 279, 279, 279, 170,
5237+ 256, 256, 256, 256, 256, 256, 256, 257, 257, 257,
5238+ 257, 257, 257, 257, 786, 170, 288, 288, 288, 822,
5239+ 258, 258, 786, 257, 258, 258, 258, 258, 258, 258,
5240+ 258, 260, 260, 260, 260, 260, 260, 260, 825, 257,
5241+ 261, 261, 261, 261, 261, 261, 261, 292, 292, 292,
5242+ 301, 301, 301, 338, 338, 338, 261, 350, 350, 350,
5243+ 350, 350, 350, 350, 351, 351, 351, 351, 351, 351,
5244+
5245+ 351, 795, 261, 382, 382, 382, 393, 393, 393, 795,
5246+ 351, 394, 394, 394, 382, 382, 395, 395, 395, 443,
5247+ 443, 443, 483, 483, 483, 490, 351, 830, 605, 831,
5248+ 443, 443, 839, 483, 483, 519, 519, 519, 605, 490,
5249+ 490, 490, 490, 490, 490, 490, 519, 519, 533, 533,
5250+ 606, 621, 621, 796, 534, 534, 656, 656, 760, 606,
5251+ 606, 796, 533, 533, 533, 533, 533, 533, 534, 534,
5252+ 534, 534, 534, 534, 534, 554, 554, 554, 573, 573,
5253+ 573, 576, 576, 690, 690, 581, 533, 554, 578, 578,
5254+ 573, 775, 799, 840, 790, 576, 576, 576, 576, 576,
5255+
5256+ 576, 576, 578, 578, 578, 578, 578, 578, 580, 580,
5257+ 806, 533, 744, 760, 759, 808, 619, 619, 806, 744,
5258+ 581, 759, 580, 580, 580, 580, 580, 580, 580, 581,
5259+ 619, 619, 619, 619, 619, 619, 787, 798, 789, 788,
5260+ 581, 620, 620, 787, 798, 809, 775, 799, 658, 658,
5261+ 828, 785, 829, 809, 619, 620, 620, 620, 620, 620,
5262+ 620, 620, 658, 658, 658, 658, 658, 658, 660, 660,
5263+ 808, 826, 815, 819, 784, 783, 782, 781, 826, 619,
5264+ 815, 819, 660, 660, 660, 660, 660, 660, 660, 820,
5265+ 823, 828, 827, 829, 832, 833, 780, 820, 823, 827,
5266+
5267+ 779, 778, 832, 833, 836, 836, 836, 836, 836, 837,
5268+ 837, 837, 838, 838, 838, 841, 841, 842, 777, 842,
5269+ 842, 842, 843, 843, 844, 844, 774, 771, 769, 768,
5270+ 766, 763, 762, 761, 757, 756, 755, 754, 753, 752,
5271+ 751, 750, 749, 748, 747, 746, 745, 743, 742, 741,
5272+ 738, 735, 734, 733, 732, 731, 729, 728, 726, 724,
5273+ 721, 720, 719, 717, 716, 714, 713, 712, 711, 710,
5274+ 709, 708, 707, 706, 705, 704, 702, 701, 700, 699,
5275+ 698, 697, 695, 694, 693, 692, 691, 689, 688, 687,
5276+ 686, 685, 684, 683, 682, 681, 680, 679, 678, 677,
5277+
5278+ 676, 675, 674, 673, 672, 670, 669, 668, 667, 666,
5279+ 665, 664, 663, 662, 661, 654, 652, 651, 649, 648,
5280+ 647, 646, 645, 644, 643, 642, 641, 640, 639, 638,
5281+ 637, 635, 634, 633, 632, 631, 630, 629, 627, 626,
5282+ 625, 624, 623, 622, 618, 617, 616, 615, 614, 613,
5283+ 612, 611, 610, 609, 608, 607, 601, 599, 598, 597,
5284+ 596, 592, 591, 590, 589, 588, 587, 586, 585, 584,
5285+ 575, 571, 570, 568, 567, 565, 564, 563, 562, 561,
5286+ 560, 559, 558, 557, 555, 553, 552, 551, 550, 549,
5287+ 548, 547, 546, 545, 544, 542, 541, 537, 536, 535,
5288+
5289+ 532, 531, 529, 528, 526, 525, 524, 523, 522, 520,
5290+ 518, 517, 516, 515, 514, 513, 511, 510, 509, 508,
5291+ 507, 503, 502, 501, 500, 499, 498, 495, 494, 493,
5292+ 492, 491, 489, 488, 487, 486, 485, 484, 482, 481,
5293+ 474, 473, 470, 469, 466, 465, 464, 463, 452, 451,
5294+ 450, 448, 447, 446, 445, 444, 441, 439, 438, 437,
5295+ 435, 434, 432, 431, 430, 429, 427, 426, 421, 420,
5296+ 418, 417, 416, 415, 414, 413, 412, 411, 410, 409,
5297+ 407, 406, 405, 404, 403, 402, 401, 400, 399, 398,
5298+ 397, 396, 392, 388, 387, 386, 383, 381, 371, 369,
5299+
5300+ 365, 364, 363, 362, 360, 358, 353, 352, 349, 348,
5301+ 347, 346, 345, 344, 339, 337, 336, 335, 334, 333,
5302+ 331, 330, 327, 326, 325, 324, 323, 322, 321, 320,
5303+ 319, 318, 317, 316, 315, 314, 313, 312, 311, 310,
5304+ 309, 308, 307, 306, 305, 302, 300, 299, 298, 297,
5305+ 296, 295, 294, 293, 291, 287, 285, 284, 283, 282,
5306+ 278, 277, 276, 275, 274, 273, 272, 271, 267, 265,
5307+ 264, 254, 253, 252, 251, 250, 249, 248, 246, 245,
5308+ 244, 243, 242, 240, 239, 238, 237, 236, 235, 234,
5309+ 233, 232, 231, 230, 229, 228, 227, 226, 225, 224,
5310+
5311+ 223, 222, 221, 220, 219, 218, 217, 216, 214, 213,
5312+ 212, 211, 210, 209, 208, 207, 206, 205, 204, 203,
5313+ 202, 201, 200, 199, 198, 196, 195, 194, 193, 192,
5314+ 191, 190, 189, 188, 187, 186, 185, 183, 182, 181,
5315+ 179, 178, 177, 176, 174, 159, 158, 157, 156, 149,
5316+ 147, 146, 145, 141, 140, 139, 138, 137, 136, 134,
5317+ 133, 132, 131, 130, 129, 128, 127, 125, 123, 122,
5318+ 121, 119, 118, 117, 115, 114, 112, 111, 110, 109,
5319+ 108, 107, 104, 103, 102, 101, 100, 99, 98, 97,
5320+ 95, 94, 93, 92, 91, 90, 89, 88, 87, 83,
5321+
5322+ 79, 52, 45, 38, 32, 22, 18, 14, 12, 11,
5323+ 7, 6, 5, 835, 835, 835, 835, 835, 835, 835,
5324+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5325+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5326+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5327+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5328+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5329+ 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
5330+ 835, 835
5331 } ;
5332
5333 /* The intent behind this definition is that it'll catch
5334@@ -1055,7 +1067,7 @@ static yyconst flex_int16_t yy_chk[1255] =
5335 */
5336 #define ES yyextra->es_shader
5337
5338-#line 1059 "glsl_lexer.cpp"
5339+#line 1071 "glsl_lexer.cpp"
5340
5341 #define INITIAL 0
5342 #define PP 1
5343@@ -1142,6 +1154,10 @@ int _mesa_glsl_get_lineno (yyscan_t yyscanner );
5344
5345 void _mesa_glsl_set_lineno (int line_number ,yyscan_t yyscanner );
5346
5347+int _mesa_glsl_get_column (yyscan_t yyscanner );
5348+
5349+void _mesa_glsl_set_column (int column_no ,yyscan_t yyscanner );
5350+
5351 YYSTYPE * _mesa_glsl_get_lval (yyscan_t yyscanner );
5352
5353 void _mesa_glsl_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
5354@@ -1292,7 +1308,7 @@ YY_DECL
5355 #line 95 "glsl_lexer.lpp"
5356
5357
5358-#line 1296 "glsl_lexer.cpp"
5359+#line 1312 "glsl_lexer.cpp"
5360
5361 yylval = yylval_param;
5362
5363@@ -1350,13 +1366,13 @@ yy_match:
5364 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5365 {
5366 yy_current_state = (int) yy_def[yy_current_state];
5367- if ( yy_current_state >= 813 )
5368+ if ( yy_current_state >= 836 )
5369 yy_c = yy_meta[(unsigned int) yy_c];
5370 }
5371 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
5372 ++yy_cp;
5373 }
5374- while ( yy_current_state != 812 );
5375+ while ( yy_current_state != 835 );
5376 yy_cp = yyg->yy_last_accepting_cpos;
5377 yy_current_state = yyg->yy_last_accepting_state;
5378
5379@@ -1478,435 +1494,443 @@ YY_RULE_SETUP
5380 case 11:
5381 YY_RULE_SETUP
5382 #line 148 "glsl_lexer.lpp"
5383-{ BEGIN PRAGMA; }
5384+{
5385+ BEGIN PP;
5386+ return PRAGMA_INVARIANT_ALL;
5387+ }
5388 YY_BREAK
5389 case 12:
5390-/* rule 12 can match eol */
5391 YY_RULE_SETUP
5392-#line 150 "glsl_lexer.lpp"
5393-{ BEGIN 0; yylineno++; yycolumn = 0; }
5394+#line 152 "glsl_lexer.lpp"
5395+{ BEGIN PRAGMA; }
5396 YY_BREAK
5397 case 13:
5398+/* rule 13 can match eol */
5399 YY_RULE_SETUP
5400-#line 151 "glsl_lexer.lpp"
5401-{ }
5402+#line 154 "glsl_lexer.lpp"
5403+{ BEGIN 0; yylineno++; yycolumn = 0; }
5404 YY_BREAK
5405 case 14:
5406 YY_RULE_SETUP
5407-#line 153 "glsl_lexer.lpp"
5408+#line 155 "glsl_lexer.lpp"
5409 { }
5410 YY_BREAK
5411 case 15:
5412 YY_RULE_SETUP
5413-#line 154 "glsl_lexer.lpp"
5414+#line 157 "glsl_lexer.lpp"
5415 { }
5416 YY_BREAK
5417 case 16:
5418 YY_RULE_SETUP
5419-#line 155 "glsl_lexer.lpp"
5420-return COLON;
5421+#line 158 "glsl_lexer.lpp"
5422+{ }
5423 YY_BREAK
5424 case 17:
5425 YY_RULE_SETUP
5426-#line 156 "glsl_lexer.lpp"
5427+#line 159 "glsl_lexer.lpp"
5428+return COLON;
5429+ YY_BREAK
5430+case 18:
5431+YY_RULE_SETUP
5432+#line 160 "glsl_lexer.lpp"
5433 {
5434 yylval->identifier = strdup(yytext);
5435 return IDENTIFIER;
5436 }
5437 YY_BREAK
5438-case 18:
5439+case 19:
5440 YY_RULE_SETUP
5441-#line 160 "glsl_lexer.lpp"
5442+#line 164 "glsl_lexer.lpp"
5443 {
5444 yylval->n = strtol(yytext, NULL, 10);
5445 return INTCONSTANT;
5446 }
5447 YY_BREAK
5448-case 19:
5449-/* rule 19 can match eol */
5450+case 20:
5451+/* rule 20 can match eol */
5452 YY_RULE_SETUP
5453-#line 164 "glsl_lexer.lpp"
5454+#line 168 "glsl_lexer.lpp"
5455 { BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
5456 YY_BREAK
5457-case 20:
5458-/* rule 20 can match eol */
5459+case 21:
5460+/* rule 21 can match eol */
5461 YY_RULE_SETUP
5462-#line 166 "glsl_lexer.lpp"
5463+#line 170 "glsl_lexer.lpp"
5464 { yylineno++; yycolumn = 0; }
5465 YY_BREAK
5466-case 21:
5467+case 22:
5468 YY_RULE_SETUP
5469-#line 168 "glsl_lexer.lpp"
5470+#line 172 "glsl_lexer.lpp"
5471 return ATTRIBUTE;
5472 YY_BREAK
5473-case 22:
5474+case 23:
5475 YY_RULE_SETUP
5476-#line 169 "glsl_lexer.lpp"
5477+#line 173 "glsl_lexer.lpp"
5478 return CONST_TOK;
5479 YY_BREAK
5480-case 23:
5481+case 24:
5482 YY_RULE_SETUP
5483-#line 170 "glsl_lexer.lpp"
5484+#line 174 "glsl_lexer.lpp"
5485 return BOOL_TOK;
5486 YY_BREAK
5487-case 24:
5488+case 25:
5489 YY_RULE_SETUP
5490-#line 171 "glsl_lexer.lpp"
5491+#line 175 "glsl_lexer.lpp"
5492 return FLOAT_TOK;
5493 YY_BREAK
5494-case 25:
5495+case 26:
5496 YY_RULE_SETUP
5497-#line 172 "glsl_lexer.lpp"
5498+#line 176 "glsl_lexer.lpp"
5499 return INT_TOK;
5500 YY_BREAK
5501-case 26:
5502+case 27:
5503 YY_RULE_SETUP
5504-#line 173 "glsl_lexer.lpp"
5505+#line 177 "glsl_lexer.lpp"
5506 KEYWORD(130, 130, UINT_TOK);
5507 YY_BREAK
5508-case 27:
5509+case 28:
5510 YY_RULE_SETUP
5511-#line 175 "glsl_lexer.lpp"
5512+#line 179 "glsl_lexer.lpp"
5513 return BREAK;
5514 YY_BREAK
5515-case 28:
5516+case 29:
5517 YY_RULE_SETUP
5518-#line 176 "glsl_lexer.lpp"
5519+#line 180 "glsl_lexer.lpp"
5520 return CONTINUE;
5521 YY_BREAK
5522-case 29:
5523+case 30:
5524 YY_RULE_SETUP
5525-#line 177 "glsl_lexer.lpp"
5526+#line 181 "glsl_lexer.lpp"
5527 return DO;
5528 YY_BREAK
5529-case 30:
5530+case 31:
5531 YY_RULE_SETUP
5532-#line 178 "glsl_lexer.lpp"
5533+#line 182 "glsl_lexer.lpp"
5534 return WHILE;
5535 YY_BREAK
5536-case 31:
5537+case 32:
5538 YY_RULE_SETUP
5539-#line 179 "glsl_lexer.lpp"
5540+#line 183 "glsl_lexer.lpp"
5541 return ELSE;
5542 YY_BREAK
5543-case 32:
5544+case 33:
5545 YY_RULE_SETUP
5546-#line 180 "glsl_lexer.lpp"
5547+#line 184 "glsl_lexer.lpp"
5548 return FOR;
5549 YY_BREAK
5550-case 33:
5551+case 34:
5552 YY_RULE_SETUP
5553-#line 181 "glsl_lexer.lpp"
5554+#line 185 "glsl_lexer.lpp"
5555 return IF;
5556 YY_BREAK
5557-case 34:
5558+case 35:
5559 YY_RULE_SETUP
5560-#line 182 "glsl_lexer.lpp"
5561+#line 186 "glsl_lexer.lpp"
5562 return DISCARD;
5563 YY_BREAK
5564-case 35:
5565+case 36:
5566 YY_RULE_SETUP
5567-#line 183 "glsl_lexer.lpp"
5568+#line 187 "glsl_lexer.lpp"
5569 return RETURN;
5570 YY_BREAK
5571-case 36:
5572+case 37:
5573 YY_RULE_SETUP
5574-#line 185 "glsl_lexer.lpp"
5575+#line 189 "glsl_lexer.lpp"
5576 return BVEC2;
5577 YY_BREAK
5578-case 37:
5579+case 38:
5580 YY_RULE_SETUP
5581-#line 186 "glsl_lexer.lpp"
5582+#line 190 "glsl_lexer.lpp"
5583 return BVEC3;
5584 YY_BREAK
5585-case 38:
5586+case 39:
5587 YY_RULE_SETUP
5588-#line 187 "glsl_lexer.lpp"
5589+#line 191 "glsl_lexer.lpp"
5590 return BVEC4;
5591 YY_BREAK
5592-case 39:
5593+case 40:
5594 YY_RULE_SETUP
5595-#line 188 "glsl_lexer.lpp"
5596+#line 192 "glsl_lexer.lpp"
5597 return IVEC2;
5598 YY_BREAK
5599-case 40:
5600+case 41:
5601 YY_RULE_SETUP
5602-#line 189 "glsl_lexer.lpp"
5603+#line 193 "glsl_lexer.lpp"
5604 return IVEC3;
5605 YY_BREAK
5606-case 41:
5607+case 42:
5608 YY_RULE_SETUP
5609-#line 190 "glsl_lexer.lpp"
5610+#line 194 "glsl_lexer.lpp"
5611 return IVEC4;
5612 YY_BREAK
5613-case 42:
5614+case 43:
5615 YY_RULE_SETUP
5616-#line 191 "glsl_lexer.lpp"
5617+#line 195 "glsl_lexer.lpp"
5618 KEYWORD(130, 130, UVEC2);
5619 YY_BREAK
5620-case 43:
5621+case 44:
5622 YY_RULE_SETUP
5623-#line 192 "glsl_lexer.lpp"
5624+#line 196 "glsl_lexer.lpp"
5625 KEYWORD(130, 130, UVEC3);
5626 YY_BREAK
5627-case 44:
5628+case 45:
5629 YY_RULE_SETUP
5630-#line 193 "glsl_lexer.lpp"
5631+#line 197 "glsl_lexer.lpp"
5632 KEYWORD(130, 130, UVEC4);
5633 YY_BREAK
5634-case 45:
5635+case 46:
5636 YY_RULE_SETUP
5637-#line 194 "glsl_lexer.lpp"
5638+#line 198 "glsl_lexer.lpp"
5639 return VEC2;
5640 YY_BREAK
5641-case 46:
5642+case 47:
5643 YY_RULE_SETUP
5644-#line 195 "glsl_lexer.lpp"
5645+#line 199 "glsl_lexer.lpp"
5646 return VEC3;
5647 YY_BREAK
5648-case 47:
5649+case 48:
5650 YY_RULE_SETUP
5651-#line 196 "glsl_lexer.lpp"
5652+#line 200 "glsl_lexer.lpp"
5653 return VEC4;
5654 YY_BREAK
5655-case 48:
5656+case 49:
5657 YY_RULE_SETUP
5658-#line 197 "glsl_lexer.lpp"
5659+#line 201 "glsl_lexer.lpp"
5660 return MAT2X2;
5661 YY_BREAK
5662-case 49:
5663+case 50:
5664 YY_RULE_SETUP
5665-#line 198 "glsl_lexer.lpp"
5666+#line 202 "glsl_lexer.lpp"
5667 return MAT3X3;
5668 YY_BREAK
5669-case 50:
5670+case 51:
5671 YY_RULE_SETUP
5672-#line 199 "glsl_lexer.lpp"
5673+#line 203 "glsl_lexer.lpp"
5674 return MAT4X4;
5675 YY_BREAK
5676-case 51:
5677+case 52:
5678 YY_RULE_SETUP
5679-#line 200 "glsl_lexer.lpp"
5680+#line 204 "glsl_lexer.lpp"
5681 KEYWORD(120, 120, MAT2X2);
5682 YY_BREAK
5683-case 52:
5684+case 53:
5685 YY_RULE_SETUP
5686-#line 201 "glsl_lexer.lpp"
5687+#line 205 "glsl_lexer.lpp"
5688 KEYWORD(120, 120, MAT2X3);
5689 YY_BREAK
5690-case 53:
5691+case 54:
5692 YY_RULE_SETUP
5693-#line 202 "glsl_lexer.lpp"
5694+#line 206 "glsl_lexer.lpp"
5695 KEYWORD(120, 120, MAT2X4);
5696 YY_BREAK
5697-case 54:
5698+case 55:
5699 YY_RULE_SETUP
5700-#line 203 "glsl_lexer.lpp"
5701+#line 207 "glsl_lexer.lpp"
5702 KEYWORD(120, 120, MAT3X2);
5703 YY_BREAK
5704-case 55:
5705+case 56:
5706 YY_RULE_SETUP
5707-#line 204 "glsl_lexer.lpp"
5708+#line 208 "glsl_lexer.lpp"
5709 KEYWORD(120, 120, MAT3X3);
5710 YY_BREAK
5711-case 56:
5712+case 57:
5713 YY_RULE_SETUP
5714-#line 205 "glsl_lexer.lpp"
5715+#line 209 "glsl_lexer.lpp"
5716 KEYWORD(120, 120, MAT3X4);
5717 YY_BREAK
5718-case 57:
5719+case 58:
5720 YY_RULE_SETUP
5721-#line 206 "glsl_lexer.lpp"
5722+#line 210 "glsl_lexer.lpp"
5723 KEYWORD(120, 120, MAT4X2);
5724 YY_BREAK
5725-case 58:
5726+case 59:
5727 YY_RULE_SETUP
5728-#line 207 "glsl_lexer.lpp"
5729+#line 211 "glsl_lexer.lpp"
5730 KEYWORD(120, 120, MAT4X3);
5731 YY_BREAK
5732-case 59:
5733+case 60:
5734 YY_RULE_SETUP
5735-#line 208 "glsl_lexer.lpp"
5736+#line 212 "glsl_lexer.lpp"
5737 KEYWORD(120, 120, MAT4X4);
5738 YY_BREAK
5739-case 60:
5740+case 61:
5741 YY_RULE_SETUP
5742-#line 210 "glsl_lexer.lpp"
5743+#line 214 "glsl_lexer.lpp"
5744 return IN_TOK;
5745 YY_BREAK
5746-case 61:
5747+case 62:
5748 YY_RULE_SETUP
5749-#line 211 "glsl_lexer.lpp"
5750+#line 215 "glsl_lexer.lpp"
5751 return OUT_TOK;
5752 YY_BREAK
5753-case 62:
5754+case 63:
5755 YY_RULE_SETUP
5756-#line 212 "glsl_lexer.lpp"
5757+#line 216 "glsl_lexer.lpp"
5758 return INOUT_TOK;
5759 YY_BREAK
5760-case 63:
5761+case 64:
5762 YY_RULE_SETUP
5763-#line 213 "glsl_lexer.lpp"
5764+#line 217 "glsl_lexer.lpp"
5765 return UNIFORM;
5766 YY_BREAK
5767-case 64:
5768+case 65:
5769 YY_RULE_SETUP
5770-#line 214 "glsl_lexer.lpp"
5771+#line 218 "glsl_lexer.lpp"
5772 return VARYING;
5773 YY_BREAK
5774-case 65:
5775+case 66:
5776 YY_RULE_SETUP
5777-#line 215 "glsl_lexer.lpp"
5778+#line 219 "glsl_lexer.lpp"
5779 KEYWORD(120, 120, CENTROID);
5780 YY_BREAK
5781-case 66:
5782+case 67:
5783 YY_RULE_SETUP
5784-#line 216 "glsl_lexer.lpp"
5785+#line 220 "glsl_lexer.lpp"
5786 KEYWORD(120 || ES, 120 || ES, INVARIANT);
5787 YY_BREAK
5788-case 67:
5789+case 68:
5790 YY_RULE_SETUP
5791-#line 217 "glsl_lexer.lpp"
5792+#line 221 "glsl_lexer.lpp"
5793 KEYWORD(130 || ES, 130, FLAT);
5794 YY_BREAK
5795-case 68:
5796+case 69:
5797 YY_RULE_SETUP
5798-#line 218 "glsl_lexer.lpp"
5799+#line 222 "glsl_lexer.lpp"
5800 KEYWORD(130, 130, SMOOTH);
5801 YY_BREAK
5802-case 69:
5803+case 70:
5804 YY_RULE_SETUP
5805-#line 219 "glsl_lexer.lpp"
5806+#line 223 "glsl_lexer.lpp"
5807 KEYWORD(130, 130, NOPERSPECTIVE);
5808 YY_BREAK
5809-case 70:
5810+case 71:
5811 YY_RULE_SETUP
5812-#line 221 "glsl_lexer.lpp"
5813+#line 225 "glsl_lexer.lpp"
5814 return SAMPLER1D;
5815 YY_BREAK
5816-case 71:
5817+case 72:
5818 YY_RULE_SETUP
5819-#line 222 "glsl_lexer.lpp"
5820+#line 226 "glsl_lexer.lpp"
5821 return SAMPLER2D;
5822 YY_BREAK
5823-case 72:
5824+case 73:
5825 YY_RULE_SETUP
5826-#line 223 "glsl_lexer.lpp"
5827+#line 227 "glsl_lexer.lpp"
5828 return SAMPLER3D;
5829 YY_BREAK
5830-case 73:
5831+case 74:
5832 YY_RULE_SETUP
5833-#line 224 "glsl_lexer.lpp"
5834+#line 228 "glsl_lexer.lpp"
5835 return SAMPLERCUBE;
5836 YY_BREAK
5837-case 74:
5838+case 75:
5839 YY_RULE_SETUP
5840-#line 225 "glsl_lexer.lpp"
5841+#line 229 "glsl_lexer.lpp"
5842 KEYWORD(130, 130, SAMPLER1DARRAY);
5843 YY_BREAK
5844-case 75:
5845+case 76:
5846 YY_RULE_SETUP
5847-#line 226 "glsl_lexer.lpp"
5848+#line 230 "glsl_lexer.lpp"
5849 KEYWORD(130, 130, SAMPLER2DARRAY);
5850 YY_BREAK
5851-case 76:
5852+case 77:
5853 YY_RULE_SETUP
5854-#line 227 "glsl_lexer.lpp"
5855+#line 231 "glsl_lexer.lpp"
5856 return SAMPLER1DSHADOW;
5857 YY_BREAK
5858-case 77:
5859+case 78:
5860 YY_RULE_SETUP
5861-#line 228 "glsl_lexer.lpp"
5862+#line 232 "glsl_lexer.lpp"
5863 return SAMPLER2DSHADOW;
5864 YY_BREAK
5865-case 78:
5866+case 79:
5867 YY_RULE_SETUP
5868-#line 229 "glsl_lexer.lpp"
5869+#line 233 "glsl_lexer.lpp"
5870 KEYWORD(130, 130, SAMPLERCUBESHADOW);
5871 YY_BREAK
5872-case 79:
5873+case 80:
5874 YY_RULE_SETUP
5875-#line 230 "glsl_lexer.lpp"
5876+#line 234 "glsl_lexer.lpp"
5877 KEYWORD(130, 130, SAMPLER1DARRAYSHADOW);
5878 YY_BREAK
5879-case 80:
5880+case 81:
5881 YY_RULE_SETUP
5882-#line 231 "glsl_lexer.lpp"
5883+#line 235 "glsl_lexer.lpp"
5884 KEYWORD(130, 130, SAMPLER2DARRAYSHADOW);
5885 YY_BREAK
5886-case 81:
5887+case 82:
5888 YY_RULE_SETUP
5889-#line 232 "glsl_lexer.lpp"
5890+#line 236 "glsl_lexer.lpp"
5891 KEYWORD(130, 130, ISAMPLER1D);
5892 YY_BREAK
5893-case 82:
5894+case 83:
5895 YY_RULE_SETUP
5896-#line 233 "glsl_lexer.lpp"
5897+#line 237 "glsl_lexer.lpp"
5898 KEYWORD(130, 130, ISAMPLER2D);
5899 YY_BREAK
5900-case 83:
5901+case 84:
5902 YY_RULE_SETUP
5903-#line 234 "glsl_lexer.lpp"
5904+#line 238 "glsl_lexer.lpp"
5905 KEYWORD(130, 130, ISAMPLER3D);
5906 YY_BREAK
5907-case 84:
5908+case 85:
5909 YY_RULE_SETUP
5910-#line 235 "glsl_lexer.lpp"
5911+#line 239 "glsl_lexer.lpp"
5912 KEYWORD(130, 130, ISAMPLERCUBE);
5913 YY_BREAK
5914-case 85:
5915+case 86:
5916 YY_RULE_SETUP
5917-#line 236 "glsl_lexer.lpp"
5918+#line 240 "glsl_lexer.lpp"
5919 KEYWORD(130, 130, ISAMPLER1DARRAY);
5920 YY_BREAK
5921-case 86:
5922+case 87:
5923 YY_RULE_SETUP
5924-#line 237 "glsl_lexer.lpp"
5925+#line 241 "glsl_lexer.lpp"
5926 KEYWORD(130, 130, ISAMPLER2DARRAY);
5927 YY_BREAK
5928-case 87:
5929+case 88:
5930 YY_RULE_SETUP
5931-#line 238 "glsl_lexer.lpp"
5932+#line 242 "glsl_lexer.lpp"
5933 KEYWORD(130, 130, USAMPLER1D);
5934 YY_BREAK
5935-case 88:
5936+case 89:
5937 YY_RULE_SETUP
5938-#line 239 "glsl_lexer.lpp"
5939+#line 243 "glsl_lexer.lpp"
5940 KEYWORD(130, 130, USAMPLER2D);
5941 YY_BREAK
5942-case 89:
5943+case 90:
5944 YY_RULE_SETUP
5945-#line 240 "glsl_lexer.lpp"
5946+#line 244 "glsl_lexer.lpp"
5947 KEYWORD(130, 130, USAMPLER3D);
5948 YY_BREAK
5949-case 90:
5950+case 91:
5951 YY_RULE_SETUP
5952-#line 241 "glsl_lexer.lpp"
5953+#line 245 "glsl_lexer.lpp"
5954 KEYWORD(130, 130, USAMPLERCUBE);
5955 YY_BREAK
5956-case 91:
5957+case 92:
5958 YY_RULE_SETUP
5959-#line 242 "glsl_lexer.lpp"
5960+#line 246 "glsl_lexer.lpp"
5961 KEYWORD(130, 130, USAMPLER1DARRAY);
5962 YY_BREAK
5963-case 92:
5964+case 93:
5965 YY_RULE_SETUP
5966-#line 243 "glsl_lexer.lpp"
5967+#line 247 "glsl_lexer.lpp"
5968 KEYWORD(130, 130, USAMPLER2DARRAY);
5969 YY_BREAK
5970-case 93:
5971+case 94:
5972 YY_RULE_SETUP
5973-#line 246 "glsl_lexer.lpp"
5974+#line 250 "glsl_lexer.lpp"
5975 return STRUCT;
5976 YY_BREAK
5977-case 94:
5978+case 95:
5979 YY_RULE_SETUP
5980-#line 247 "glsl_lexer.lpp"
5981+#line 251 "glsl_lexer.lpp"
5982 return VOID_TOK;
5983 YY_BREAK
5984-case 95:
5985+case 96:
5986 YY_RULE_SETUP
5987-#line 249 "glsl_lexer.lpp"
5988+#line 253 "glsl_lexer.lpp"
5989 {
5990 if ((yyextra->language_version >= 140)
5991 || yyextra->ARB_explicit_attrib_location_enable
5992@@ -1918,124 +1942,116 @@ YY_RULE_SETUP
5993 }
5994 }
5995 YY_BREAK
5996-case 96:
5997-YY_RULE_SETUP
5998-#line 260 "glsl_lexer.lpp"
5999-return INC_OP;
6000- YY_BREAK
6001 case 97:
6002 YY_RULE_SETUP
6003-#line 261 "glsl_lexer.lpp"
6004-return DEC_OP;
6005+#line 264 "glsl_lexer.lpp"
6006+return INC_OP;
6007 YY_BREAK
6008 case 98:
6009 YY_RULE_SETUP
6010-#line 262 "glsl_lexer.lpp"
6011-return LE_OP;
6012+#line 265 "glsl_lexer.lpp"
6013+return DEC_OP;
6014 YY_BREAK
6015 case 99:
6016 YY_RULE_SETUP
6017-#line 263 "glsl_lexer.lpp"
6018-return GE_OP;
6019+#line 266 "glsl_lexer.lpp"
6020+return LE_OP;
6021 YY_BREAK
6022 case 100:
6023 YY_RULE_SETUP
6024-#line 264 "glsl_lexer.lpp"
6025-return EQ_OP;
6026+#line 267 "glsl_lexer.lpp"
6027+return GE_OP;
6028 YY_BREAK
6029 case 101:
6030 YY_RULE_SETUP
6031-#line 265 "glsl_lexer.lpp"
6032-return NE_OP;
6033+#line 268 "glsl_lexer.lpp"
6034+return EQ_OP;
6035 YY_BREAK
6036 case 102:
6037 YY_RULE_SETUP
6038-#line 266 "glsl_lexer.lpp"
6039-return AND_OP;
6040+#line 269 "glsl_lexer.lpp"
6041+return NE_OP;
6042 YY_BREAK
6043 case 103:
6044 YY_RULE_SETUP
6045-#line 267 "glsl_lexer.lpp"
6046-return OR_OP;
6047+#line 270 "glsl_lexer.lpp"
6048+return AND_OP;
6049 YY_BREAK
6050 case 104:
6051 YY_RULE_SETUP
6052-#line 268 "glsl_lexer.lpp"
6053-return XOR_OP;
6054+#line 271 "glsl_lexer.lpp"
6055+return OR_OP;
6056 YY_BREAK
6057 case 105:
6058 YY_RULE_SETUP
6059-#line 269 "glsl_lexer.lpp"
6060-return LEFT_OP;
6061+#line 272 "glsl_lexer.lpp"
6062+return XOR_OP;
6063 YY_BREAK
6064 case 106:
6065 YY_RULE_SETUP
6066-#line 270 "glsl_lexer.lpp"
6067-return RIGHT_OP;
6068+#line 273 "glsl_lexer.lpp"
6069+return LEFT_OP;
6070 YY_BREAK
6071 case 107:
6072 YY_RULE_SETUP
6073-#line 272 "glsl_lexer.lpp"
6074-return MUL_ASSIGN;
6075+#line 274 "glsl_lexer.lpp"
6076+return RIGHT_OP;
6077 YY_BREAK
6078 case 108:
6079 YY_RULE_SETUP
6080-#line 273 "glsl_lexer.lpp"
6081-return DIV_ASSIGN;
6082+#line 276 "glsl_lexer.lpp"
6083+return MUL_ASSIGN;
6084 YY_BREAK
6085 case 109:
6086 YY_RULE_SETUP
6087-#line 274 "glsl_lexer.lpp"
6088-return ADD_ASSIGN;
6089+#line 277 "glsl_lexer.lpp"
6090+return DIV_ASSIGN;
6091 YY_BREAK
6092 case 110:
6093 YY_RULE_SETUP
6094-#line 275 "glsl_lexer.lpp"
6095-return MOD_ASSIGN;
6096+#line 278 "glsl_lexer.lpp"
6097+return ADD_ASSIGN;
6098 YY_BREAK
6099 case 111:
6100 YY_RULE_SETUP
6101-#line 276 "glsl_lexer.lpp"
6102-return LEFT_ASSIGN;
6103+#line 279 "glsl_lexer.lpp"
6104+return MOD_ASSIGN;
6105 YY_BREAK
6106 case 112:
6107 YY_RULE_SETUP
6108-#line 277 "glsl_lexer.lpp"
6109-return RIGHT_ASSIGN;
6110+#line 280 "glsl_lexer.lpp"
6111+return LEFT_ASSIGN;
6112 YY_BREAK
6113 case 113:
6114 YY_RULE_SETUP
6115-#line 278 "glsl_lexer.lpp"
6116-return AND_ASSIGN;
6117+#line 281 "glsl_lexer.lpp"
6118+return RIGHT_ASSIGN;
6119 YY_BREAK
6120 case 114:
6121 YY_RULE_SETUP
6122-#line 279 "glsl_lexer.lpp"
6123-return XOR_ASSIGN;
6124+#line 282 "glsl_lexer.lpp"
6125+return AND_ASSIGN;
6126 YY_BREAK
6127 case 115:
6128 YY_RULE_SETUP
6129-#line 280 "glsl_lexer.lpp"
6130-return OR_ASSIGN;
6131+#line 283 "glsl_lexer.lpp"
6132+return XOR_ASSIGN;
6133 YY_BREAK
6134 case 116:
6135 YY_RULE_SETUP
6136-#line 281 "glsl_lexer.lpp"
6137-return SUB_ASSIGN;
6138+#line 284 "glsl_lexer.lpp"
6139+return OR_ASSIGN;
6140 YY_BREAK
6141 case 117:
6142 YY_RULE_SETUP
6143-#line 283 "glsl_lexer.lpp"
6144-{
6145- yylval->n = strtol(yytext, NULL, 10);
6146- return IS_UINT ? UINTCONSTANT : INTCONSTANT;
6147- }
6148+#line 285 "glsl_lexer.lpp"
6149+return SUB_ASSIGN;
6150 YY_BREAK
6151 case 118:
6152 YY_RULE_SETUP
6153 #line 287 "glsl_lexer.lpp"
6154 {
6155- yylval->n = strtol(yytext + 2, NULL, 16);
6156+ yylval->n = strtol(yytext, NULL, 10);
6157 return IS_UINT ? UINTCONSTANT : INTCONSTANT;
6158 }
6159 YY_BREAK
6160@@ -2043,16 +2059,16 @@ case 119:
6161 YY_RULE_SETUP
6162 #line 291 "glsl_lexer.lpp"
6163 {
6164- yylval->n = strtol(yytext, NULL, 8);
6165+ yylval->n = strtol(yytext + 2, NULL, 16);
6166 return IS_UINT ? UINTCONSTANT : INTCONSTANT;
6167 }
6168 YY_BREAK
6169 case 120:
6170 YY_RULE_SETUP
6171-#line 296 "glsl_lexer.lpp"
6172+#line 295 "glsl_lexer.lpp"
6173 {
6174- yylval->real = glsl_strtod(yytext, NULL);
6175- return FLOATCONSTANT;
6176+ yylval->n = strtol(yytext, NULL, 8);
6177+ return IS_UINT ? UINTCONSTANT : INTCONSTANT;
6178 }
6179 YY_BREAK
6180 case 121:
6181@@ -2089,444 +2105,452 @@ YY_RULE_SETUP
6182 YY_BREAK
6183 case 125:
6184 YY_RULE_SETUP
6185-#line 317 "glsl_lexer.lpp"
6186+#line 316 "glsl_lexer.lpp"
6187 {
6188- yylval->n = 1;
6189- return BOOLCONSTANT;
6190+ yylval->real = glsl_strtod(yytext, NULL);
6191+ return FLOATCONSTANT;
6192 }
6193 YY_BREAK
6194 case 126:
6195 YY_RULE_SETUP
6196 #line 321 "glsl_lexer.lpp"
6197 {
6198+ yylval->n = 1;
6199+ return BOOLCONSTANT;
6200+ }
6201+ YY_BREAK
6202+case 127:
6203+YY_RULE_SETUP
6204+#line 325 "glsl_lexer.lpp"
6205+{
6206 yylval->n = 0;
6207 return BOOLCONSTANT;
6208 }
6209 YY_BREAK
6210 /* Reserved words in GLSL 1.10. */
6211-case 127:
6212+case 128:
6213 YY_RULE_SETUP
6214-#line 328 "glsl_lexer.lpp"
6215+#line 332 "glsl_lexer.lpp"
6216 KEYWORD(110 || ES, 999, ASM);
6217 YY_BREAK
6218-case 128:
6219+case 129:
6220 YY_RULE_SETUP
6221-#line 329 "glsl_lexer.lpp"
6222+#line 333 "glsl_lexer.lpp"
6223 KEYWORD(110 || ES, 999, CLASS);
6224 YY_BREAK
6225-case 129:
6226+case 130:
6227 YY_RULE_SETUP
6228-#line 330 "glsl_lexer.lpp"
6229+#line 334 "glsl_lexer.lpp"
6230 KEYWORD(110 || ES, 999, UNION);
6231 YY_BREAK
6232-case 130:
6233+case 131:
6234 YY_RULE_SETUP
6235-#line 331 "glsl_lexer.lpp"
6236+#line 335 "glsl_lexer.lpp"
6237 KEYWORD(110 || ES, 999, ENUM);
6238 YY_BREAK
6239-case 131:
6240+case 132:
6241 YY_RULE_SETUP
6242-#line 332 "glsl_lexer.lpp"
6243+#line 336 "glsl_lexer.lpp"
6244 KEYWORD(110 || ES, 999, TYPEDEF);
6245 YY_BREAK
6246-case 132:
6247+case 133:
6248 YY_RULE_SETUP
6249-#line 333 "glsl_lexer.lpp"
6250+#line 337 "glsl_lexer.lpp"
6251 KEYWORD(110 || ES, 999, TEMPLATE);
6252 YY_BREAK
6253-case 133:
6254+case 134:
6255 YY_RULE_SETUP
6256-#line 334 "glsl_lexer.lpp"
6257+#line 338 "glsl_lexer.lpp"
6258 KEYWORD(110 || ES, 999, THIS);
6259 YY_BREAK
6260-case 134:
6261+case 135:
6262 YY_RULE_SETUP
6263-#line 335 "glsl_lexer.lpp"
6264+#line 339 "glsl_lexer.lpp"
6265 KEYWORD(110 || ES, 999, PACKED_TOK);
6266 YY_BREAK
6267-case 135:
6268+case 136:
6269 YY_RULE_SETUP
6270-#line 336 "glsl_lexer.lpp"
6271+#line 340 "glsl_lexer.lpp"
6272 KEYWORD(110 || ES, 999, GOTO);
6273 YY_BREAK
6274-case 136:
6275+case 137:
6276 YY_RULE_SETUP
6277-#line 337 "glsl_lexer.lpp"
6278+#line 341 "glsl_lexer.lpp"
6279 KEYWORD(110 || ES, 130, SWITCH);
6280 YY_BREAK
6281-case 137:
6282+case 138:
6283 YY_RULE_SETUP
6284-#line 338 "glsl_lexer.lpp"
6285+#line 342 "glsl_lexer.lpp"
6286 KEYWORD(110 || ES, 130, DEFAULT);
6287 YY_BREAK
6288-case 138:
6289+case 139:
6290 YY_RULE_SETUP
6291-#line 339 "glsl_lexer.lpp"
6292+#line 343 "glsl_lexer.lpp"
6293 KEYWORD(110 || ES, 999, INLINE_TOK);
6294 YY_BREAK
6295-case 139:
6296+case 140:
6297 YY_RULE_SETUP
6298-#line 340 "glsl_lexer.lpp"
6299+#line 344 "glsl_lexer.lpp"
6300 KEYWORD(110 || ES, 999, NOINLINE);
6301 YY_BREAK
6302-case 140:
6303+case 141:
6304 YY_RULE_SETUP
6305-#line 341 "glsl_lexer.lpp"
6306+#line 345 "glsl_lexer.lpp"
6307 KEYWORD(110 || ES, 999, VOLATILE);
6308 YY_BREAK
6309-case 141:
6310+case 142:
6311 YY_RULE_SETUP
6312-#line 342 "glsl_lexer.lpp"
6313+#line 346 "glsl_lexer.lpp"
6314 KEYWORD(110 || ES, 999, PUBLIC_TOK);
6315 YY_BREAK
6316-case 142:
6317+case 143:
6318 YY_RULE_SETUP
6319-#line 343 "glsl_lexer.lpp"
6320+#line 347 "glsl_lexer.lpp"
6321 KEYWORD(110 || ES, 999, STATIC);
6322 YY_BREAK
6323-case 143:
6324+case 144:
6325 YY_RULE_SETUP
6326-#line 344 "glsl_lexer.lpp"
6327+#line 348 "glsl_lexer.lpp"
6328 KEYWORD(110 || ES, 999, EXTERN);
6329 YY_BREAK
6330-case 144:
6331+case 145:
6332 YY_RULE_SETUP
6333-#line 345 "glsl_lexer.lpp"
6334+#line 349 "glsl_lexer.lpp"
6335 KEYWORD(110 || ES, 999, EXTERNAL);
6336 YY_BREAK
6337-case 145:
6338+case 146:
6339 YY_RULE_SETUP
6340-#line 346 "glsl_lexer.lpp"
6341+#line 350 "glsl_lexer.lpp"
6342 KEYWORD(110 || ES, 999, INTERFACE);
6343 YY_BREAK
6344-case 146:
6345+case 147:
6346 YY_RULE_SETUP
6347-#line 347 "glsl_lexer.lpp"
6348+#line 351 "glsl_lexer.lpp"
6349 KEYWORD(110 || ES, 999, LONG_TOK);
6350 YY_BREAK
6351-case 147:
6352+case 148:
6353 YY_RULE_SETUP
6354-#line 348 "glsl_lexer.lpp"
6355+#line 352 "glsl_lexer.lpp"
6356 KEYWORD(110 || ES, 999, SHORT_TOK);
6357 YY_BREAK
6358-case 148:
6359+case 149:
6360 YY_RULE_SETUP
6361-#line 349 "glsl_lexer.lpp"
6362+#line 353 "glsl_lexer.lpp"
6363 KEYWORD(110 || ES, 400, DOUBLE_TOK);
6364 YY_BREAK
6365-case 149:
6366+case 150:
6367 YY_RULE_SETUP
6368-#line 350 "glsl_lexer.lpp"
6369+#line 354 "glsl_lexer.lpp"
6370 KEYWORD(110 || ES, 999, HALF);
6371 YY_BREAK
6372-case 150:
6373+case 151:
6374 YY_RULE_SETUP
6375-#line 351 "glsl_lexer.lpp"
6376+#line 355 "glsl_lexer.lpp"
6377 KEYWORD(110 || ES, 999, FIXED_TOK);
6378 YY_BREAK
6379-case 151:
6380+case 152:
6381 YY_RULE_SETUP
6382-#line 352 "glsl_lexer.lpp"
6383+#line 356 "glsl_lexer.lpp"
6384 KEYWORD(110 || ES, 999, UNSIGNED);
6385 YY_BREAK
6386-case 152:
6387+case 153:
6388 YY_RULE_SETUP
6389-#line 353 "glsl_lexer.lpp"
6390+#line 357 "glsl_lexer.lpp"
6391 KEYWORD(110 || ES, 999, INPUT_TOK);
6392 YY_BREAK
6393-case 153:
6394+case 154:
6395 YY_RULE_SETUP
6396-#line 354 "glsl_lexer.lpp"
6397+#line 358 "glsl_lexer.lpp"
6398 KEYWORD(110 || ES, 999, OUTPUT);
6399 YY_BREAK
6400-case 154:
6401+case 155:
6402 YY_RULE_SETUP
6403-#line 355 "glsl_lexer.lpp"
6404+#line 359 "glsl_lexer.lpp"
6405 KEYWORD(110 || ES, 999, HVEC2);
6406 YY_BREAK
6407-case 155:
6408+case 156:
6409 YY_RULE_SETUP
6410-#line 356 "glsl_lexer.lpp"
6411+#line 360 "glsl_lexer.lpp"
6412 KEYWORD(110 || ES, 999, HVEC3);
6413 YY_BREAK
6414-case 156:
6415+case 157:
6416 YY_RULE_SETUP
6417-#line 357 "glsl_lexer.lpp"
6418+#line 361 "glsl_lexer.lpp"
6419 KEYWORD(110 || ES, 999, HVEC4);
6420 YY_BREAK
6421-case 157:
6422+case 158:
6423 YY_RULE_SETUP
6424-#line 358 "glsl_lexer.lpp"
6425+#line 362 "glsl_lexer.lpp"
6426 KEYWORD(110 || ES, 400, DVEC2);
6427 YY_BREAK
6428-case 158:
6429+case 159:
6430 YY_RULE_SETUP
6431-#line 359 "glsl_lexer.lpp"
6432+#line 363 "glsl_lexer.lpp"
6433 KEYWORD(110 || ES, 400, DVEC3);
6434 YY_BREAK
6435-case 159:
6436+case 160:
6437 YY_RULE_SETUP
6438-#line 360 "glsl_lexer.lpp"
6439+#line 364 "glsl_lexer.lpp"
6440 KEYWORD(110 || ES, 400, DVEC4);
6441 YY_BREAK
6442-case 160:
6443+case 161:
6444 YY_RULE_SETUP
6445-#line 361 "glsl_lexer.lpp"
6446+#line 365 "glsl_lexer.lpp"
6447 KEYWORD(110 || ES, 999, FVEC2);
6448 YY_BREAK
6449-case 161:
6450+case 162:
6451 YY_RULE_SETUP
6452-#line 362 "glsl_lexer.lpp"
6453+#line 366 "glsl_lexer.lpp"
6454 KEYWORD(110 || ES, 999, FVEC3);
6455 YY_BREAK
6456-case 162:
6457+case 163:
6458 YY_RULE_SETUP
6459-#line 363 "glsl_lexer.lpp"
6460+#line 367 "glsl_lexer.lpp"
6461 KEYWORD(110 || ES, 999, FVEC4);
6462 YY_BREAK
6463-case 163:
6464+case 164:
6465 YY_RULE_SETUP
6466-#line 364 "glsl_lexer.lpp"
6467+#line 368 "glsl_lexer.lpp"
6468 return SAMPLER2DRECT;
6469 YY_BREAK
6470-case 164:
6471+case 165:
6472 YY_RULE_SETUP
6473-#line 365 "glsl_lexer.lpp"
6474+#line 369 "glsl_lexer.lpp"
6475 KEYWORD(110 || ES, 999, SAMPLER3DRECT);
6476 YY_BREAK
6477-case 165:
6478+case 166:
6479 YY_RULE_SETUP
6480-#line 366 "glsl_lexer.lpp"
6481+#line 370 "glsl_lexer.lpp"
6482 return SAMPLER2DRECTSHADOW;
6483 YY_BREAK
6484-case 166:
6485+case 167:
6486 YY_RULE_SETUP
6487-#line 367 "glsl_lexer.lpp"
6488+#line 371 "glsl_lexer.lpp"
6489 KEYWORD(110 || ES, 999, SIZEOF);
6490 YY_BREAK
6491-case 167:
6492+case 168:
6493 YY_RULE_SETUP
6494-#line 368 "glsl_lexer.lpp"
6495+#line 372 "glsl_lexer.lpp"
6496 KEYWORD(110 || ES, 999, CAST);
6497 YY_BREAK
6498-case 168:
6499+case 169:
6500 YY_RULE_SETUP
6501-#line 369 "glsl_lexer.lpp"
6502+#line 373 "glsl_lexer.lpp"
6503 KEYWORD(110 || ES, 999, NAMESPACE);
6504 YY_BREAK
6505-case 169:
6506+case 170:
6507 YY_RULE_SETUP
6508-#line 370 "glsl_lexer.lpp"
6509+#line 374 "glsl_lexer.lpp"
6510 KEYWORD(110 || ES, 999, USING);
6511 YY_BREAK
6512 /* Additional reserved words in GLSL 1.20. */
6513-case 170:
6514+case 171:
6515 YY_RULE_SETUP
6516-#line 373 "glsl_lexer.lpp"
6517+#line 377 "glsl_lexer.lpp"
6518 KEYWORD(120, 130 || ES, LOWP);
6519 YY_BREAK
6520-case 171:
6521+case 172:
6522 YY_RULE_SETUP
6523-#line 374 "glsl_lexer.lpp"
6524+#line 378 "glsl_lexer.lpp"
6525 KEYWORD(120, 130 || ES, MEDIUMP);
6526 YY_BREAK
6527-case 172:
6528+case 173:
6529 YY_RULE_SETUP
6530-#line 375 "glsl_lexer.lpp"
6531+#line 379 "glsl_lexer.lpp"
6532 KEYWORD(120, 130 || ES, HIGHP);
6533 YY_BREAK
6534-case 173:
6535+case 174:
6536 YY_RULE_SETUP
6537-#line 376 "glsl_lexer.lpp"
6538+#line 380 "glsl_lexer.lpp"
6539 KEYWORD(120, 130 || ES, PRECISION);
6540 YY_BREAK
6541 /* Additional reserved words in GLSL 1.30. */
6542-case 174:
6543+case 175:
6544 YY_RULE_SETUP
6545-#line 379 "glsl_lexer.lpp"
6546+#line 383 "glsl_lexer.lpp"
6547 KEYWORD(130, 130, CASE);
6548 YY_BREAK
6549-case 175:
6550+case 176:
6551 YY_RULE_SETUP
6552-#line 380 "glsl_lexer.lpp"
6553+#line 384 "glsl_lexer.lpp"
6554 KEYWORD(130, 999, COMMON);
6555 YY_BREAK
6556-case 176:
6557+case 177:
6558 YY_RULE_SETUP
6559-#line 381 "glsl_lexer.lpp"
6560+#line 385 "glsl_lexer.lpp"
6561 KEYWORD(130, 999, PARTITION);
6562 YY_BREAK
6563-case 177:
6564+case 178:
6565 YY_RULE_SETUP
6566-#line 382 "glsl_lexer.lpp"
6567+#line 386 "glsl_lexer.lpp"
6568 KEYWORD(130, 999, ACTIVE);
6569 YY_BREAK
6570-case 178:
6571+case 179:
6572 YY_RULE_SETUP
6573-#line 383 "glsl_lexer.lpp"
6574+#line 387 "glsl_lexer.lpp"
6575 KEYWORD(130 || ES, 999, SUPERP);
6576 YY_BREAK
6577-case 179:
6578+case 180:
6579 YY_RULE_SETUP
6580-#line 384 "glsl_lexer.lpp"
6581+#line 388 "glsl_lexer.lpp"
6582 KEYWORD(130, 140, SAMPLERBUFFER);
6583 YY_BREAK
6584-case 180:
6585+case 181:
6586 YY_RULE_SETUP
6587-#line 385 "glsl_lexer.lpp"
6588+#line 389 "glsl_lexer.lpp"
6589 KEYWORD(130, 999, FILTER);
6590 YY_BREAK
6591-case 181:
6592+case 182:
6593 YY_RULE_SETUP
6594-#line 386 "glsl_lexer.lpp"
6595+#line 390 "glsl_lexer.lpp"
6596 KEYWORD(130, 999, IMAGE1D);
6597 YY_BREAK
6598-case 182:
6599+case 183:
6600 YY_RULE_SETUP
6601-#line 387 "glsl_lexer.lpp"
6602+#line 391 "glsl_lexer.lpp"
6603 KEYWORD(130, 999, IMAGE2D);
6604 YY_BREAK
6605-case 183:
6606+case 184:
6607 YY_RULE_SETUP
6608-#line 388 "glsl_lexer.lpp"
6609+#line 392 "glsl_lexer.lpp"
6610 KEYWORD(130, 999, IMAGE3D);
6611 YY_BREAK
6612-case 184:
6613+case 185:
6614 YY_RULE_SETUP
6615-#line 389 "glsl_lexer.lpp"
6616+#line 393 "glsl_lexer.lpp"
6617 KEYWORD(130, 999, IMAGECUBE);
6618 YY_BREAK
6619-case 185:
6620+case 186:
6621 YY_RULE_SETUP
6622-#line 390 "glsl_lexer.lpp"
6623+#line 394 "glsl_lexer.lpp"
6624 KEYWORD(130, 999, IIMAGE1D);
6625 YY_BREAK
6626-case 186:
6627+case 187:
6628 YY_RULE_SETUP
6629-#line 391 "glsl_lexer.lpp"
6630+#line 395 "glsl_lexer.lpp"
6631 KEYWORD(130, 999, IIMAGE2D);
6632 YY_BREAK
6633-case 187:
6634+case 188:
6635 YY_RULE_SETUP
6636-#line 392 "glsl_lexer.lpp"
6637+#line 396 "glsl_lexer.lpp"
6638 KEYWORD(130, 999, IIMAGE3D);
6639 YY_BREAK
6640-case 188:
6641+case 189:
6642 YY_RULE_SETUP
6643-#line 393 "glsl_lexer.lpp"
6644+#line 397 "glsl_lexer.lpp"
6645 KEYWORD(130, 999, IIMAGECUBE);
6646 YY_BREAK
6647-case 189:
6648+case 190:
6649 YY_RULE_SETUP
6650-#line 394 "glsl_lexer.lpp"
6651+#line 398 "glsl_lexer.lpp"
6652 KEYWORD(130, 999, UIMAGE1D);
6653 YY_BREAK
6654-case 190:
6655+case 191:
6656 YY_RULE_SETUP
6657-#line 395 "glsl_lexer.lpp"
6658+#line 399 "glsl_lexer.lpp"
6659 KEYWORD(130, 999, UIMAGE2D);
6660 YY_BREAK
6661-case 191:
6662+case 192:
6663 YY_RULE_SETUP
6664-#line 396 "glsl_lexer.lpp"
6665+#line 400 "glsl_lexer.lpp"
6666 KEYWORD(130, 999, UIMAGE3D);
6667 YY_BREAK
6668-case 192:
6669+case 193:
6670 YY_RULE_SETUP
6671-#line 397 "glsl_lexer.lpp"
6672+#line 401 "glsl_lexer.lpp"
6673 KEYWORD(130, 999, UIMAGECUBE);
6674 YY_BREAK
6675-case 193:
6676+case 194:
6677 YY_RULE_SETUP
6678-#line 398 "glsl_lexer.lpp"
6679+#line 402 "glsl_lexer.lpp"
6680 KEYWORD(130, 999, IMAGE1DARRAY);
6681 YY_BREAK
6682-case 194:
6683+case 195:
6684 YY_RULE_SETUP
6685-#line 399 "glsl_lexer.lpp"
6686+#line 403 "glsl_lexer.lpp"
6687 KEYWORD(130, 999, IMAGE2DARRAY);
6688 YY_BREAK
6689-case 195:
6690+case 196:
6691 YY_RULE_SETUP
6692-#line 400 "glsl_lexer.lpp"
6693+#line 404 "glsl_lexer.lpp"
6694 KEYWORD(130, 999, IIMAGE1DARRAY);
6695 YY_BREAK
6696-case 196:
6697+case 197:
6698 YY_RULE_SETUP
6699-#line 401 "glsl_lexer.lpp"
6700+#line 405 "glsl_lexer.lpp"
6701 KEYWORD(130, 999, IIMAGE2DARRAY);
6702 YY_BREAK
6703-case 197:
6704+case 198:
6705 YY_RULE_SETUP
6706-#line 402 "glsl_lexer.lpp"
6707+#line 406 "glsl_lexer.lpp"
6708 KEYWORD(130, 999, UIMAGE1DARRAY);
6709 YY_BREAK
6710-case 198:
6711+case 199:
6712 YY_RULE_SETUP
6713-#line 403 "glsl_lexer.lpp"
6714+#line 407 "glsl_lexer.lpp"
6715 KEYWORD(130, 999, UIMAGE2DARRAY);
6716 YY_BREAK
6717-case 199:
6718+case 200:
6719 YY_RULE_SETUP
6720-#line 404 "glsl_lexer.lpp"
6721+#line 408 "glsl_lexer.lpp"
6722 KEYWORD(130, 999, IMAGE1DSHADOW);
6723 YY_BREAK
6724-case 200:
6725+case 201:
6726 YY_RULE_SETUP
6727-#line 405 "glsl_lexer.lpp"
6728+#line 409 "glsl_lexer.lpp"
6729 KEYWORD(130, 999, IMAGE2DSHADOW);
6730 YY_BREAK
6731-case 201:
6732+case 202:
6733 YY_RULE_SETUP
6734-#line 406 "glsl_lexer.lpp"
6735+#line 410 "glsl_lexer.lpp"
6736 KEYWORD(130, 999, IMAGE1DARRAYSHADOW);
6737 YY_BREAK
6738-case 202:
6739+case 203:
6740 YY_RULE_SETUP
6741-#line 407 "glsl_lexer.lpp"
6742+#line 411 "glsl_lexer.lpp"
6743 KEYWORD(130, 999, IMAGE2DARRAYSHADOW);
6744 YY_BREAK
6745-case 203:
6746+case 204:
6747 YY_RULE_SETUP
6748-#line 408 "glsl_lexer.lpp"
6749+#line 412 "glsl_lexer.lpp"
6750 KEYWORD(130, 999, IMAGEBUFFER);
6751 YY_BREAK
6752-case 204:
6753+case 205:
6754 YY_RULE_SETUP
6755-#line 409 "glsl_lexer.lpp"
6756+#line 413 "glsl_lexer.lpp"
6757 KEYWORD(130, 999, IIMAGEBUFFER);
6758 YY_BREAK
6759-case 205:
6760+case 206:
6761 YY_RULE_SETUP
6762-#line 410 "glsl_lexer.lpp"
6763+#line 414 "glsl_lexer.lpp"
6764 KEYWORD(130, 999, UIMAGEBUFFER);
6765 YY_BREAK
6766-case 206:
6767+case 207:
6768 YY_RULE_SETUP
6769-#line 411 "glsl_lexer.lpp"
6770+#line 415 "glsl_lexer.lpp"
6771 KEYWORD(130, 999, ROW_MAJOR);
6772 YY_BREAK
6773-case 207:
6774+case 208:
6775 YY_RULE_SETUP
6776-#line 413 "glsl_lexer.lpp"
6777+#line 417 "glsl_lexer.lpp"
6778 {
6779 struct _mesa_glsl_parse_state *state = yyextra;
6780 void *ctx = state;
6781- yylval->identifier = talloc_strdup(ctx, yytext);
6782+ yylval->identifier = ralloc_strdup(ctx, yytext);
6783 return IDENTIFIER;
6784 }
6785 YY_BREAK
6786-case 208:
6787+case 209:
6788 YY_RULE_SETUP
6789-#line 420 "glsl_lexer.lpp"
6790+#line 424 "glsl_lexer.lpp"
6791 { return yytext[0]; }
6792 YY_BREAK
6793-case 209:
6794+case 210:
6795 YY_RULE_SETUP
6796-#line 422 "glsl_lexer.lpp"
6797+#line 426 "glsl_lexer.lpp"
6798 ECHO;
6799 YY_BREAK
6800-#line 2530 "glsl_lexer.cpp"
6801+#line 2554 "glsl_lexer.cpp"
6802 case YY_STATE_EOF(INITIAL):
6803 case YY_STATE_EOF(PP):
6804 case YY_STATE_EOF(PRAGMA):
6805@@ -2824,7 +2848,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
6806 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6807 {
6808 yy_current_state = (int) yy_def[yy_current_state];
6809- if ( yy_current_state >= 813 )
6810+ if ( yy_current_state >= 836 )
6811 yy_c = yy_meta[(unsigned int) yy_c];
6812 }
6813 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6814@@ -2853,11 +2877,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
6815 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6816 {
6817 yy_current_state = (int) yy_def[yy_current_state];
6818- if ( yy_current_state >= 813 )
6819+ if ( yy_current_state >= 836 )
6820 yy_c = yy_meta[(unsigned int) yy_c];
6821 }
6822 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6823- yy_is_jam = (yy_current_state == 812);
6824+ yy_is_jam = (yy_current_state == 835);
6825
6826 return yy_is_jam ? 0 : yy_current_state;
6827 }
6828@@ -3669,7 +3693,7 @@ void _mesa_glsl_free (void * ptr , yyscan_t yyscanner)
6829
6830 #define YYTABLES_NAME "yytables"
6831
6832-#line 422 "glsl_lexer.lpp"
6833+#line 426 "glsl_lexer.lpp"
6834
6835
6836
6837diff --git a/src/glsl/glsl_lexer.lpp b/src/glsl/glsl_lexer.lpp
6838index 15742ac..08d306a 100644
6839--- a/src/glsl/glsl_lexer.lpp
6840+++ b/src/glsl/glsl_lexer.lpp
6841@@ -145,6 +145,10 @@ HASH ^{SPC}#{SPC}
6842 BEGIN PP;
6843 return PRAGMA_OPTIMIZE_OFF;
6844 }
6845+^{SPC}#{SPC}pragma{SPCP}STDGL{SPCP}invariant{SPC}\({SPC}all{SPC}\) {
6846+ BEGIN PP;
6847+ return PRAGMA_INVARIANT_ALL;
6848+ }
6849 ^{SPC}#{SPC}pragma{SPCP} { BEGIN PRAGMA; }
6850
6851 <PRAGMA>\n { BEGIN 0; yylineno++; yycolumn = 0; }
6852@@ -413,7 +417,7 @@ row_major KEYWORD(130, 999, ROW_MAJOR);
6853 [_a-zA-Z][_a-zA-Z0-9]* {
6854 struct _mesa_glsl_parse_state *state = yyextra;
6855 void *ctx = state;
6856- yylval->identifier = talloc_strdup(ctx, yytext);
6857+ yylval->identifier = ralloc_strdup(ctx, yytext);
6858 return IDENTIFIER;
6859 }
6860
6861diff --git a/src/glsl/glsl_parser.cpp b/src/glsl/glsl_parser.cpp
6862index 23e439c..7065369 100644
6863--- a/src/glsl/glsl_parser.cpp
6864+++ b/src/glsl/glsl_parser.cpp
6865@@ -257,79 +257,80 @@
6866 PRAGMA_DEBUG_OFF = 372,
6867 PRAGMA_OPTIMIZE_ON = 373,
6868 PRAGMA_OPTIMIZE_OFF = 374,
6869- LAYOUT_TOK = 375,
6870- ASM = 376,
6871- CLASS = 377,
6872- UNION = 378,
6873- ENUM = 379,
6874- TYPEDEF = 380,
6875- TEMPLATE = 381,
6876- THIS = 382,
6877- PACKED_TOK = 383,
6878- GOTO = 384,
6879- INLINE_TOK = 385,
6880- NOINLINE = 386,
6881- VOLATILE = 387,
6882- PUBLIC_TOK = 388,
6883- STATIC = 389,
6884- EXTERN = 390,
6885- EXTERNAL = 391,
6886- LONG_TOK = 392,
6887- SHORT_TOK = 393,
6888- DOUBLE_TOK = 394,
6889- HALF = 395,
6890- FIXED_TOK = 396,
6891- UNSIGNED = 397,
6892- INPUT_TOK = 398,
6893- OUPTUT = 399,
6894- HVEC2 = 400,
6895- HVEC3 = 401,
6896- HVEC4 = 402,
6897- DVEC2 = 403,
6898- DVEC3 = 404,
6899- DVEC4 = 405,
6900- FVEC2 = 406,
6901- FVEC3 = 407,
6902- FVEC4 = 408,
6903- SAMPLER2DRECT = 409,
6904- SAMPLER3DRECT = 410,
6905- SAMPLER2DRECTSHADOW = 411,
6906- SIZEOF = 412,
6907- CAST = 413,
6908- NAMESPACE = 414,
6909- USING = 415,
6910- ERROR_TOK = 416,
6911- COMMON = 417,
6912- PARTITION = 418,
6913- ACTIVE = 419,
6914- SAMPLERBUFFER = 420,
6915- FILTER = 421,
6916- IMAGE1D = 422,
6917- IMAGE2D = 423,
6918- IMAGE3D = 424,
6919- IMAGECUBE = 425,
6920- IMAGE1DARRAY = 426,
6921- IMAGE2DARRAY = 427,
6922- IIMAGE1D = 428,
6923- IIMAGE2D = 429,
6924- IIMAGE3D = 430,
6925- IIMAGECUBE = 431,
6926- IIMAGE1DARRAY = 432,
6927- IIMAGE2DARRAY = 433,
6928- UIMAGE1D = 434,
6929- UIMAGE2D = 435,
6930- UIMAGE3D = 436,
6931- UIMAGECUBE = 437,
6932- UIMAGE1DARRAY = 438,
6933- UIMAGE2DARRAY = 439,
6934- IMAGE1DSHADOW = 440,
6935- IMAGE2DSHADOW = 441,
6936- IMAGEBUFFER = 442,
6937- IIMAGEBUFFER = 443,
6938- UIMAGEBUFFER = 444,
6939- IMAGE1DARRAYSHADOW = 445,
6940- IMAGE2DARRAYSHADOW = 446,
6941- ROW_MAJOR = 447
6942+ PRAGMA_INVARIANT_ALL = 375,
6943+ LAYOUT_TOK = 376,
6944+ ASM = 377,
6945+ CLASS = 378,
6946+ UNION = 379,
6947+ ENUM = 380,
6948+ TYPEDEF = 381,
6949+ TEMPLATE = 382,
6950+ THIS = 383,
6951+ PACKED_TOK = 384,
6952+ GOTO = 385,
6953+ INLINE_TOK = 386,
6954+ NOINLINE = 387,
6955+ VOLATILE = 388,
6956+ PUBLIC_TOK = 389,
6957+ STATIC = 390,
6958+ EXTERN = 391,
6959+ EXTERNAL = 392,
6960+ LONG_TOK = 393,
6961+ SHORT_TOK = 394,
6962+ DOUBLE_TOK = 395,
6963+ HALF = 396,
6964+ FIXED_TOK = 397,
6965+ UNSIGNED = 398,
6966+ INPUT_TOK = 399,
6967+ OUPTUT = 400,
6968+ HVEC2 = 401,
6969+ HVEC3 = 402,
6970+ HVEC4 = 403,
6971+ DVEC2 = 404,
6972+ DVEC3 = 405,
6973+ DVEC4 = 406,
6974+ FVEC2 = 407,
6975+ FVEC3 = 408,
6976+ FVEC4 = 409,
6977+ SAMPLER2DRECT = 410,
6978+ SAMPLER3DRECT = 411,
6979+ SAMPLER2DRECTSHADOW = 412,
6980+ SIZEOF = 413,
6981+ CAST = 414,
6982+ NAMESPACE = 415,
6983+ USING = 416,
6984+ ERROR_TOK = 417,
6985+ COMMON = 418,
6986+ PARTITION = 419,
6987+ ACTIVE = 420,
6988+ SAMPLERBUFFER = 421,
6989+ FILTER = 422,
6990+ IMAGE1D = 423,
6991+ IMAGE2D = 424,
6992+ IMAGE3D = 425,
6993+ IMAGECUBE = 426,
6994+ IMAGE1DARRAY = 427,
6995+ IMAGE2DARRAY = 428,
6996+ IIMAGE1D = 429,
6997+ IIMAGE2D = 430,
6998+ IIMAGE3D = 431,
6999+ IIMAGECUBE = 432,
7000+ IIMAGE1DARRAY = 433,
7001+ IIMAGE2DARRAY = 434,
7002+ UIMAGE1D = 435,
7003+ UIMAGE2D = 436,
7004+ UIMAGE3D = 437,
7005+ UIMAGECUBE = 438,
7006+ UIMAGE1DARRAY = 439,
7007+ UIMAGE2DARRAY = 440,
7008+ IMAGE1DSHADOW = 441,
7009+ IMAGE2DSHADOW = 442,
7010+ IMAGEBUFFER = 443,
7011+ IIMAGEBUFFER = 444,
7012+ UIMAGEBUFFER = 445,
7013+ IMAGE1DARRAYSHADOW = 446,
7014+ IMAGE2DARRAYSHADOW = 447,
7015+ ROW_MAJOR = 448
7016 };
7017 #endif
7018
7019@@ -373,7 +374,7 @@ typedef union YYSTYPE
7020
7021
7022 /* Line 214 of yacc.c */
7023-#line 377 "glsl_parser.cpp"
7024+#line 378 "glsl_parser.cpp"
7025 } YYSTYPE;
7026 # define YYSTYPE_IS_TRIVIAL 1
7027 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
7028@@ -398,7 +399,7 @@ typedef struct YYLTYPE
7029
7030
7031 /* Line 264 of yacc.c */
7032-#line 402 "glsl_parser.cpp"
7033+#line 403 "glsl_parser.cpp"
7034
7035 #ifdef short
7036 # undef short
7037@@ -615,20 +616,20 @@ union yyalloc
7038 /* YYFINAL -- State number of the termination state. */
7039 #define YYFINAL 5
7040 /* YYLAST -- Last index in YYTABLE. */
7041-#define YYLAST 3718
7042+#define YYLAST 3738
7043
7044 /* YYNTOKENS -- Number of terminals. */
7045-#define YYNTOKENS 217
7046+#define YYNTOKENS 218
7047 /* YYNNTS -- Number of nonterminals. */
7048 #define YYNNTS 87
7049 /* YYNRULES -- Number of rules. */
7050-#define YYNRULES 278
7051+#define YYNRULES 279
7052 /* YYNRULES -- Number of states. */
7053-#define YYNSTATES 413
7054+#define YYNSTATES 415
7055
7056 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
7057 #define YYUNDEFTOK 2
7058-#define YYMAXUTOK 447
7059+#define YYMAXUTOK 448
7060
7061 #define YYTRANSLATE(YYX) \
7062 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
7063@@ -639,16 +640,16 @@ static const yytype_uint8 yytranslate[] =
7064 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7065 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7066 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7067- 2, 2, 2, 201, 2, 2, 2, 205, 208, 2,
7068- 193, 194, 203, 199, 198, 200, 197, 204, 2, 2,
7069- 2, 2, 2, 2, 2, 2, 2, 2, 212, 214,
7070- 206, 213, 207, 211, 2, 2, 2, 2, 2, 2,
7071+ 2, 2, 2, 202, 2, 2, 2, 206, 209, 2,
7072+ 194, 195, 204, 200, 199, 201, 198, 205, 2, 2,
7073+ 2, 2, 2, 2, 2, 2, 2, 2, 213, 215,
7074+ 207, 214, 208, 212, 2, 2, 2, 2, 2, 2,
7075 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7076 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7077- 2, 195, 2, 196, 209, 2, 2, 2, 2, 2,
7078+ 2, 196, 2, 197, 210, 2, 2, 2, 2, 2,
7079 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7080 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7081- 2, 2, 2, 215, 210, 216, 202, 2, 2, 2,
7082+ 2, 2, 2, 216, 211, 217, 203, 2, 2, 2,
7083 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7084 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7085 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7086@@ -680,7 +681,7 @@ static const yytype_uint8 yytranslate[] =
7087 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
7088 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
7089 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
7090- 185, 186, 187, 188, 189, 190, 191, 192
7091+ 185, 186, 187, 188, 189, 190, 191, 192, 193
7092 };
7093
7094 #if YYDEBUG
7095@@ -689,151 +690,151 @@ static const yytype_uint8 yytranslate[] =
7096 static const yytype_uint16 yyprhs[] =
7097 {
7098 0, 0, 3, 4, 9, 10, 14, 17, 20, 23,
7099- 26, 27, 30, 36, 38, 41, 43, 45, 47, 49,
7100- 51, 53, 57, 59, 64, 66, 70, 73, 76, 78,
7101- 80, 82, 86, 89, 92, 95, 97, 100, 104, 107,
7102- 109, 111, 113, 115, 118, 121, 124, 126, 128, 130,
7103- 132, 134, 138, 142, 146, 148, 152, 156, 158, 162,
7104- 166, 168, 172, 176, 180, 184, 186, 190, 194, 196,
7105- 200, 202, 206, 208, 212, 214, 218, 220, 224, 226,
7106- 230, 232, 238, 240, 244, 246, 248, 250, 252, 254,
7107- 256, 258, 260, 262, 264, 266, 268, 272, 274, 277,
7108- 280, 285, 288, 290, 292, 295, 299, 303, 306, 312,
7109- 316, 319, 323, 326, 327, 329, 331, 333, 335, 337,
7110- 341, 347, 354, 362, 371, 377, 379, 382, 387, 393,
7111- 400, 408, 413, 416, 418, 421, 426, 428, 432, 434,
7112- 438, 440, 442, 444, 446, 448, 450, 453, 455, 458,
7113- 461, 465, 467, 469, 471, 473, 476, 478, 480, 483,
7114- 486, 488, 490, 493, 495, 499, 504, 506, 508, 510,
7115- 512, 514, 516, 518, 520, 522, 524, 526, 528, 530,
7116- 532, 534, 536, 538, 540, 542, 544, 546, 548, 550,
7117- 552, 554, 556, 558, 560, 562, 564, 566, 568, 570,
7118- 572, 574, 576, 578, 580, 582, 584, 586, 588, 590,
7119- 592, 594, 596, 598, 600, 602, 604, 606, 608, 610,
7120- 612, 614, 616, 618, 624, 629, 631, 634, 638, 640,
7121- 644, 646, 651, 653, 655, 657, 659, 661, 663, 665,
7122- 667, 669, 671, 673, 676, 680, 682, 684, 687, 691,
7123- 693, 696, 698, 701, 707, 711, 713, 715, 720, 726,
7124- 730, 733, 739, 747, 754, 756, 758, 760, 761, 764,
7125- 768, 771, 774, 777, 781, 784, 786, 788, 790
7126+ 26, 29, 30, 33, 39, 41, 44, 46, 48, 50,
7127+ 52, 54, 56, 60, 62, 67, 69, 73, 76, 79,
7128+ 81, 83, 85, 89, 92, 95, 98, 100, 103, 107,
7129+ 110, 112, 114, 116, 118, 121, 124, 127, 129, 131,
7130+ 133, 135, 137, 141, 145, 149, 151, 155, 159, 161,
7131+ 165, 169, 171, 175, 179, 183, 187, 189, 193, 197,
7132+ 199, 203, 205, 209, 211, 215, 217, 221, 223, 227,
7133+ 229, 233, 235, 241, 243, 247, 249, 251, 253, 255,
7134+ 257, 259, 261, 263, 265, 267, 269, 271, 275, 277,
7135+ 280, 283, 288, 291, 293, 295, 298, 302, 306, 309,
7136+ 315, 319, 322, 326, 329, 330, 332, 334, 336, 338,
7137+ 340, 344, 350, 357, 365, 374, 380, 382, 385, 390,
7138+ 396, 403, 411, 416, 419, 421, 424, 429, 431, 435,
7139+ 437, 441, 443, 445, 447, 449, 451, 453, 456, 458,
7140+ 461, 464, 468, 470, 472, 474, 476, 479, 481, 483,
7141+ 486, 489, 491, 493, 496, 498, 502, 507, 509, 511,
7142+ 513, 515, 517, 519, 521, 523, 525, 527, 529, 531,
7143+ 533, 535, 537, 539, 541, 543, 545, 547, 549, 551,
7144+ 553, 555, 557, 559, 561, 563, 565, 567, 569, 571,
7145+ 573, 575, 577, 579, 581, 583, 585, 587, 589, 591,
7146+ 593, 595, 597, 599, 601, 603, 605, 607, 609, 611,
7147+ 613, 615, 617, 619, 621, 627, 632, 634, 637, 641,
7148+ 643, 647, 649, 654, 656, 658, 660, 662, 664, 666,
7149+ 668, 670, 672, 674, 676, 679, 683, 685, 687, 690,
7150+ 694, 696, 699, 701, 704, 710, 714, 716, 718, 723,
7151+ 729, 733, 736, 742, 750, 757, 759, 761, 763, 764,
7152+ 767, 771, 774, 777, 780, 784, 787, 789, 791, 793
7153 };
7154
7155 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
7156 static const yytype_int16 yyrhs[] =
7157 {
7158- 218, 0, -1, -1, 220, 222, 219, 224, -1, -1,
7159+ 219, 0, -1, -1, 221, 223, 220, 225, -1, -1,
7160 109, 78, 113, -1, 116, 113, -1, 117, 113, -1,
7161- 118, 113, -1, 119, 113, -1, -1, 222, 223, -1,
7162- 110, 76, 112, 76, 113, -1, 302, -1, 224, 302,
7163- -1, 76, -1, 225, -1, 78, -1, 79, -1, 77,
7164- -1, 80, -1, 193, 252, 194, -1, 226, -1, 227,
7165- 195, 228, 196, -1, 229, -1, 227, 197, 76, -1,
7166- 227, 84, -1, 227, 85, -1, 252, -1, 230, -1,
7167- 231, -1, 227, 197, 231, -1, 233, 194, -1, 232,
7168- 194, -1, 234, 74, -1, 234, -1, 234, 250, -1,
7169- 233, 198, 250, -1, 235, 193, -1, 273, -1, 76,
7170- -1, 81, -1, 227, -1, 84, 236, -1, 85, 236,
7171- -1, 237, 236, -1, 199, -1, 200, -1, 201, -1,
7172- 202, -1, 236, -1, 238, 203, 236, -1, 238, 204,
7173- 236, -1, 238, 205, 236, -1, 238, -1, 239, 199,
7174- 238, -1, 239, 200, 238, -1, 239, -1, 240, 82,
7175- 239, -1, 240, 83, 239, -1, 240, -1, 241, 206,
7176- 240, -1, 241, 207, 240, -1, 241, 86, 240, -1,
7177- 241, 87, 240, -1, 241, -1, 242, 88, 241, -1,
7178- 242, 89, 241, -1, 242, -1, 243, 208, 242, -1,
7179- 243, -1, 244, 209, 243, -1, 244, -1, 245, 210,
7180- 244, -1, 245, -1, 246, 90, 245, -1, 246, -1,
7181- 247, 92, 246, -1, 247, -1, 248, 91, 247, -1,
7182- 248, -1, 248, 211, 252, 212, 250, -1, 249, -1,
7183- 236, 251, 250, -1, 213, -1, 93, -1, 94, -1,
7184- 96, -1, 95, -1, 102, -1, 97, -1, 98, -1,
7185- 99, -1, 100, -1, 101, -1, 250, -1, 252, 198,
7186- 250, -1, 249, -1, 255, 214, -1, 263, 214, -1,
7187- 108, 277, 274, 214, -1, 256, 194, -1, 258, -1,
7188- 257, -1, 258, 260, -1, 257, 198, 260, -1, 265,
7189- 76, 193, -1, 273, 76, -1, 273, 76, 195, 253,
7190- 196, -1, 270, 261, 259, -1, 261, 259, -1, 270,
7191- 261, 262, -1, 261, 262, -1, -1, 33, -1, 34,
7192- -1, 35, -1, 273, -1, 264, -1, 263, 198, 76,
7193- -1, 263, 198, 76, 195, 196, -1, 263, 198, 76,
7194- 195, 253, 196, -1, 263, 198, 76, 195, 196, 213,
7195- 283, -1, 263, 198, 76, 195, 253, 196, 213, 283,
7196- -1, 263, 198, 76, 213, 283, -1, 265, -1, 265,
7197- 76, -1, 265, 76, 195, 196, -1, 265, 76, 195,
7198- 253, 196, -1, 265, 76, 195, 196, 213, 283, -1,
7199- 265, 76, 195, 253, 196, 213, 283, -1, 265, 76,
7200- 213, 283, -1, 103, 76, -1, 273, -1, 271, 273,
7201- -1, 120, 193, 267, 194, -1, 268, -1, 267, 198,
7202- 268, -1, 76, -1, 76, 213, 78, -1, 40, -1,
7203- 39, -1, 38, -1, 4, -1, 272, -1, 266, -1,
7204- 266, 272, -1, 269, -1, 269, 272, -1, 103, 272,
7205- -1, 103, 269, 272, -1, 103, -1, 4, -1, 3,
7206- -1, 37, -1, 32, 37, -1, 33, -1, 34, -1,
7207- 32, 33, -1, 32, 34, -1, 36, -1, 274, -1,
7208- 277, 274, -1, 275, -1, 275, 195, 196, -1, 275,
7209- 195, 253, 196, -1, 276, -1, 278, -1, 76, -1,
7210- 74, -1, 6, -1, 7, -1, 8, -1, 5, -1,
7211- 29, -1, 30, -1, 31, -1, 20, -1, 21, -1,
7212- 22, -1, 23, -1, 24, -1, 25, -1, 26, -1,
7213- 27, -1, 28, -1, 41, -1, 42, -1, 43, -1,
7214- 44, -1, 45, -1, 46, -1, 47, -1, 48, -1,
7215- 49, -1, 50, -1, 51, -1, 154, -1, 52, -1,
7216- 53, -1, 54, -1, 55, -1, 156, -1, 56, -1,
7217- 57, -1, 58, -1, 59, -1, 60, -1, 61, -1,
7218- 62, -1, 63, -1, 64, -1, 65, -1, 66, -1,
7219- 67, -1, 68, -1, 69, -1, 70, -1, 71, -1,
7220- 72, -1, 106, -1, 105, -1, 104, -1, 73, 76,
7221- 215, 279, 216, -1, 73, 215, 279, 216, -1, 280,
7222- -1, 279, 280, -1, 273, 281, 214, -1, 282, -1,
7223- 281, 198, 282, -1, 76, -1, 76, 195, 253, 196,
7224- -1, 250, -1, 254, -1, 287, -1, 286, -1, 284,
7225- -1, 291, -1, 292, -1, 295, -1, 296, -1, 297,
7226- -1, 301, -1, 215, 216, -1, 215, 290, 216, -1,
7227- 289, -1, 286, -1, 215, 216, -1, 215, 290, 216,
7228- -1, 285, -1, 290, 285, -1, 214, -1, 252, 214,
7229- -1, 14, 193, 252, 194, 293, -1, 285, 12, 285,
7230- -1, 285, -1, 252, -1, 265, 76, 213, 283, -1,
7231- 17, 193, 252, 194, 287, -1, 18, 252, 212, -1,
7232- 19, 212, -1, 75, 193, 294, 194, 288, -1, 11,
7233- 285, 75, 193, 252, 194, 214, -1, 13, 193, 298,
7234- 300, 194, 288, -1, 291, -1, 284, -1, 294, -1,
7235- -1, 299, 214, -1, 299, 214, 252, -1, 10, 214,
7236- -1, 9, 214, -1, 16, 214, -1, 16, 252, 214,
7237- -1, 15, 214, -1, 303, -1, 254, -1, 221, -1,
7238- 255, 289, -1
7239+ 118, 113, -1, 119, 113, -1, 120, 113, -1, -1,
7240+ 223, 224, -1, 110, 76, 112, 76, 113, -1, 303,
7241+ -1, 225, 303, -1, 76, -1, 226, -1, 78, -1,
7242+ 79, -1, 77, -1, 80, -1, 194, 253, 195, -1,
7243+ 227, -1, 228, 196, 229, 197, -1, 230, -1, 228,
7244+ 198, 76, -1, 228, 84, -1, 228, 85, -1, 253,
7245+ -1, 231, -1, 232, -1, 228, 198, 232, -1, 234,
7246+ 195, -1, 233, 195, -1, 235, 74, -1, 235, -1,
7247+ 235, 251, -1, 234, 199, 251, -1, 236, 194, -1,
7248+ 274, -1, 76, -1, 81, -1, 228, -1, 84, 237,
7249+ -1, 85, 237, -1, 238, 237, -1, 200, -1, 201,
7250+ -1, 202, -1, 203, -1, 237, -1, 239, 204, 237,
7251+ -1, 239, 205, 237, -1, 239, 206, 237, -1, 239,
7252+ -1, 240, 200, 239, -1, 240, 201, 239, -1, 240,
7253+ -1, 241, 82, 240, -1, 241, 83, 240, -1, 241,
7254+ -1, 242, 207, 241, -1, 242, 208, 241, -1, 242,
7255+ 86, 241, -1, 242, 87, 241, -1, 242, -1, 243,
7256+ 88, 242, -1, 243, 89, 242, -1, 243, -1, 244,
7257+ 209, 243, -1, 244, -1, 245, 210, 244, -1, 245,
7258+ -1, 246, 211, 245, -1, 246, -1, 247, 90, 246,
7259+ -1, 247, -1, 248, 92, 247, -1, 248, -1, 249,
7260+ 91, 248, -1, 249, -1, 249, 212, 253, 213, 251,
7261+ -1, 250, -1, 237, 252, 251, -1, 214, -1, 93,
7262+ -1, 94, -1, 96, -1, 95, -1, 102, -1, 97,
7263+ -1, 98, -1, 99, -1, 100, -1, 101, -1, 251,
7264+ -1, 253, 199, 251, -1, 250, -1, 256, 215, -1,
7265+ 264, 215, -1, 108, 278, 275, 215, -1, 257, 195,
7266+ -1, 259, -1, 258, -1, 259, 261, -1, 258, 199,
7267+ 261, -1, 266, 76, 194, -1, 274, 76, -1, 274,
7268+ 76, 196, 254, 197, -1, 271, 262, 260, -1, 262,
7269+ 260, -1, 271, 262, 263, -1, 262, 263, -1, -1,
7270+ 33, -1, 34, -1, 35, -1, 274, -1, 265, -1,
7271+ 264, 199, 76, -1, 264, 199, 76, 196, 197, -1,
7272+ 264, 199, 76, 196, 254, 197, -1, 264, 199, 76,
7273+ 196, 197, 214, 284, -1, 264, 199, 76, 196, 254,
7274+ 197, 214, 284, -1, 264, 199, 76, 214, 284, -1,
7275+ 266, -1, 266, 76, -1, 266, 76, 196, 197, -1,
7276+ 266, 76, 196, 254, 197, -1, 266, 76, 196, 197,
7277+ 214, 284, -1, 266, 76, 196, 254, 197, 214, 284,
7278+ -1, 266, 76, 214, 284, -1, 103, 76, -1, 274,
7279+ -1, 272, 274, -1, 121, 194, 268, 195, -1, 269,
7280+ -1, 268, 199, 269, -1, 76, -1, 76, 214, 78,
7281+ -1, 40, -1, 39, -1, 38, -1, 4, -1, 273,
7282+ -1, 267, -1, 267, 273, -1, 270, -1, 270, 273,
7283+ -1, 103, 273, -1, 103, 270, 273, -1, 103, -1,
7284+ 4, -1, 3, -1, 37, -1, 32, 37, -1, 33,
7285+ -1, 34, -1, 32, 33, -1, 32, 34, -1, 36,
7286+ -1, 275, -1, 278, 275, -1, 276, -1, 276, 196,
7287+ 197, -1, 276, 196, 254, 197, -1, 277, -1, 279,
7288+ -1, 76, -1, 74, -1, 6, -1, 7, -1, 8,
7289+ -1, 5, -1, 29, -1, 30, -1, 31, -1, 20,
7290+ -1, 21, -1, 22, -1, 23, -1, 24, -1, 25,
7291+ -1, 26, -1, 27, -1, 28, -1, 41, -1, 42,
7292+ -1, 43, -1, 44, -1, 45, -1, 46, -1, 47,
7293+ -1, 48, -1, 49, -1, 50, -1, 51, -1, 155,
7294+ -1, 52, -1, 53, -1, 54, -1, 55, -1, 157,
7295+ -1, 56, -1, 57, -1, 58, -1, 59, -1, 60,
7296+ -1, 61, -1, 62, -1, 63, -1, 64, -1, 65,
7297+ -1, 66, -1, 67, -1, 68, -1, 69, -1, 70,
7298+ -1, 71, -1, 72, -1, 106, -1, 105, -1, 104,
7299+ -1, 73, 76, 216, 280, 217, -1, 73, 216, 280,
7300+ 217, -1, 281, -1, 280, 281, -1, 274, 282, 215,
7301+ -1, 283, -1, 282, 199, 283, -1, 76, -1, 76,
7302+ 196, 254, 197, -1, 251, -1, 255, -1, 288, -1,
7303+ 287, -1, 285, -1, 292, -1, 293, -1, 296, -1,
7304+ 297, -1, 298, -1, 302, -1, 216, 217, -1, 216,
7305+ 291, 217, -1, 290, -1, 287, -1, 216, 217, -1,
7306+ 216, 291, 217, -1, 286, -1, 291, 286, -1, 215,
7307+ -1, 253, 215, -1, 14, 194, 253, 195, 294, -1,
7308+ 286, 12, 286, -1, 286, -1, 253, -1, 266, 76,
7309+ 214, 284, -1, 17, 194, 253, 195, 288, -1, 18,
7310+ 253, 213, -1, 19, 213, -1, 75, 194, 295, 195,
7311+ 289, -1, 11, 286, 75, 194, 253, 195, 215, -1,
7312+ 13, 194, 299, 301, 195, 289, -1, 292, -1, 285,
7313+ -1, 295, -1, -1, 300, 215, -1, 300, 215, 253,
7314+ -1, 10, 215, -1, 9, 215, -1, 16, 215, -1,
7315+ 16, 253, 215, -1, 15, 215, -1, 304, -1, 255,
7316+ -1, 222, -1, 256, 290, -1
7317 };
7318
7319 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
7320 static const yytype_uint16 yyrline[] =
7321 {
7322- 0, 212, 212, 211, 218, 220, 240, 241, 242, 243,
7323- 246, 248, 252, 261, 269, 280, 284, 291, 298, 305,
7324- 312, 319, 326, 327, 333, 337, 344, 350, 359, 363,
7325- 367, 368, 377, 378, 382, 383, 387, 393, 405, 409,
7326- 415, 422, 433, 434, 440, 446, 456, 457, 458, 459,
7327- 463, 464, 470, 476, 485, 486, 492, 501, 502, 508,
7328- 517, 518, 524, 530, 536, 545, 546, 552, 561, 562,
7329- 571, 572, 581, 582, 591, 592, 601, 602, 611, 612,
7330- 621, 622, 631, 632, 641, 642, 643, 644, 645, 646,
7331- 647, 648, 649, 650, 651, 655, 659, 675, 679, 683,
7332- 687, 701, 705, 706, 710, 715, 723, 734, 744, 759,
7333- 766, 771, 782, 795, 798, 803, 808, 817, 821, 822,
7334- 831, 840, 849, 858, 867, 880, 891, 900, 909, 918,
7335- 927, 936, 945, 959, 966, 977, 984, 985, 1004, 1033,
7336- 1074, 1079, 1084, 1092, 1100, 1101, 1102, 1107, 1108, 1113,
7337- 1118, 1124, 1132, 1137, 1142, 1147, 1153, 1158, 1163, 1168,
7338- 1173, 1181, 1182, 1190, 1191, 1197, 1206, 1212, 1218, 1227,
7339- 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237,
7340- 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247,
7341- 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257,
7342- 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267,
7343- 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277,
7344- 1281, 1292, 1303, 1317, 1323, 1332, 1337, 1345, 1360, 1365,
7345- 1373, 1379, 1388, 1392, 1398, 1399, 1403, 1404, 1405, 1406,
7346- 1407, 1408, 1409, 1413, 1419, 1428, 1429, 1433, 1439, 1448,
7347- 1458, 1470, 1476, 1485, 1494, 1499, 1507, 1511, 1525, 1529,
7348- 1530, 1534, 1541, 1548, 1558, 1559, 1563, 1565, 1571, 1576,
7349- 1585, 1591, 1597, 1603, 1609, 1618, 1619, 1620, 1624
7350+ 0, 213, 213, 212, 219, 221, 246, 247, 248, 249,
7351+ 250, 262, 264, 268, 277, 285, 296, 300, 307, 314,
7352+ 321, 328, 335, 342, 343, 349, 353, 360, 366, 375,
7353+ 379, 383, 384, 393, 394, 398, 399, 403, 409, 421,
7354+ 425, 431, 438, 449, 450, 456, 462, 472, 473, 474,
7355+ 475, 479, 480, 486, 492, 501, 502, 508, 517, 518,
7356+ 524, 533, 534, 540, 546, 552, 561, 562, 568, 577,
7357+ 578, 587, 588, 597, 598, 607, 608, 617, 618, 627,
7358+ 628, 637, 638, 647, 648, 657, 658, 659, 660, 661,
7359+ 662, 663, 664, 665, 666, 667, 671, 675, 691, 695,
7360+ 699, 703, 712, 716, 717, 721, 726, 734, 745, 755,
7361+ 770, 777, 782, 793, 806, 809, 814, 819, 828, 832,
7362+ 833, 842, 851, 860, 869, 878, 891, 902, 911, 920,
7363+ 929, 938, 947, 956, 970, 977, 988, 995, 996, 1015,
7364+ 1044, 1085, 1090, 1095, 1103, 1111, 1112, 1113, 1118, 1119,
7365+ 1124, 1129, 1135, 1143, 1148, 1153, 1158, 1164, 1169, 1174,
7366+ 1179, 1184, 1192, 1196, 1204, 1205, 1211, 1220, 1226, 1232,
7367+ 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250,
7368+ 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260,
7369+ 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270,
7370+ 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280,
7371+ 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290,
7372+ 1291, 1295, 1305, 1315, 1328, 1334, 1343, 1348, 1356, 1371,
7373+ 1376, 1384, 1390, 1399, 1403, 1409, 1410, 1414, 1415, 1416,
7374+ 1417, 1418, 1419, 1420, 1424, 1430, 1439, 1440, 1444, 1450,
7375+ 1459, 1469, 1481, 1487, 1496, 1505, 1510, 1518, 1522, 1536,
7376+ 1540, 1541, 1545, 1552, 1559, 1569, 1570, 1574, 1576, 1582,
7377+ 1587, 1596, 1602, 1608, 1614, 1620, 1629, 1630, 1631, 1635
7378 };
7379 #endif
7380
7381@@ -864,28 +865,28 @@ static const char *const yytname[] =
7382 "LOWP", "MEDIUMP", "HIGHP", "SUPERP", "PRECISION", "VERSION",
7383 "EXTENSION", "LINE", "COLON", "EOL", "INTERFACE", "OUTPUT",
7384 "PRAGMA_DEBUG_ON", "PRAGMA_DEBUG_OFF", "PRAGMA_OPTIMIZE_ON",
7385- "PRAGMA_OPTIMIZE_OFF", "LAYOUT_TOK", "ASM", "CLASS", "UNION", "ENUM",
7386- "TYPEDEF", "TEMPLATE", "THIS", "PACKED_TOK", "GOTO", "INLINE_TOK",
7387- "NOINLINE", "VOLATILE", "PUBLIC_TOK", "STATIC", "EXTERN", "EXTERNAL",
7388- "LONG_TOK", "SHORT_TOK", "DOUBLE_TOK", "HALF", "FIXED_TOK", "UNSIGNED",
7389- "INPUT_TOK", "OUPTUT", "HVEC2", "HVEC3", "HVEC4", "DVEC2", "DVEC3",
7390- "DVEC4", "FVEC2", "FVEC3", "FVEC4", "SAMPLER2DRECT", "SAMPLER3DRECT",
7391- "SAMPLER2DRECTSHADOW", "SIZEOF", "CAST", "NAMESPACE", "USING",
7392- "ERROR_TOK", "COMMON", "PARTITION", "ACTIVE", "SAMPLERBUFFER", "FILTER",
7393- "IMAGE1D", "IMAGE2D", "IMAGE3D", "IMAGECUBE", "IMAGE1DARRAY",
7394- "IMAGE2DARRAY", "IIMAGE1D", "IIMAGE2D", "IIMAGE3D", "IIMAGECUBE",
7395- "IIMAGE1DARRAY", "IIMAGE2DARRAY", "UIMAGE1D", "UIMAGE2D", "UIMAGE3D",
7396- "UIMAGECUBE", "UIMAGE1DARRAY", "UIMAGE2DARRAY", "IMAGE1DSHADOW",
7397- "IMAGE2DSHADOW", "IMAGEBUFFER", "IIMAGEBUFFER", "UIMAGEBUFFER",
7398- "IMAGE1DARRAYSHADOW", "IMAGE2DARRAYSHADOW", "ROW_MAJOR", "'('", "')'",
7399- "'['", "']'", "'.'", "','", "'+'", "'-'", "'!'", "'~'", "'*'", "'/'",
7400- "'%'", "'<'", "'>'", "'&'", "'^'", "'|'", "'?'", "':'", "'='", "';'",
7401- "'{'", "'}'", "$accept", "translation_unit", "$@1", "version_statement",
7402- "pragma_statement", "extension_statement_list", "extension_statement",
7403- "external_declaration_list", "variable_identifier", "primary_expression",
7404- "postfix_expression", "integer_expression", "function_call",
7405- "function_call_or_method", "function_call_generic",
7406- "function_call_header_no_parameters",
7407+ "PRAGMA_OPTIMIZE_OFF", "PRAGMA_INVARIANT_ALL", "LAYOUT_TOK", "ASM",
7408+ "CLASS", "UNION", "ENUM", "TYPEDEF", "TEMPLATE", "THIS", "PACKED_TOK",
7409+ "GOTO", "INLINE_TOK", "NOINLINE", "VOLATILE", "PUBLIC_TOK", "STATIC",
7410+ "EXTERN", "EXTERNAL", "LONG_TOK", "SHORT_TOK", "DOUBLE_TOK", "HALF",
7411+ "FIXED_TOK", "UNSIGNED", "INPUT_TOK", "OUPTUT", "HVEC2", "HVEC3",
7412+ "HVEC4", "DVEC2", "DVEC3", "DVEC4", "FVEC2", "FVEC3", "FVEC4",
7413+ "SAMPLER2DRECT", "SAMPLER3DRECT", "SAMPLER2DRECTSHADOW", "SIZEOF",
7414+ "CAST", "NAMESPACE", "USING", "ERROR_TOK", "COMMON", "PARTITION",
7415+ "ACTIVE", "SAMPLERBUFFER", "FILTER", "IMAGE1D", "IMAGE2D", "IMAGE3D",
7416+ "IMAGECUBE", "IMAGE1DARRAY", "IMAGE2DARRAY", "IIMAGE1D", "IIMAGE2D",
7417+ "IIMAGE3D", "IIMAGECUBE", "IIMAGE1DARRAY", "IIMAGE2DARRAY", "UIMAGE1D",
7418+ "UIMAGE2D", "UIMAGE3D", "UIMAGECUBE", "UIMAGE1DARRAY", "UIMAGE2DARRAY",
7419+ "IMAGE1DSHADOW", "IMAGE2DSHADOW", "IMAGEBUFFER", "IIMAGEBUFFER",
7420+ "UIMAGEBUFFER", "IMAGE1DARRAYSHADOW", "IMAGE2DARRAYSHADOW", "ROW_MAJOR",
7421+ "'('", "')'", "'['", "']'", "'.'", "','", "'+'", "'-'", "'!'", "'~'",
7422+ "'*'", "'/'", "'%'", "'<'", "'>'", "'&'", "'^'", "'|'", "'?'", "':'",
7423+ "'='", "';'", "'{'", "'}'", "$accept", "translation_unit", "$@1",
7424+ "version_statement", "pragma_statement", "extension_statement_list",
7425+ "extension_statement", "external_declaration_list",
7426+ "variable_identifier", "primary_expression", "postfix_expression",
7427+ "integer_expression", "function_call", "function_call_or_method",
7428+ "function_call_generic", "function_call_header_no_parameters",
7429 "function_call_header_with_parameters", "function_call_header",
7430 "function_identifier", "unary_expression", "unary_operator",
7431 "multiplicative_expression", "additive_expression", "shift_expression",
7432@@ -940,76 +941,76 @@ static const yytype_uint16 yytoknum[] =
7433 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
7434 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
7435 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
7436- 445, 446, 447, 40, 41, 91, 93, 46, 44, 43,
7437- 45, 33, 126, 42, 47, 37, 60, 62, 38, 94,
7438- 124, 63, 58, 61, 59, 123, 125
7439+ 445, 446, 447, 448, 40, 41, 91, 93, 46, 44,
7440+ 43, 45, 33, 126, 42, 47, 37, 60, 62, 38,
7441+ 94, 124, 63, 58, 61, 59, 123, 125
7442 };
7443 # endif
7444
7445 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
7446 static const yytype_uint16 yyr1[] =
7447 {
7448- 0, 217, 219, 218, 220, 220, 221, 221, 221, 221,
7449- 222, 222, 223, 224, 224, 225, 226, 226, 226, 226,
7450- 226, 226, 227, 227, 227, 227, 227, 227, 228, 229,
7451- 230, 230, 231, 231, 232, 232, 233, 233, 234, 235,
7452- 235, 235, 236, 236, 236, 236, 237, 237, 237, 237,
7453- 238, 238, 238, 238, 239, 239, 239, 240, 240, 240,
7454- 241, 241, 241, 241, 241, 242, 242, 242, 243, 243,
7455- 244, 244, 245, 245, 246, 246, 247, 247, 248, 248,
7456- 249, 249, 250, 250, 251, 251, 251, 251, 251, 251,
7457- 251, 251, 251, 251, 251, 252, 252, 253, 254, 254,
7458- 254, 255, 256, 256, 257, 257, 258, 259, 259, 260,
7459- 260, 260, 260, 261, 261, 261, 261, 262, 263, 263,
7460- 263, 263, 263, 263, 263, 264, 264, 264, 264, 264,
7461- 264, 264, 264, 265, 265, 266, 267, 267, 268, 268,
7462- 269, 269, 269, 270, 271, 271, 271, 271, 271, 271,
7463- 271, 271, 272, 272, 272, 272, 272, 272, 272, 272,
7464- 272, 273, 273, 274, 274, 274, 275, 275, 275, 276,
7465- 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
7466- 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
7467- 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
7468- 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
7469- 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
7470- 277, 277, 277, 278, 278, 279, 279, 280, 281, 281,
7471- 282, 282, 283, 284, 285, 285, 286, 286, 286, 286,
7472- 286, 286, 286, 287, 287, 288, 288, 289, 289, 290,
7473- 290, 291, 291, 292, 293, 293, 294, 294, 295, 296,
7474- 296, 297, 297, 297, 298, 298, 299, 299, 300, 300,
7475- 301, 301, 301, 301, 301, 302, 302, 302, 303
7476+ 0, 218, 220, 219, 221, 221, 222, 222, 222, 222,
7477+ 222, 223, 223, 224, 225, 225, 226, 227, 227, 227,
7478+ 227, 227, 227, 228, 228, 228, 228, 228, 228, 229,
7479+ 230, 231, 231, 232, 232, 233, 233, 234, 234, 235,
7480+ 236, 236, 236, 237, 237, 237, 237, 238, 238, 238,
7481+ 238, 239, 239, 239, 239, 240, 240, 240, 241, 241,
7482+ 241, 242, 242, 242, 242, 242, 243, 243, 243, 244,
7483+ 244, 245, 245, 246, 246, 247, 247, 248, 248, 249,
7484+ 249, 250, 250, 251, 251, 252, 252, 252, 252, 252,
7485+ 252, 252, 252, 252, 252, 252, 253, 253, 254, 255,
7486+ 255, 255, 256, 257, 257, 258, 258, 259, 260, 260,
7487+ 261, 261, 261, 261, 262, 262, 262, 262, 263, 264,
7488+ 264, 264, 264, 264, 264, 264, 265, 265, 265, 265,
7489+ 265, 265, 265, 265, 266, 266, 267, 268, 268, 269,
7490+ 269, 270, 270, 270, 271, 272, 272, 272, 272, 272,
7491+ 272, 272, 272, 273, 273, 273, 273, 273, 273, 273,
7492+ 273, 273, 274, 274, 275, 275, 275, 276, 276, 276,
7493+ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
7494+ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
7495+ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
7496+ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
7497+ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
7498+ 277, 278, 278, 278, 279, 279, 280, 280, 281, 282,
7499+ 282, 283, 283, 284, 285, 286, 286, 287, 287, 287,
7500+ 287, 287, 287, 287, 288, 288, 289, 289, 290, 290,
7501+ 291, 291, 292, 292, 293, 294, 294, 295, 295, 296,
7502+ 297, 297, 298, 298, 298, 299, 299, 300, 300, 301,
7503+ 301, 302, 302, 302, 302, 302, 303, 303, 303, 304
7504 };
7505
7506 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
7507 static const yytype_uint8 yyr2[] =
7508 {
7509 0, 2, 0, 4, 0, 3, 2, 2, 2, 2,
7510- 0, 2, 5, 1, 2, 1, 1, 1, 1, 1,
7511- 1, 3, 1, 4, 1, 3, 2, 2, 1, 1,
7512- 1, 3, 2, 2, 2, 1, 2, 3, 2, 1,
7513- 1, 1, 1, 2, 2, 2, 1, 1, 1, 1,
7514- 1, 3, 3, 3, 1, 3, 3, 1, 3, 3,
7515- 1, 3, 3, 3, 3, 1, 3, 3, 1, 3,
7516- 1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
7517- 1, 5, 1, 3, 1, 1, 1, 1, 1, 1,
7518- 1, 1, 1, 1, 1, 1, 3, 1, 2, 2,
7519- 4, 2, 1, 1, 2, 3, 3, 2, 5, 3,
7520- 2, 3, 2, 0, 1, 1, 1, 1, 1, 3,
7521- 5, 6, 7, 8, 5, 1, 2, 4, 5, 6,
7522- 7, 4, 2, 1, 2, 4, 1, 3, 1, 3,
7523- 1, 1, 1, 1, 1, 1, 2, 1, 2, 2,
7524- 3, 1, 1, 1, 1, 2, 1, 1, 2, 2,
7525- 1, 1, 2, 1, 3, 4, 1, 1, 1, 1,
7526+ 2, 0, 2, 5, 1, 2, 1, 1, 1, 1,
7527+ 1, 1, 3, 1, 4, 1, 3, 2, 2, 1,
7528+ 1, 1, 3, 2, 2, 2, 1, 2, 3, 2,
7529+ 1, 1, 1, 1, 2, 2, 2, 1, 1, 1,
7530+ 1, 1, 3, 3, 3, 1, 3, 3, 1, 3,
7531+ 3, 1, 3, 3, 3, 3, 1, 3, 3, 1,
7532+ 3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
7533+ 3, 1, 5, 1, 3, 1, 1, 1, 1, 1,
7534+ 1, 1, 1, 1, 1, 1, 1, 3, 1, 2,
7535+ 2, 4, 2, 1, 1, 2, 3, 3, 2, 5,
7536+ 3, 2, 3, 2, 0, 1, 1, 1, 1, 1,
7537+ 3, 5, 6, 7, 8, 5, 1, 2, 4, 5,
7538+ 6, 7, 4, 2, 1, 2, 4, 1, 3, 1,
7539+ 3, 1, 1, 1, 1, 1, 1, 2, 1, 2,
7540+ 2, 3, 1, 1, 1, 1, 2, 1, 1, 2,
7541+ 2, 1, 1, 2, 1, 3, 4, 1, 1, 1,
7542 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7543 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7544 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7545 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7547- 1, 1, 1, 5, 4, 1, 2, 3, 1, 3,
7548- 1, 4, 1, 1, 1, 1, 1, 1, 1, 1,
7549- 1, 1, 1, 2, 3, 1, 1, 2, 3, 1,
7550- 2, 1, 2, 5, 3, 1, 1, 4, 5, 3,
7551- 2, 5, 7, 6, 1, 1, 1, 0, 2, 3,
7552- 2, 2, 2, 3, 2, 1, 1, 1, 2
7553+ 1, 1, 1, 1, 5, 4, 1, 2, 3, 1,
7554+ 3, 1, 4, 1, 1, 1, 1, 1, 1, 1,
7555+ 1, 1, 1, 1, 2, 3, 1, 1, 2, 3,
7556+ 1, 2, 1, 2, 5, 3, 1, 1, 4, 5,
7557+ 3, 2, 5, 7, 6, 1, 1, 1, 0, 2,
7558+ 3, 2, 2, 2, 3, 2, 1, 1, 1, 2
7559 };
7560
7561 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
7562@@ -1017,614 +1018,638 @@ static const yytype_uint8 yyr2[] =
7563 means the default is an error. */
7564 static const yytype_uint16 yydefact[] =
7565 {
7566- 4, 0, 0, 10, 0, 1, 2, 5, 0, 0,
7567- 11, 0, 153, 152, 173, 170, 171, 172, 177, 178,
7568- 179, 180, 181, 182, 183, 184, 185, 174, 175, 176,
7569- 0, 156, 157, 160, 154, 142, 141, 140, 186, 187,
7570- 188, 189, 190, 191, 192, 193, 194, 195, 196, 198,
7571- 199, 200, 201, 203, 204, 205, 206, 207, 208, 209,
7572- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
7573- 0, 169, 168, 151, 222, 221, 220, 0, 0, 0,
7574- 0, 0, 0, 197, 202, 277, 3, 276, 0, 0,
7575- 103, 113, 0, 118, 125, 145, 147, 0, 144, 133,
7576- 161, 163, 166, 0, 167, 13, 275, 0, 158, 159,
7577- 155, 0, 0, 132, 0, 149, 0, 6, 7, 8,
7578- 9, 0, 14, 98, 0, 278, 101, 113, 143, 114,
7579- 115, 116, 104, 0, 113, 0, 99, 126, 146, 148,
7580- 134, 0, 162, 0, 0, 0, 0, 225, 150, 0,
7581- 138, 0, 136, 0, 0, 0, 0, 0, 0, 0,
7582- 0, 0, 0, 0, 15, 19, 17, 18, 20, 41,
7583- 0, 0, 0, 46, 47, 48, 49, 251, 0, 247,
7584- 16, 22, 42, 24, 29, 30, 0, 0, 35, 0,
7585- 50, 0, 54, 57, 60, 65, 68, 70, 72, 74,
7586- 76, 78, 80, 82, 95, 0, 233, 0, 133, 236,
7587- 249, 235, 234, 0, 237, 238, 239, 240, 241, 242,
7588- 105, 110, 112, 117, 0, 119, 106, 0, 0, 164,
7589- 50, 97, 0, 39, 12, 0, 230, 0, 228, 224,
7590- 226, 100, 0, 135, 0, 271, 270, 0, 0, 0,
7591- 274, 272, 0, 0, 0, 260, 0, 43, 44, 0,
7592- 243, 0, 26, 27, 0, 0, 33, 32, 0, 169,
7593- 36, 38, 85, 86, 88, 87, 90, 91, 92, 93,
7594- 94, 89, 84, 0, 45, 0, 0, 0, 0, 0,
7595+ 4, 0, 0, 11, 0, 1, 2, 5, 0, 0,
7596+ 12, 0, 154, 153, 174, 171, 172, 173, 178, 179,
7597+ 180, 181, 182, 183, 184, 185, 186, 175, 176, 177,
7598+ 0, 157, 158, 161, 155, 143, 142, 141, 187, 188,
7599+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 199,
7600+ 200, 201, 202, 204, 205, 206, 207, 208, 209, 210,
7601+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
7602+ 0, 170, 169, 152, 223, 222, 221, 0, 0, 0,
7603+ 0, 0, 0, 0, 198, 203, 278, 3, 277, 0,
7604+ 0, 104, 114, 0, 119, 126, 146, 148, 0, 145,
7605+ 134, 162, 164, 167, 0, 168, 14, 276, 0, 159,
7606+ 160, 156, 0, 0, 133, 0, 150, 0, 6, 7,
7607+ 8, 9, 10, 0, 15, 99, 0, 279, 102, 114,
7608+ 144, 115, 116, 117, 105, 0, 114, 0, 100, 127,
7609+ 147, 149, 135, 0, 163, 0, 0, 0, 0, 226,
7610+ 151, 0, 139, 0, 137, 0, 0, 0, 0, 0,
7611+ 0, 0, 0, 0, 0, 0, 16, 20, 18, 19,
7612+ 21, 42, 0, 0, 0, 47, 48, 49, 50, 252,
7613+ 0, 248, 17, 23, 43, 25, 30, 31, 0, 0,
7614+ 36, 0, 51, 0, 55, 58, 61, 66, 69, 71,
7615+ 73, 75, 77, 79, 81, 83, 96, 0, 234, 0,
7616+ 134, 237, 250, 236, 235, 0, 238, 239, 240, 241,
7617+ 242, 243, 106, 111, 113, 118, 0, 120, 107, 0,
7618+ 0, 165, 51, 98, 0, 40, 13, 0, 231, 0,
7619+ 229, 225, 227, 101, 0, 136, 0, 272, 271, 0,
7620+ 0, 0, 275, 273, 0, 0, 0, 261, 0, 44,
7621+ 45, 0, 244, 0, 27, 28, 0, 0, 34, 33,
7622+ 0, 170, 37, 39, 86, 87, 89, 88, 91, 92,
7623+ 93, 94, 95, 90, 85, 0, 46, 0, 0, 0,
7624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7625- 0, 0, 0, 0, 0, 0, 252, 248, 250, 107,
7626- 109, 111, 0, 0, 127, 0, 232, 131, 165, 223,
7627- 0, 0, 227, 139, 137, 0, 265, 264, 267, 0,
7628- 273, 0, 259, 151, 256, 0, 0, 21, 244, 0,
7629- 28, 25, 31, 37, 83, 51, 52, 53, 55, 56,
7630- 58, 59, 63, 64, 61, 62, 66, 67, 69, 71,
7631- 73, 75, 77, 79, 0, 96, 0, 120, 0, 124,
7632- 0, 128, 0, 229, 0, 266, 0, 0, 0, 0,
7633- 0, 0, 23, 0, 0, 0, 121, 129, 0, 231,
7634- 0, 268, 0, 255, 253, 258, 0, 246, 261, 245,
7635- 81, 108, 122, 0, 130, 0, 269, 263, 0, 257,
7636- 123, 262, 254
7637+ 0, 0, 0, 0, 0, 0, 0, 0, 253, 249,
7638+ 251, 108, 110, 112, 0, 0, 128, 0, 233, 132,
7639+ 166, 224, 0, 0, 228, 140, 138, 0, 266, 265,
7640+ 268, 0, 274, 0, 260, 152, 257, 0, 0, 22,
7641+ 245, 0, 29, 26, 32, 38, 84, 52, 53, 54,
7642+ 56, 57, 59, 60, 64, 65, 62, 63, 67, 68,
7643+ 70, 72, 74, 76, 78, 80, 0, 97, 0, 121,
7644+ 0, 125, 0, 129, 0, 230, 0, 267, 0, 0,
7645+ 0, 0, 0, 0, 24, 0, 0, 0, 122, 130,
7646+ 0, 232, 0, 269, 0, 256, 254, 259, 0, 247,
7647+ 262, 246, 82, 109, 123, 0, 131, 0, 270, 264,
7648+ 0, 258, 124, 263, 255
7649 };
7650
7651 /* YYDEFGOTO[NTERM-NUM]. */
7652 static const yytype_int16 yydefgoto[] =
7653 {
7654- -1, 2, 9, 3, 85, 6, 10, 86, 180, 181,
7655- 182, 339, 183, 184, 185, 186, 187, 188, 189, 190,
7656- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
7657- 201, 202, 203, 204, 283, 205, 232, 206, 207, 89,
7658- 90, 91, 221, 132, 133, 222, 92, 93, 94, 95,
7659- 151, 152, 96, 134, 97, 98, 233, 100, 101, 102,
7660- 103, 104, 146, 147, 237, 238, 317, 209, 210, 211,
7661- 212, 398, 399, 213, 214, 215, 394, 336, 216, 217,
7662- 218, 328, 376, 377, 219, 105, 106
7663+ -1, 2, 9, 3, 86, 6, 10, 87, 182, 183,
7664+ 184, 341, 185, 186, 187, 188, 189, 190, 191, 192,
7665+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
7666+ 203, 204, 205, 206, 285, 207, 234, 208, 209, 90,
7667+ 91, 92, 223, 134, 135, 224, 93, 94, 95, 96,
7668+ 153, 154, 97, 136, 98, 99, 235, 101, 102, 103,
7669+ 104, 105, 148, 149, 239, 240, 319, 211, 212, 213,
7670+ 214, 400, 401, 215, 216, 217, 396, 338, 218, 219,
7671+ 220, 330, 378, 379, 221, 106, 107
7672 };
7673
7674 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
7675 STATE-NUM. */
7676-#define YYPACT_NINF -350
7677+#define YYPACT_NINF -321
7678 static const yytype_int16 yypact[] =
7679 {
7680- -78, -56, 54, -350, -52, -350, -37, -350, 8, 3302,
7681- -350, -26, -350, -350, -350, -350, -350, -350, -350, -350,
7682- -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
7683- 88, -350, -350, -350, -350, -350, -350, -350, -350, -350,
7684- -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
7685- -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
7686- -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
7687- -66, -350, -350, 42, -350, -350, -350, 70, -4, 10,
7688- 29, 34, -79, -350, -350, -350, 3302, -350, -19, -24,
7689- -69, 5, -154, -350, 102, 16, 16, 3490, -350, -350,
7690- -350, 18, -350, 3562, -350, -350, -350, 108, -350, -350,
7691- -350, -8, 3490, -350, 16, -350, 3562, -350, -350, -350,
7692- -350, 138, -350, -350, 387, -350, -350, 24, -350, -350,
7693- -350, -350, -350, 3490, 147, 141, -350, -166, -350, -350,
7694- -350, 2387, -350, 106, 3490, 144, 1772, -350, -350, 7,
7695- 11, -87, -350, 14, 15, 1243, 30, 32, 20, 2004,
7696- 37, 2936, 25, 39, -65, -350, -350, -350, -350, -350,
7697- 2936, 2936, 2936, -350, -350, -350, -350, -350, 601, -350,
7698- -350, -350, -59, -350, -350, -350, 28, -82, 3119, 43,
7699- -30, 2936, -11, -2, 118, -74, 114, 35, 31, 36,
7700- 148, 152, -77, -350, -350, -115, -350, 40, 52, -350,
7701- -350, -350, -350, 815, -350, -350, -350, -350, -350, -350,
7702- -350, -350, -350, 172, 3490, -180, -350, 2570, 2936, -350,
7703- -350, -350, 53, -350, -350, 1888, 55, -113, -350, -350,
7704- -350, -350, 173, -350, 138, -350, -350, 178, 1656, 2936,
7705- -350, -350, -108, 2936, -161, -350, 2204, -350, -350, -68,
7706- -350, 1029, -350, -350, 2936, 3418, -350, -350, 2936, 61,
7707- -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
7708- -350, -350, -350, 2936, -350, 2936, 2936, 2936, 2936, 2936,
7709- 2936, 2936, 2936, 2936, 2936, 2936, 2936, 2936, 2936, 2936,
7710- 2936, 2936, 2936, 2936, 2936, 2936, -350, -350, -350, 63,
7711- -350, -350, 2753, 2936, 46, 60, -350, -350, -350, -350,
7712- 2936, 144, -350, -350, -350, 67, -350, -350, 2204, -55,
7713- -350, -54, -350, 238, 65, 188, 71, -350, -350, 72,
7714- 65, 73, -350, -350, -350, -350, -350, -350, -11, -11,
7715- -2, -2, 118, 118, 118, 118, -74, -74, 114, 35,
7716- 31, 36, 148, 152, -157, -350, 2936, 56, 83, -350,
7717- 2936, 68, 84, -350, 2936, -350, 69, 90, 1243, 74,
7718- 77, 1456, -350, 2936, 86, 2936, 79, -350, 2936, -350,
7719- -53, 2936, 1456, 255, -350, -350, 2936, -350, -350, -350,
7720- -350, -350, -350, 2936, -350, 80, 65, -350, 1243, -350,
7721- -350, -350, -350
7722+ -86, -57, 45, -321, -56, -321, -50, -321, -10, 3320,
7723+ -321, -26, -321, -321, -321, -321, -321, -321, -321, -321,
7724+ -321, -321, -321, -321, -321, -321, -321, -321, -321, -321,
7725+ 79, -321, -321, -321, -321, -321, -321, -321, -321, -321,
7726+ -321, -321, -321, -321, -321, -321, -321, -321, -321, -321,
7727+ -321, -321, -321, -321, -321, -321, -321, -321, -321, -321,
7728+ -321, -321, -321, -321, -321, -321, -321, -321, -321, -321,
7729+ -70, -321, -321, 43, -321, -321, -321, 18, -22, -12,
7730+ -5, 2, 25, -101, -321, -321, -321, 3320, -321, -43,
7731+ -55, -54, 6, -148, -321, 52, 211, 211, 3509, -321,
7732+ -321, -321, -47, -321, 3581, -321, -321, -321, 110, -321,
7733+ -321, -321, -14, 3509, -321, 211, -321, 3581, -321, -321,
7734+ -321, -321, -321, 131, -321, -321, 389, -321, -321, 15,
7735+ -321, -321, -321, -321, -321, 3509, 109, 136, -321, -152,
7736+ -321, -321, -321, 2400, -321, 105, 3509, 143, 1781, -321,
7737+ -321, 7, 9, -107, -321, 10, 12, 1249, 27, 36,
7738+ 17, 2015, 40, 2952, 22, 42, -65, -321, -321, -321,
7739+ -321, -321, 2952, 2952, 2952, -321, -321, -321, -321, -321,
7740+ 604, -321, -321, -321, -20, -321, -321, -321, 47, -92,
7741+ 3136, 46, -67, 2952, -24, -16, 111, -73, 108, 37,
7742+ 41, 39, 162, 161, -82, -321, -321, -147, -321, 44,
7743+ 61, -321, -321, -321, -321, 819, -321, -321, -321, -321,
7744+ -321, -321, -321, -321, -321, 181, 3509, -160, -321, 2584,
7745+ 2952, -321, -321, -321, 63, -321, -321, 1898, 62, -146,
7746+ -321, -321, -321, -321, 183, -321, 131, -321, -321, 187,
7747+ 1664, 2952, -321, -321, -144, 2952, -140, -321, 2216, -321,
7748+ -321, -81, -321, 1034, -321, -321, 2952, 3437, -321, -321,
7749+ 2952, 70, -321, -321, -321, -321, -321, -321, -321, -321,
7750+ -321, -321, -321, -321, -321, 2952, -321, 2952, 2952, 2952,
7751+ 2952, 2952, 2952, 2952, 2952, 2952, 2952, 2952, 2952, 2952,
7752+ 2952, 2952, 2952, 2952, 2952, 2952, 2952, 2952, -321, -321,
7753+ -321, 74, -321, -321, 2768, 2952, 64, 69, -321, -321,
7754+ -321, -321, 2952, 143, -321, -321, -321, 82, -321, -321,
7755+ 2216, -74, -321, -68, -321, 235, 78, 203, 85, -321,
7756+ -321, 84, 78, 88, -321, -321, -321, -321, -321, -321,
7757+ -24, -24, -16, -16, 111, 111, 111, 111, -73, -73,
7758+ 108, 37, 41, 39, 162, 161, -129, -321, 2952, 71,
7759+ 86, -321, 2952, 72, 87, -321, 2952, -321, 73, 92,
7760+ 1249, 75, 76, 1463, -321, 2952, 95, 2952, 80, -321,
7761+ 2952, -321, -63, 2952, 1463, 277, -321, -321, 2952, -321,
7762+ -321, -321, -321, -321, -321, 2952, -321, 81, 78, -321,
7763+ 1249, -321, -321, -321, -321
7764 };
7765
7766 /* YYPGOTO[NTERM-NUM]. */
7767 static const yytype_int16 yypgoto[] =
7768 {
7769- -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
7770- -350, -350, -350, -350, 22, -350, -350, -350, -350, -135,
7771- -350, -83, -81, -104, -85, -13, -6, -5, -3, -1,
7772- -7, -350, -133, -97, -350, -156, -193, 9, 12, -350,
7773- -350, -350, 76, 170, 168, 81, -350, -350, -239, -350,
7774- -350, 59, -71, -350, -350, -72, -9, 1, -350, -350,
7775- 227, -350, 163, -139, -350, -12, -283, 62, -151, -349,
7776- -67, -84, 223, 135, 66, -350, -350, -10, -350, -350,
7777- -350, -350, -350, -350, -350, 229, -350
7778+ -321, -321, -321, -321, -321, -321, -321, -321, -321, -321,
7779+ -321, -321, -321, -321, 26, -321, -321, -321, -321, -135,
7780+ -321, -91, -88, -106, -90, -3, -6, -4, -2, -1,
7781+ 0, -321, -139, -174, -321, -156, -217, 11, 13, -321,
7782+ -321, -321, 83, 170, 164, 89, -321, -321, -243, -321,
7783+ -321, 56, -71, -321, -321, -72, -9, -32, -321, -321,
7784+ 227, -321, 160, -131, -321, -15, -195, 57, -154, -320,
7785+ -69, -84, 222, 133, 66, -321, -321, -13, -321, -321,
7786+ -321, -321, -321, -321, -321, 231, -321
7787 };
7788
7789 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
7790 positive, shift that token. If negative, reduce the rule which
7791 number is the opposite. If zero, do what YYDEFACT says.
7792 If YYTABLE_NINF, syntax error. */
7793-#define YYTABLE_NINF -169
7794+#define YYTABLE_NINF -170
7795 static const yytype_int16 yytable[] =
7796 {
7797- 99, 115, 114, 252, 247, 254, 230, 240, 231, 128,
7798- 111, -168, 292, 293, 303, 312, 259, 335, 87, 12,
7799- 13, 88, 4, 138, 139, 262, 263, 226, 128, 227,
7800- 369, 1, 397, 313, 315, 257, 258, 305, 129, 130,
7801- 131, 305, 148, 397, 135, 12, 13, 228, 30, 31,
7802- 32, 332, 33, 34, 5, 383, 284, 129, 130, 131,
7803- 136, 7, 308, 272, 273, 274, 275, 276, 277, 278,
7804- 279, 280, 281, 8, 30, 31, 32, 99, 33, 34,
7805- 35, 36, 37, 305, 11, 321, 107, 387, 140, 335,
7806- 305, 270, 230, 329, 231, 87, 240, 331, 88, 306,
7807- 334, 322, 402, 145, 142, 404, 330, 243, 340, 117,
7808- 308, 244, 267, 409, 121, 208, 268, 149, 113, 368,
7809- 410, 108, 109, 118, 223, 110, 337, 372, -40, 127,
7810- 305, 316, 294, 295, 304, 145, 264, 145, 265, 378,
7811- 379, 405, 119, 305, 305, 305, 208, 120, 364, 112,
7812- 345, 346, 347, 230, 230, 230, 230, 230, 230, 230,
7813- 230, 230, 230, 230, 230, 230, 230, 230, 230, 208,
7814- 126, 343, 334, 384, 74, 75, 76, 230, 137, 231,
7815- 129, 130, 131, 282, 143, 230, 344, 231, 352, 353,
7816- 354, 355, 285, 286, 287, 123, 124, 288, 289, -102,
7817- 290, 291, 296, 297, 208, 348, 349, 144, 365, 350,
7818- 351, 356, 357, 141, 150, 223, 316, 225, 390, 234,
7819- 236, 241, 266, 248, 242, 249, 145, 393, 245, 246,
7820- 253, 230, 256, 231, 250, 406, 271, 255, 301, 208,
7821- 299, 12, 13, 298, 302, -39, 300, 208, 309, 318,
7822- 320, 323, 208, 325, 123, -34, 371, 412, 366, 370,
7823- 374, 115, 114, 305, 380, 381, -40, 408, 382, 385,
7824- 30, 31, 32, 316, 33, 34, 35, 36, 37, 386,
7825- 389, 388, 401, 391, 392, 358, 400, 342, 316, 178,
7826- 396, 316, 403, 359, 411, 360, 363, 220, 361, 316,
7827- 310, 362, 224, 324, 116, 311, 316, 235, 407, 373,
7828- 326, 125, 395, 261, 327, 122, 0, 0, 375, 208,
7829+ 100, 116, 115, 249, 233, 254, 112, 256, 232, 305,
7830+ 130, -169, 317, 294, 295, 337, 272, 242, 261, 130,
7831+ 88, 4, 89, 1, 140, 141, 274, 275, 276, 277,
7832+ 278, 279, 280, 281, 282, 283, 314, 259, 260, 131,
7833+ 132, 133, 228, 150, 229, 5, 12, 13, 131, 132,
7834+ 133, 137, 307, 323, 315, 307, 318, 7, 286, 307,
7835+ 8, 310, 230, 399, 264, 265, 11, 138, 308, 324,
7836+ 307, 332, 144, 334, 399, 30, 31, 32, 100, 33,
7837+ 34, 35, 36, 37, 385, 151, 108, 337, 245, 142,
7838+ 233, 118, 246, 123, 232, 331, 345, 370, 88, 333,
7839+ 89, 119, 336, 269, 147, 374, 242, 270, 120, 310,
7840+ 342, 346, 109, 110, 339, 121, 111, 210, 307, 114,
7841+ 371, 380, 74, 75, 76, 307, 225, 381, 139, -41,
7842+ 306, 307, 407, 367, 296, 297, 307, 147, 122, 147,
7843+ 128, 318, 131, 132, 133, 129, 113, 284, 210, 143,
7844+ 366, 386, 347, 348, 349, 232, 232, 232, 232, 232,
7845+ 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
7846+ 232, 210, 125, 126, 336, 233, 266, 389, 267, 232,
7847+ 287, 288, 289, 233, 290, 291, 145, 232, 354, 355,
7848+ 356, 357, 404, 292, 293, 406, 298, 299, 318, 350,
7849+ 351, -103, 146, 411, 352, 353, 210, 152, 358, 359,
7850+ 412, 402, 227, 318, 12, 13, 318, 225, 236, 238,
7851+ 392, 250, 243, 244, 318, 247, 395, 248, 147, 233,
7852+ 251, 318, 252, 232, 255, 257, 258, 408, 12, 13,
7853+ 273, 210, 268, 30, 31, 32, 300, 33, 34, 210,
7854+ 302, 301, 303, 304, 210, -40, 414, 311, 322, 125,
7855+ 320, 325, 327, 116, 115, -35, 373, 30, 31, 32,
7856+ 368, 33, 34, 35, 36, 37, 376, 307, 372, 382,
7857+ 383, 384, -41, 388, 391, 387, 390, 394, 393, 410,
7858+ 398, 180, 403, 344, 405, 361, 413, 360, 362, 222,
7859+ 226, 363, 326, 364, 117, 365, 237, 328, 375, 312,
7860+ 409, 127, 397, 263, 0, 313, 329, 377, 124, 0,
7861+ 0, 210, 0, 0, 0, 0, 0, 0, 0, 0,
7862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7866- 0, 0, 0, 0, 0, 0, 0, 0, 0, 208,
7867- 0, 0, 208, 0, 0, 0, 0, 0, 0, 0,
7868- 0, 0, 0, 208, 0, 0, 0, 0, 0, 0,
7869- 12, 13, 14, 15, 16, 17, 153, 154, 155, 208,
7870- 156, 157, 158, 159, 160, 161, 162, 18, 19, 20,
7871- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
7872- 31, 32, 0, 33, 34, 35, 36, 37, 38, 39,
7873- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
7874- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
7875- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
7876- 70, 71, 163, 164, 165, 166, 167, 168, 169, 0,
7877- 0, 170, 171, 0, 0, 0, 0, 0, 0, 0,
7878+ 0, 210, 0, 0, 210, 0, 0, 0, 0, 0,
7879+ 0, 0, 0, 0, 0, 210, 0, 0, 0, 0,
7880+ 0, 0, 12, 13, 14, 15, 16, 17, 155, 156,
7881+ 157, 210, 158, 159, 160, 161, 162, 163, 164, 18,
7882+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
7883+ 29, 30, 31, 32, 0, 33, 34, 35, 36, 37,
7884+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
7885+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7886+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
7887+ 68, 69, 70, 71, 165, 166, 167, 168, 169, 170,
7888+ 171, 0, 0, 172, 173, 0, 0, 0, 0, 0,
7889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7890- 73, 74, 75, 76, 0, 77, 0, 0, 0, 0,
7891- 0, 0, 0, 0, 0, 0, 0, 82, 0, 0,
7892+ 0, 0, 73, 74, 75, 76, 0, 77, 0, 0,
7893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7894+ 83, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7897- 0, 83, 0, 84, 0, 0, 0, 0, 0, 0,
7898+ 0, 0, 0, 0, 84, 0, 85, 0, 0, 0,
7899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7902- 172, 0, 0, 0, 0, 0, 173, 174, 175, 176,
7903+ 0, 0, 0, 174, 0, 0, 0, 0, 0, 175,
7904+ 176, 177, 178, 0, 0, 0, 0, 0, 0, 0,
7905+ 0, 0, 0, 0, 179, 180, 181, 12, 13, 14,
7906+ 15, 16, 17, 155, 156, 157, 0, 158, 159, 160,
7907+ 161, 162, 163, 164, 18, 19, 20, 21, 22, 23,
7908+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 0,
7909+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
7910+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
7911+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
7912+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 165,
7913+ 166, 167, 168, 169, 170, 171, 0, 0, 172, 173,
7914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7915- 0, 177, 178, 179, 12, 13, 14, 15, 16, 17,
7916- 153, 154, 155, 0, 156, 157, 158, 159, 160, 161,
7917- 162, 18, 19, 20, 21, 22, 23, 24, 25, 26,
7918- 27, 28, 29, 30, 31, 32, 0, 33, 34, 35,
7919- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
7920- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
7921- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
7922- 66, 67, 68, 69, 70, 71, 163, 164, 165, 166,
7923- 167, 168, 169, 0, 0, 170, 171, 0, 0, 0,
7924+ 0, 0, 0, 0, 0, 0, 0, 73, 74, 75,
7925+ 76, 0, 77, 0, 0, 0, 0, 0, 0, 0,
7926+ 0, 0, 0, 0, 0, 83, 0, 0, 0, 0,
7927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7928- 0, 0, 0, 0, 73, 74, 75, 76, 0, 77,
7929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7930- 0, 82, 0, 0, 0, 0, 0, 0, 0, 0,
7931+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,
7932+ 0, 85, 0, 0, 0, 0, 0, 0, 0, 0,
7933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7935- 0, 0, 0, 0, 0, 83, 0, 84, 0, 0,
7936+ 0, 0, 0, 0, 0, 0, 0, 0, 174, 0,
7937+ 0, 0, 0, 0, 175, 176, 177, 178, 0, 0,
7938+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 179,
7939+ 180, 262, 12, 13, 14, 15, 16, 17, 155, 156,
7940+ 157, 0, 158, 159, 160, 161, 162, 163, 164, 18,
7941+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
7942+ 29, 30, 31, 32, 0, 33, 34, 35, 36, 37,
7943+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
7944+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7945+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
7946+ 68, 69, 70, 71, 165, 166, 167, 168, 169, 170,
7947+ 171, 0, 0, 172, 173, 0, 0, 0, 0, 0,
7948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7949+ 0, 0, 73, 74, 75, 76, 0, 77, 0, 0,
7950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7951+ 83, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7953- 0, 0, 0, 0, 172, 0, 0, 0, 0, 0,
7954- 173, 174, 175, 176, 0, 0, 0, 0, 0, 0,
7955- 0, 0, 0, 0, 0, 177, 178, 260, 12, 13,
7956- 14, 15, 16, 17, 153, 154, 155, 0, 156, 157,
7957- 158, 159, 160, 161, 162, 18, 19, 20, 21, 22,
7958- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
7959- 0, 33, 34, 35, 36, 37, 38, 39, 40, 41,
7960- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
7961- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
7962- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
7963- 163, 164, 165, 166, 167, 168, 169, 0, 0, 170,
7964- 171, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7965- 0, 0, 0, 0, 0, 0, 0, 0, 73, 74,
7966- 75, 76, 0, 77, 0, 0, 0, 0, 0, 0,
7967- 0, 0, 0, 0, 0, 82, 0, 0, 0, 0,
7968+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7969+ 0, 0, 0, 0, 84, 0, 85, 0, 0, 0,
7970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7972- 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,
7973- 0, 84, 0, 0, 0, 0, 0, 0, 0, 0,
7974 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7975+ 0, 0, 0, 174, 0, 0, 0, 0, 0, 175,
7976+ 176, 177, 178, 0, 0, 0, 0, 0, 0, 0,
7977+ 0, 0, 0, 0, 179, 180, 309, 12, 13, 14,
7978+ 15, 16, 17, 155, 156, 157, 0, 158, 159, 160,
7979+ 161, 162, 163, 164, 18, 19, 20, 21, 22, 23,
7980+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 0,
7981+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
7982+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
7983+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
7984+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 165,
7985+ 166, 167, 168, 169, 170, 171, 0, 0, 172, 173,
7986+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7987+ 0, 0, 0, 0, 0, 0, 0, 73, 74, 75,
7988+ 76, 0, 77, 0, 0, 0, 0, 0, 0, 0,
7989+ 0, 0, 0, 0, 0, 83, 0, 0, 0, 0,
7990+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7991+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7992+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,
7993+ 0, 85, 0, 0, 0, 0, 0, 0, 0, 0,
7994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7995- 0, 0, 0, 0, 0, 0, 0, 0, 172, 0,
7996- 0, 0, 0, 0, 173, 174, 175, 176, 0, 0,
7997- 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
7998- 178, 307, 12, 13, 14, 15, 16, 17, 153, 154,
7999- 155, 0, 156, 157, 158, 159, 160, 161, 162, 18,
8000+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8001+ 0, 0, 0, 0, 0, 0, 0, 0, 174, 0,
8002+ 0, 0, 0, 0, 175, 176, 177, 178, 0, 0,
8003+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 179,
8004+ 180, 340, 12, 13, 14, 15, 16, 17, 155, 156,
8005+ 157, 0, 158, 159, 160, 161, 162, 163, 164, 18,
8006 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
8007 29, 30, 31, 32, 0, 33, 34, 35, 36, 37,
8008 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
8009 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
8010 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
8011- 68, 69, 70, 71, 163, 164, 165, 166, 167, 168,
8012- 169, 0, 0, 170, 171, 0, 0, 0, 0, 0,
8013+ 68, 69, 70, 71, 165, 166, 167, 168, 169, 170,
8014+ 171, 0, 0, 172, 173, 0, 0, 0, 0, 0,
8015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8016 0, 0, 73, 74, 75, 76, 0, 77, 0, 0,
8017- 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,
8018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8019+ 83, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8021 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8022- 0, 0, 0, 83, 0, 84, 0, 0, 0, 0,
8023+ 0, 0, 0, 0, 84, 0, 85, 0, 0, 0,
8024 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8025 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8027- 0, 0, 172, 0, 0, 0, 0, 0, 173, 174,
8028- 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
8029- 0, 0, 0, 177, 178, 338, 12, 13, 14, 15,
8030- 16, 17, 153, 154, 155, 0, 156, 157, 158, 159,
8031- 160, 161, 162, 18, 19, 20, 21, 22, 23, 24,
8032+ 0, 0, 0, 174, 0, 0, 0, 0, 0, 175,
8033+ 176, 177, 178, 0, 0, 0, 0, 0, 0, 0,
8034+ 0, 0, 0, 0, 179, 180, 12, 13, 14, 15,
8035+ 16, 17, 155, 156, 157, 0, 158, 159, 160, 161,
8036+ 162, 163, 164, 18, 19, 20, 21, 22, 23, 24,
8037 25, 26, 27, 28, 29, 30, 31, 32, 0, 33,
8038 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
8039 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
8040 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
8041- 64, 65, 66, 67, 68, 69, 70, 71, 163, 164,
8042- 165, 166, 167, 168, 169, 0, 0, 170, 171, 0,
8043+ 64, 65, 66, 67, 68, 69, 70, 71, 165, 166,
8044+ 167, 168, 169, 170, 171, 0, 0, 172, 173, 0,
8045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8046 0, 0, 0, 0, 0, 0, 73, 74, 75, 76,
8047 0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
8048- 0, 0, 0, 82, 0, 0, 0, 0, 0, 0,
8049- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8050+ 0, 0, 0, 0, 83, 0, 0, 0, 0, 0,
8051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8052- 0, 0, 0, 0, 0, 0, 0, 83, 0, 84,
8053 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8054+ 0, 0, 0, 0, 0, 0, 0, 0, 84, 0,
8055+ 85, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8056 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8058- 0, 0, 0, 0, 0, 0, 172, 0, 0, 0,
8059- 0, 0, 173, 174, 175, 176, 0, 0, 0, 0,
8060- 0, 0, 0, 0, 0, 0, 0, 177, 178, 12,
8061- 13, 14, 15, 16, 17, 153, 154, 155, 0, 156,
8062- 157, 158, 159, 160, 161, 162, 18, 19, 20, 21,
8063- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
8064- 32, 0, 33, 34, 35, 36, 37, 38, 39, 40,
8065- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
8066- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
8067- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
8068- 71, 163, 164, 165, 166, 167, 168, 169, 0, 0,
8069- 170, 171, 0, 0, 0, 0, 0, 0, 0, 0,
8070- 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,
8071- 74, 75, 76, 0, 77, 0, 0, 0, 0, 0,
8072- 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
8073- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8074- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8075- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8076- 83, 0, 84, 0, 0, 0, 0, 0, 0, 0,
8077+ 0, 0, 0, 0, 0, 0, 0, 174, 0, 0,
8078+ 0, 0, 0, 175, 176, 177, 178, 12, 13, 14,
8079+ 15, 16, 17, 0, 0, 0, 0, 0, 179, 126,
8080+ 0, 0, 0, 0, 18, 19, 20, 21, 22, 23,
8081+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 0,
8082+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
8083+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
8084+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
8085+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 0,
8086+ 166, 167, 168, 169, 170, 171, 0, 0, 172, 173,
8087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8088+ 0, 0, 0, 0, 0, 0, 0, 73, 74, 75,
8089+ 76, 0, 77, 0, 0, 0, 0, 0, 0, 0,
8090+ 0, 0, 0, 0, 0, 83, 14, 15, 16, 17,
8091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8092- 0, 0, 0, 0, 0, 0, 0, 0, 0, 172,
8093- 0, 0, 0, 0, 0, 173, 174, 175, 176, 12,
8094- 13, 14, 15, 16, 17, 0, 0, 0, 0, 0,
8095- 177, 124, 0, 0, 0, 0, 18, 19, 20, 21,
8096- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
8097- 32, 0, 33, 34, 35, 36, 37, 38, 39, 40,
8098- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
8099- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
8100- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
8101- 71, 0, 164, 165, 166, 167, 168, 169, 0, 0,
8102- 170, 171, 0, 0, 0, 0, 0, 0, 0, 0,
8103- 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,
8104- 74, 75, 76, 0, 77, 0, 0, 0, 0, 0,
8105- 0, 0, 0, 0, 0, 0, 82, 14, 15, 16,
8106- 17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8107- 0, 0, 18, 19, 20, 21, 22, 23, 24, 25,
8108- 26, 27, 28, 29, 0, 0, 0, 0, 0, 0,
8109- 83, 0, 84, 38, 39, 40, 41, 42, 43, 44,
8110- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
8111- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
8112- 65, 66, 67, 68, 69, 70, 71, 0, 72, 172,
8113- 0, 0, 0, 0, 0, 173, 174, 175, 176, 0,
8114- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8115- 177, 0, 0, 0, 0, 0, 74, 75, 76, 0,
8116+ 0, 18, 19, 20, 21, 22, 23, 24, 25, 26,
8117+ 27, 28, 29, 0, 0, 0, 0, 0, 0, 84,
8118+ 0, 85, 38, 39, 40, 41, 42, 43, 44, 45,
8119+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
8120+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
8121+ 66, 67, 68, 69, 70, 71, 0, 72, 174, 0,
8122+ 0, 0, 0, 0, 175, 176, 177, 178, 0, 0,
8123+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 179,
8124+ 0, 0, 0, 0, 0, 74, 75, 76, 0, 0,
8125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8126 0, 0, 0, 14, 15, 16, 17, 0, 0, 0,
8127 0, 0, 0, 0, 0, 0, 0, 0, 18, 19,
8128 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
8129- 0, 0, 0, 0, 0, 0, 83, 0, 84, 38,
8130+ 0, 0, 0, 0, 0, 0, 84, 0, 85, 38,
8131 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
8132 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
8133 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
8134 69, 70, 71, 0, 72, 0, 0, 0, 0, 0,
8135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8136- 0, 0, 0, 0, 0, 0, 0, 0, 239, 0,
8137+ 0, 0, 0, 0, 0, 0, 0, 0, 241, 0,
8138 0, 0, 74, 75, 76, 0, 0, 0, 0, 0,
8139- 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
8140- 15, 16, 17, 0, 0, 0, 0, 0, 0, 0,
8141- 0, 0, 0, 0, 18, 19, 20, 21, 22, 23,
8142- 24, 25, 26, 27, 28, 29, 0, 0, 0, 0,
8143- 0, 0, 83, 0, 84, 38, 39, 40, 41, 42,
8144- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
8145- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
8146- 63, 64, 65, 66, 67, 68, 69, 70, 71, 0,
8147- 164, 165, 166, 167, 168, 169, 0, 0, 170, 171,
8148- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8149- 0, 0, 0, 0, 319, 0, 0, 0, 74, 75,
8150- 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8151- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8152- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8153- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8154- 0, 0, 0, 0, 0, 0, 0, 0, 83, 0,
8155- 84, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8156- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8157- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8158- 0, 0, 0, 0, 0, 0, 0, 172, 0, 0,
8159- 0, 0, 0, 173, 174, 175, 176, 12, 13, 14,
8160- 15, 16, 17, 0, 0, 0, 0, 0, 251, 0,
8161- 0, 0, 0, 0, 18, 19, 20, 21, 22, 23,
8162- 24, 25, 26, 27, 28, 29, 30, 31, 32, 0,
8163- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
8164- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
8165- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
8166- 63, 64, 65, 66, 67, 68, 69, 70, 71, 0,
8167- 164, 165, 166, 167, 168, 169, 0, 0, 170, 171,
8168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8169- 0, 0, 0, 0, 0, 0, 0, 333, 74, 75,
8170- 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8171- 0, 0, 0, 0, 82, 0, 0, 0, 0, 0,
8172+ 14, 15, 16, 17, 0, 0, 0, 0, 0, 0,
8173+ 0, 0, 0, 0, 0, 18, 19, 20, 21, 22,
8174+ 23, 24, 25, 26, 27, 28, 29, 0, 0, 0,
8175+ 0, 0, 0, 84, 0, 85, 38, 39, 40, 41,
8176+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
8177+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
8178+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
8179+ 0, 166, 167, 168, 169, 170, 171, 0, 0, 172,
8180+ 173, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8181+ 0, 0, 0, 0, 0, 321, 0, 0, 0, 74,
8182+ 75, 76, 0, 0, 0, 0, 0, 0, 0, 0,
8183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8185- 0, 0, 0, 0, 0, 0, 0, 0, 83, 0,
8186- 84, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8189- 0, 0, 14, 15, 16, 17, 0, 172, 0, 0,
8190- 0, 0, 0, 173, 174, 175, 176, 18, 19, 20,
8191- 21, 22, 23, 24, 25, 26, 27, 28, 29, 0,
8192- 0, 0, 0, 0, 0, 0, 0, 0, 38, 39,
8193- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
8194- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
8195- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
8196- 70, 71, 0, 164, 165, 166, 167, 168, 169, 0,
8197- 0, 170, 171, 0, 0, 0, 0, 0, 0, 0,
8198+ 84, 0, 85, 0, 0, 0, 0, 0, 0, 0,
8199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8200- 0, 74, 75, 76, 0, 0, 0, 0, 0, 0,
8201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8202+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 174,
8203+ 0, 0, 0, 0, 0, 175, 176, 177, 178, 12,
8204+ 13, 14, 15, 16, 17, 0, 0, 0, 0, 0,
8205+ 253, 0, 0, 0, 0, 0, 18, 19, 20, 21,
8206+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
8207+ 32, 0, 33, 34, 35, 36, 37, 38, 39, 40,
8208+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
8209+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
8210+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
8211+ 71, 0, 166, 167, 168, 169, 170, 171, 0, 0,
8212+ 172, 173, 0, 0, 0, 0, 0, 0, 0, 0,
8213+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 335,
8214+ 74, 75, 76, 0, 0, 0, 0, 0, 0, 0,
8215+ 0, 0, 0, 0, 0, 0, 0, 83, 0, 0,
8216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8219- 0, 83, 0, 84, 0, 0, 0, 0, 0, 0,
8220+ 0, 84, 0, 85, 0, 0, 0, 0, 0, 0,
8221 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8223 0, 0, 0, 0, 0, 14, 15, 16, 17, 0,
8224- 172, 0, 0, 229, 0, 0, 173, 174, 175, 176,
8225+ 174, 0, 0, 0, 0, 0, 175, 176, 177, 178,
8226 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
8227 28, 29, 0, 0, 0, 0, 0, 0, 0, 0,
8228 0, 38, 39, 40, 41, 42, 43, 44, 45, 46,
8229 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
8230 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
8231- 67, 68, 69, 70, 71, 0, 164, 165, 166, 167,
8232- 168, 169, 0, 0, 170, 171, 0, 0, 0, 0,
8233+ 67, 68, 69, 70, 71, 0, 166, 167, 168, 169,
8234+ 170, 171, 0, 0, 172, 173, 0, 0, 0, 0,
8235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8236 0, 0, 0, 0, 74, 75, 76, 0, 0, 0,
8237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8238 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8241- 0, 0, 0, 0, 83, 0, 84, 0, 0, 0,
8242+ 0, 0, 0, 0, 0, 84, 0, 85, 0, 0,
8243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8245- 0, 0, 0, 0, 0, 0, 0, 0, 14, 15,
8246- 16, 17, 0, 172, 0, 0, 314, 0, 0, 173,
8247- 174, 175, 176, 18, 19, 20, 21, 22, 23, 24,
8248- 25, 26, 27, 28, 29, 0, 0, 0, 0, 0,
8249- 0, 0, 0, 0, 38, 39, 40, 41, 42, 43,
8250- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
8251- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
8252- 64, 65, 66, 67, 68, 69, 70, 71, 0, 164,
8253- 165, 166, 167, 168, 169, 0, 0, 170, 171, 0,
8254+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
8255+ 15, 16, 17, 0, 174, 0, 0, 231, 0, 0,
8256+ 175, 176, 177, 178, 18, 19, 20, 21, 22, 23,
8257+ 24, 25, 26, 27, 28, 29, 0, 0, 0, 0,
8258+ 0, 0, 0, 0, 0, 38, 39, 40, 41, 42,
8259+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
8260+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
8261+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 0,
8262+ 166, 167, 168, 169, 170, 171, 0, 0, 172, 173,
8263 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8264- 0, 0, 0, 0, 0, 0, 0, 74, 75, 76,
8265+ 0, 0, 0, 0, 0, 0, 0, 0, 74, 75,
8266+ 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8270+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,
8271+ 0, 85, 0, 0, 0, 0, 0, 0, 0, 0,
8272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8273- 0, 0, 0, 0, 0, 0, 0, 83, 0, 84,
8274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8275+ 0, 0, 0, 14, 15, 16, 17, 0, 174, 0,
8276+ 0, 316, 0, 0, 175, 176, 177, 178, 18, 19,
8277+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
8278+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 38,
8279+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
8280+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
8281+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
8282+ 69, 70, 71, 0, 166, 167, 168, 169, 170, 171,
8283+ 0, 0, 172, 173, 0, 0, 0, 0, 0, 0,
8284 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8285+ 0, 0, 74, 75, 76, 0, 0, 0, 0, 0,
8286 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8287- 0, 14, 15, 16, 17, 0, 172, 0, 0, 367,
8288- 0, 0, 173, 174, 175, 176, 18, 19, 20, 21,
8289- 22, 23, 24, 25, 26, 27, 28, 29, 0, 0,
8290- 0, 0, 0, 0, 0, 0, 0, 38, 39, 40,
8291- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
8292- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
8293- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
8294- 71, 0, 164, 165, 166, 167, 168, 169, 0, 0,
8295- 170, 171, 0, 0, 0, 0, 0, 0, 0, 0,
8296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8297- 74, 75, 76, 0, 0, 0, 0, 0, 0, 0,
8298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8300+ 0, 0, 0, 84, 0, 85, 0, 0, 0, 0,
8301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8303- 83, 0, 84, 0, 0, 0, 0, 0, 0, 0,
8304+ 0, 0, 0, 0, 0, 0, 0, 14, 15, 16,
8305+ 17, 0, 174, 0, 0, 369, 0, 0, 175, 176,
8306+ 177, 178, 18, 19, 20, 21, 22, 23, 24, 25,
8307+ 26, 27, 28, 29, 0, 0, 0, 0, 0, 0,
8308+ 0, 0, 0, 38, 39, 40, 41, 42, 43, 44,
8309+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
8310+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
8311+ 65, 66, 67, 68, 69, 70, 71, 0, 166, 167,
8312+ 168, 169, 170, 171, 0, 0, 172, 173, 0, 0,
8313 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8314+ 0, 0, 0, 0, 0, 0, 74, 75, 76, 0,
8315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8316- 0, 0, 0, 0, 14, 15, 16, 17, 0, 172,
8317- 0, 0, 0, 0, 0, 173, 174, 175, 176, 18,
8318- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
8319- 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8320- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
8321- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
8322- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
8323- 68, 69, 70, 269, 0, 164, 165, 166, 167, 168,
8324- 169, 0, 0, 170, 171, 0, 0, 0, 0, 0,
8325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8326- 0, 0, 0, 74, 75, 76, 0, 0, 0, 0,
8327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8329+ 0, 0, 0, 0, 0, 0, 0, 84, 0, 85,
8330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8332- 0, 0, 0, 83, 0, 84, 0, 0, 0, 0,
8333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8334+ 0, 14, 15, 16, 17, 0, 174, 0, 0, 0,
8335+ 0, 0, 175, 176, 177, 178, 18, 19, 20, 21,
8336+ 22, 23, 24, 25, 26, 27, 28, 29, 0, 0,
8337+ 0, 0, 0, 0, 0, 0, 0, 38, 39, 40,
8338+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
8339+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
8340+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
8341+ 271, 0, 166, 167, 168, 169, 170, 171, 0, 0,
8342+ 172, 173, 0, 0, 0, 0, 0, 0, 0, 0,
8343+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8344+ 74, 75, 76, 0, 0, 0, 0, 0, 0, 0,
8345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8346- 0, 0, 0, 0, 0, 12, 13, 14, 15, 16,
8347- 17, 0, 172, 0, 0, 0, 0, 0, 173, 174,
8348- 175, 176, 18, 19, 20, 21, 22, 23, 24, 25,
8349- 26, 27, 28, 29, 30, 31, 32, 0, 33, 34,
8350- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
8351- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
8352- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
8353- 65, 66, 67, 68, 69, 70, 71, 0, 72, 0,
8354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8356- 0, 0, 0, 0, 0, 73, 74, 75, 76, 0,
8357- 77, 0, 0, 0, 0, 0, 0, 0, 78, 79,
8358- 80, 81, 82, 14, 15, 16, 17, 0, 0, 0,
8359- 0, 0, 0, 0, 0, 0, 0, 0, 18, 19,
8360- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
8361- 0, 0, 0, 0, 0, 0, 83, 0, 84, 38,
8362- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
8363- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
8364- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
8365- 69, 70, 71, 0, 341, 14, 15, 16, 17, 169,
8366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8367+ 0, 84, 0, 85, 0, 0, 0, 0, 0, 0,
8368+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8369+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8370+ 0, 0, 0, 12, 13, 14, 15, 16, 17, 0,
8371+ 174, 0, 0, 0, 0, 0, 175, 176, 177, 178,
8372 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
8373- 28, 29, 74, 75, 76, 0, 0, 0, 0, 0,
8374- 0, 38, 39, 40, 41, 42, 43, 44, 45, 46,
8375+ 28, 29, 30, 31, 32, 0, 33, 34, 35, 36,
8376+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
8377 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
8378 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
8379- 67, 68, 69, 70, 71, 0, 72, 14, 15, 16,
8380- 17, 0, 83, 0, 84, 0, 0, 0, 0, 0,
8381- 0, 0, 18, 19, 20, 21, 22, 23, 24, 25,
8382- 26, 27, 28, 29, 74, 75, 76, 0, 0, 0,
8383- 0, 0, 0, 38, 39, 40, 41, 42, 43, 44,
8384- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
8385- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
8386- 65, 66, 67, 68, 69, 70, 71, 0, 72, 0,
8387- 0, 0, 0, 0, 83, 0, 84, 0, 0, 0,
8388+ 67, 68, 69, 70, 71, 0, 72, 0, 0, 0,
8389+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8390+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8391+ 0, 0, 0, 73, 74, 75, 76, 0, 77, 0,
8392+ 0, 0, 0, 0, 0, 0, 78, 79, 80, 81,
8393+ 82, 83, 14, 15, 16, 17, 0, 0, 0, 0,
8394+ 0, 0, 0, 0, 0, 0, 0, 18, 19, 20,
8395+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 0,
8396+ 0, 0, 0, 0, 0, 84, 0, 85, 38, 39,
8397+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
8398+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
8399+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
8400+ 70, 71, 0, 343, 14, 15, 16, 17, 171, 0,
8401+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,
8402+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
8403+ 29, 74, 75, 76, 0, 0, 0, 0, 0, 0,
8404+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
8405+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
8406+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
8407+ 68, 69, 70, 71, 0, 72, 14, 15, 16, 17,
8408+ 0, 0, 84, 0, 85, 0, 0, 0, 0, 0,
8409+ 0, 18, 19, 20, 21, 22, 23, 24, 25, 26,
8410+ 27, 28, 29, 74, 75, 76, 0, 0, 0, 0,
8411+ 0, 0, 38, 39, 40, 41, 42, 43, 44, 45,
8412+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
8413+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
8414+ 66, 67, 68, 69, 70, 71, 0, 72, 0, 0,
8415+ 0, 0, 0, 0, 84, 0, 85, 0, 0, 0,
8416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8419 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8422- 0, 0, 0, 0, 0, 0, 83, 0, 84
8423+ 0, 0, 0, 0, 0, 0, 84, 0, 85
8424 };
8425
8426 static const yytype_int16 yycheck[] =
8427 {
8428- 9, 73, 73, 159, 155, 161, 141, 146, 141, 4,
8429- 76, 76, 86, 87, 91, 195, 172, 256, 9, 3,
8430- 4, 9, 78, 95, 96, 84, 85, 193, 4, 195,
8431- 313, 109, 381, 213, 227, 170, 171, 198, 33, 34,
8432- 35, 198, 114, 392, 198, 3, 4, 213, 32, 33,
8433- 34, 212, 36, 37, 0, 212, 191, 33, 34, 35,
8434- 214, 113, 213, 93, 94, 95, 96, 97, 98, 99,
8435- 100, 101, 102, 110, 32, 33, 34, 86, 36, 37,
8436- 38, 39, 40, 198, 76, 198, 112, 370, 97, 328,
8437- 198, 188, 227, 249, 227, 86, 235, 253, 86, 214,
8438- 256, 214, 385, 112, 103, 388, 214, 194, 264, 113,
8439- 261, 198, 194, 396, 193, 124, 198, 116, 76, 312,
8440- 403, 33, 34, 113, 133, 37, 194, 320, 193, 198,
8441- 198, 228, 206, 207, 211, 144, 195, 146, 197, 194,
8442- 194, 194, 113, 198, 198, 198, 155, 113, 304, 215,
8443- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
8444- 295, 296, 297, 298, 299, 300, 301, 302, 303, 178,
8445- 194, 268, 328, 366, 104, 105, 106, 312, 76, 312,
8446- 33, 34, 35, 213, 76, 320, 283, 320, 292, 293,
8447- 294, 295, 203, 204, 205, 214, 215, 199, 200, 194,
8448- 82, 83, 88, 89, 213, 288, 289, 215, 305, 290,
8449- 291, 296, 297, 195, 76, 224, 313, 76, 374, 113,
8450- 76, 214, 194, 193, 213, 193, 235, 378, 214, 214,
8451- 193, 366, 193, 366, 214, 391, 193, 212, 90, 248,
8452- 209, 3, 4, 208, 92, 193, 210, 256, 76, 196,
8453- 195, 78, 261, 75, 214, 194, 196, 408, 195, 213,
8454- 193, 333, 333, 198, 76, 194, 193, 12, 196, 213,
8455- 32, 33, 34, 370, 36, 37, 38, 39, 40, 196,
8456- 196, 213, 196, 214, 194, 298, 383, 265, 385, 215,
8457- 213, 388, 213, 299, 214, 300, 303, 127, 301, 396,
8458- 224, 302, 134, 244, 77, 224, 403, 144, 392, 321,
8459- 248, 88, 379, 178, 248, 86, -1, -1, 328, 328,
8460+ 9, 73, 73, 157, 143, 161, 76, 163, 143, 91,
8461+ 4, 76, 229, 86, 87, 258, 190, 148, 174, 4,
8462+ 9, 78, 9, 109, 96, 97, 93, 94, 95, 96,
8463+ 97, 98, 99, 100, 101, 102, 196, 172, 173, 33,
8464+ 34, 35, 194, 115, 196, 0, 3, 4, 33, 34,
8465+ 35, 199, 199, 199, 214, 199, 230, 113, 193, 199,
8466+ 110, 215, 214, 383, 84, 85, 76, 215, 215, 215,
8467+ 199, 215, 104, 213, 394, 32, 33, 34, 87, 36,
8468+ 37, 38, 39, 40, 213, 117, 112, 330, 195, 98,
8469+ 229, 113, 199, 194, 229, 251, 270, 314, 87, 255,
8470+ 87, 113, 258, 195, 113, 322, 237, 199, 113, 263,
8471+ 266, 285, 33, 34, 195, 113, 37, 126, 199, 76,
8472+ 315, 195, 104, 105, 106, 199, 135, 195, 76, 194,
8473+ 212, 199, 195, 307, 207, 208, 199, 146, 113, 148,
8474+ 195, 315, 33, 34, 35, 199, 216, 214, 157, 196,
8475+ 306, 368, 287, 288, 289, 290, 291, 292, 293, 294,
8476+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
8477+ 305, 180, 215, 216, 330, 314, 196, 372, 198, 314,
8478+ 204, 205, 206, 322, 200, 201, 76, 322, 294, 295,
8479+ 296, 297, 387, 82, 83, 390, 88, 89, 372, 290,
8480+ 291, 195, 216, 398, 292, 293, 215, 76, 298, 299,
8481+ 405, 385, 76, 387, 3, 4, 390, 226, 113, 76,
8482+ 376, 194, 215, 214, 398, 215, 380, 215, 237, 368,
8483+ 194, 405, 215, 368, 194, 213, 194, 393, 3, 4,
8484+ 194, 250, 195, 32, 33, 34, 209, 36, 37, 258,
8485+ 211, 210, 90, 92, 263, 194, 410, 76, 196, 215,
8486+ 197, 78, 75, 335, 335, 195, 197, 32, 33, 34,
8487+ 196, 36, 37, 38, 39, 40, 194, 199, 214, 76,
8488+ 195, 197, 194, 197, 197, 214, 214, 195, 215, 12,
8489+ 214, 216, 197, 267, 214, 301, 215, 300, 302, 129,
8490+ 136, 303, 246, 304, 77, 305, 146, 250, 323, 226,
8491+ 394, 89, 381, 180, -1, 226, 250, 330, 87, -1,
8492+ -1, 330, -1, -1, -1, -1, -1, -1, -1, -1,
8493 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8494 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8495 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8496 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8497- -1, -1, -1, -1, -1, -1, -1, -1, -1, 378,
8498- -1, -1, 381, -1, -1, -1, -1, -1, -1, -1,
8499- -1, -1, -1, 392, -1, -1, -1, -1, -1, -1,
8500- 3, 4, 5, 6, 7, 8, 9, 10, 11, 408,
8501- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
8502- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
8503- 33, 34, -1, 36, 37, 38, 39, 40, 41, 42,
8504- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
8505- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
8506- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
8507- 73, 74, 75, 76, 77, 78, 79, 80, 81, -1,
8508- -1, 84, 85, -1, -1, -1, -1, -1, -1, -1,
8509+ -1, 380, -1, -1, 383, -1, -1, -1, -1, -1,
8510+ -1, -1, -1, -1, -1, 394, -1, -1, -1, -1,
8511+ -1, -1, 3, 4, 5, 6, 7, 8, 9, 10,
8512+ 11, 410, 13, 14, 15, 16, 17, 18, 19, 20,
8513+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
8514+ 31, 32, 33, 34, -1, 36, 37, 38, 39, 40,
8515+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
8516+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
8517+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
8518+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
8519+ 81, -1, -1, 84, 85, -1, -1, -1, -1, -1,
8520 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8521- 103, 104, 105, 106, -1, 108, -1, -1, -1, -1,
8522- -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
8523+ -1, -1, 103, 104, 105, 106, -1, 108, -1, -1,
8524 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8525+ 121, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8527 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8528- -1, 154, -1, 156, -1, -1, -1, -1, -1, -1,
8529+ -1, -1, -1, -1, 155, -1, 157, -1, -1, -1,
8530 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8531 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8532 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8533- 193, -1, -1, -1, -1, -1, 199, 200, 201, 202,
8534+ -1, -1, -1, 194, -1, -1, -1, -1, -1, 200,
8535+ 201, 202, 203, -1, -1, -1, -1, -1, -1, -1,
8536+ -1, -1, -1, -1, 215, 216, 217, 3, 4, 5,
8537+ 6, 7, 8, 9, 10, 11, -1, 13, 14, 15,
8538+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
8539+ 26, 27, 28, 29, 30, 31, 32, 33, 34, -1,
8540+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
8541+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
8542+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
8543+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
8544+ 76, 77, 78, 79, 80, 81, -1, -1, 84, 85,
8545 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8546- -1, 214, 215, 216, 3, 4, 5, 6, 7, 8,
8547- 9, 10, 11, -1, 13, 14, 15, 16, 17, 18,
8548- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
8549- 29, 30, 31, 32, 33, 34, -1, 36, 37, 38,
8550- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
8551- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
8552- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
8553- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
8554- 79, 80, 81, -1, -1, 84, 85, -1, -1, -1,
8555+ -1, -1, -1, -1, -1, -1, -1, 103, 104, 105,
8556+ 106, -1, 108, -1, -1, -1, -1, -1, -1, -1,
8557+ -1, -1, -1, -1, -1, 121, -1, -1, -1, -1,
8558 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8559- -1, -1, -1, -1, 103, 104, 105, 106, -1, 108,
8560 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8561- -1, 120, -1, -1, -1, -1, -1, -1, -1, -1,
8562+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 155,
8563+ -1, 157, -1, -1, -1, -1, -1, -1, -1, -1,
8564 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8565 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8566- -1, -1, -1, -1, -1, 154, -1, 156, -1, -1,
8567+ -1, -1, -1, -1, -1, -1, -1, -1, 194, -1,
8568+ -1, -1, -1, -1, 200, 201, 202, 203, -1, -1,
8569+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 215,
8570+ 216, 217, 3, 4, 5, 6, 7, 8, 9, 10,
8571+ 11, -1, 13, 14, 15, 16, 17, 18, 19, 20,
8572+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
8573+ 31, 32, 33, 34, -1, 36, 37, 38, 39, 40,
8574+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
8575+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
8576+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
8577+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
8578+ 81, -1, -1, 84, 85, -1, -1, -1, -1, -1,
8579 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8580+ -1, -1, 103, 104, 105, 106, -1, 108, -1, -1,
8581 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8582+ 121, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8583 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8584- -1, -1, -1, -1, 193, -1, -1, -1, -1, -1,
8585- 199, 200, 201, 202, -1, -1, -1, -1, -1, -1,
8586- -1, -1, -1, -1, -1, 214, 215, 216, 3, 4,
8587- 5, 6, 7, 8, 9, 10, 11, -1, 13, 14,
8588- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
8589- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
8590- -1, 36, 37, 38, 39, 40, 41, 42, 43, 44,
8591- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
8592- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
8593- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
8594- 75, 76, 77, 78, 79, 80, 81, -1, -1, 84,
8595- 85, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8596- -1, -1, -1, -1, -1, -1, -1, -1, 103, 104,
8597- 105, 106, -1, 108, -1, -1, -1, -1, -1, -1,
8598- -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
8599+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8600+ -1, -1, -1, -1, 155, -1, 157, -1, -1, -1,
8601+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8602+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8603+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8604+ -1, -1, -1, 194, -1, -1, -1, -1, -1, 200,
8605+ 201, 202, 203, -1, -1, -1, -1, -1, -1, -1,
8606+ -1, -1, -1, -1, 215, 216, 217, 3, 4, 5,
8607+ 6, 7, 8, 9, 10, 11, -1, 13, 14, 15,
8608+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
8609+ 26, 27, 28, 29, 30, 31, 32, 33, 34, -1,
8610+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
8611+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
8612+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
8613+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
8614+ 76, 77, 78, 79, 80, 81, -1, -1, 84, 85,
8615+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8616+ -1, -1, -1, -1, -1, -1, -1, 103, 104, 105,
8617+ 106, -1, 108, -1, -1, -1, -1, -1, -1, -1,
8618+ -1, -1, -1, -1, -1, 121, -1, -1, -1, -1,
8619 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8620 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8621- -1, -1, -1, -1, -1, -1, -1, -1, -1, 154,
8622- -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
8623+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 155,
8624+ -1, 157, -1, -1, -1, -1, -1, -1, -1, -1,
8625 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8626 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8627- -1, -1, -1, -1, -1, -1, -1, -1, 193, -1,
8628- -1, -1, -1, -1, 199, 200, 201, 202, -1, -1,
8629- -1, -1, -1, -1, -1, -1, -1, -1, -1, 214,
8630- 215, 216, 3, 4, 5, 6, 7, 8, 9, 10,
8631+ -1, -1, -1, -1, -1, -1, -1, -1, 194, -1,
8632+ -1, -1, -1, -1, 200, 201, 202, 203, -1, -1,
8633+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 215,
8634+ 216, 217, 3, 4, 5, 6, 7, 8, 9, 10,
8635 11, -1, 13, 14, 15, 16, 17, 18, 19, 20,
8636 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
8637 31, 32, 33, 34, -1, 36, 37, 38, 39, 40,
8638@@ -1635,17 +1660,17 @@ static const yytype_int16 yycheck[] =
8639 81, -1, -1, 84, 85, -1, -1, -1, -1, -1,
8640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8641 -1, -1, 103, 104, 105, 106, -1, 108, -1, -1,
8642- -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
8643 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8644+ 121, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8645 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8646 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8647- -1, -1, -1, 154, -1, 156, -1, -1, -1, -1,
8648+ -1, -1, -1, -1, 155, -1, 157, -1, -1, -1,
8649 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8650 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8651 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8652- -1, -1, 193, -1, -1, -1, -1, -1, 199, 200,
8653- 201, 202, -1, -1, -1, -1, -1, -1, -1, -1,
8654- -1, -1, -1, 214, 215, 216, 3, 4, 5, 6,
8655+ -1, -1, -1, 194, -1, -1, -1, -1, -1, 200,
8656+ 201, 202, 203, -1, -1, -1, -1, -1, -1, -1,
8657+ -1, -1, -1, -1, 215, 216, 3, 4, 5, 6,
8658 7, 8, 9, 10, 11, -1, 13, 14, 15, 16,
8659 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
8660 27, 28, 29, 30, 31, 32, 33, 34, -1, 36,
8661@@ -1657,38 +1682,72 @@ static const yytype_int16 yycheck[] =
8662 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8663 -1, -1, -1, -1, -1, -1, 103, 104, 105, 106,
8664 -1, 108, -1, -1, -1, -1, -1, -1, -1, -1,
8665- -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
8666+ -1, -1, -1, -1, 121, -1, -1, -1, -1, -1,
8667 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8668 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8669- -1, -1, -1, -1, -1, -1, -1, 154, -1, 156,
8670+ -1, -1, -1, -1, -1, -1, -1, -1, 155, -1,
8671+ 157, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8672 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8673 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8674+ -1, -1, -1, -1, -1, -1, -1, 194, -1, -1,
8675+ -1, -1, -1, 200, 201, 202, 203, 3, 4, 5,
8676+ 6, 7, 8, -1, -1, -1, -1, -1, 215, 216,
8677+ -1, -1, -1, -1, 20, 21, 22, 23, 24, 25,
8678+ 26, 27, 28, 29, 30, 31, 32, 33, 34, -1,
8679+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
8680+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
8681+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
8682+ 66, 67, 68, 69, 70, 71, 72, 73, 74, -1,
8683+ 76, 77, 78, 79, 80, 81, -1, -1, 84, 85,
8684+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8685+ -1, -1, -1, -1, -1, -1, -1, 103, 104, 105,
8686+ 106, -1, 108, -1, -1, -1, -1, -1, -1, -1,
8687+ -1, -1, -1, -1, -1, 121, 5, 6, 7, 8,
8688+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8689+ -1, 20, 21, 22, 23, 24, 25, 26, 27, 28,
8690+ 29, 30, 31, -1, -1, -1, -1, -1, -1, 155,
8691+ -1, 157, 41, 42, 43, 44, 45, 46, 47, 48,
8692+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
8693+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
8694+ 69, 70, 71, 72, 73, 74, -1, 76, 194, -1,
8695+ -1, -1, -1, -1, 200, 201, 202, 203, -1, -1,
8696+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 215,
8697+ -1, -1, -1, -1, -1, 104, 105, 106, -1, -1,
8698+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8699+ -1, -1, -1, 5, 6, 7, 8, -1, -1, -1,
8700+ -1, -1, -1, -1, -1, -1, -1, -1, 20, 21,
8701+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
8702+ -1, -1, -1, -1, -1, -1, 155, -1, 157, 41,
8703+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
8704+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
8705+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
8706+ 72, 73, 74, -1, 76, -1, -1, -1, -1, -1,
8707+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8708+ -1, -1, -1, -1, -1, -1, -1, -1, 217, -1,
8709+ -1, -1, 104, 105, 106, -1, -1, -1, -1, -1,
8710+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8711+ 5, 6, 7, 8, -1, -1, -1, -1, -1, -1,
8712+ -1, -1, -1, -1, -1, 20, 21, 22, 23, 24,
8713+ 25, 26, 27, 28, 29, 30, 31, -1, -1, -1,
8714+ -1, -1, -1, 155, -1, 157, 41, 42, 43, 44,
8715+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
8716+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
8717+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
8718+ -1, 76, 77, 78, 79, 80, 81, -1, -1, 84,
8719+ 85, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8720+ -1, -1, -1, -1, -1, 217, -1, -1, -1, 104,
8721+ 105, 106, -1, -1, -1, -1, -1, -1, -1, -1,
8722 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8723- -1, -1, -1, -1, -1, -1, 193, -1, -1, -1,
8724- -1, -1, 199, 200, 201, 202, -1, -1, -1, -1,
8725- -1, -1, -1, -1, -1, -1, -1, 214, 215, 3,
8726- 4, 5, 6, 7, 8, 9, 10, 11, -1, 13,
8727- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
8728- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
8729- 34, -1, 36, 37, 38, 39, 40, 41, 42, 43,
8730- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
8731- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
8732- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
8733- 74, 75, 76, 77, 78, 79, 80, 81, -1, -1,
8734- 84, 85, -1, -1, -1, -1, -1, -1, -1, -1,
8735- -1, -1, -1, -1, -1, -1, -1, -1, -1, 103,
8736- 104, 105, 106, -1, 108, -1, -1, -1, -1, -1,
8737- -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
8738 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8739 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8740 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8741- 154, -1, 156, -1, -1, -1, -1, -1, -1, -1,
8742+ 155, -1, 157, -1, -1, -1, -1, -1, -1, -1,
8743 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8744 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8745- -1, -1, -1, -1, -1, -1, -1, -1, -1, 193,
8746- -1, -1, -1, -1, -1, 199, 200, 201, 202, 3,
8747+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 194,
8748+ -1, -1, -1, -1, -1, 200, 201, 202, 203, 3,
8749 4, 5, 6, 7, 8, -1, -1, -1, -1, -1,
8750- 214, 215, -1, -1, -1, -1, 20, 21, 22, 23,
8751+ 215, -1, -1, -1, -1, -1, 20, 21, 22, 23,
8752 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
8753 34, -1, 36, 37, 38, 39, 40, 41, 42, 43,
8754 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
8755@@ -1697,126 +1756,90 @@ static const yytype_int16 yycheck[] =
8756 74, -1, 76, 77, 78, 79, 80, 81, -1, -1,
8757 84, 85, -1, -1, -1, -1, -1, -1, -1, -1,
8758 -1, -1, -1, -1, -1, -1, -1, -1, -1, 103,
8759- 104, 105, 106, -1, 108, -1, -1, -1, -1, -1,
8760- -1, -1, -1, -1, -1, -1, 120, 5, 6, 7,
8761- 8, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8762- -1, -1, 20, 21, 22, 23, 24, 25, 26, 27,
8763- 28, 29, 30, 31, -1, -1, -1, -1, -1, -1,
8764- 154, -1, 156, 41, 42, 43, 44, 45, 46, 47,
8765- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
8766- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
8767- 68, 69, 70, 71, 72, 73, 74, -1, 76, 193,
8768- -1, -1, -1, -1, -1, 199, 200, 201, 202, -1,
8769+ 104, 105, 106, -1, -1, -1, -1, -1, -1, -1,
8770+ -1, -1, -1, -1, -1, -1, -1, 121, -1, -1,
8771 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8772- 214, -1, -1, -1, -1, -1, 104, 105, 106, -1,
8773 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8774- -1, -1, -1, 5, 6, 7, 8, -1, -1, -1,
8775- -1, -1, -1, -1, -1, -1, -1, -1, 20, 21,
8776- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
8777- -1, -1, -1, -1, -1, -1, 154, -1, 156, 41,
8778- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
8779- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
8780- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
8781- 72, 73, 74, -1, 76, -1, -1, -1, -1, -1,
8782 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8783- -1, -1, -1, -1, -1, -1, -1, -1, 216, -1,
8784- -1, -1, 104, 105, 106, -1, -1, -1, -1, -1,
8785- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5,
8786- 6, 7, 8, -1, -1, -1, -1, -1, -1, -1,
8787- -1, -1, -1, -1, 20, 21, 22, 23, 24, 25,
8788- 26, 27, 28, 29, 30, 31, -1, -1, -1, -1,
8789- -1, -1, 154, -1, 156, 41, 42, 43, 44, 45,
8790- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
8791- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
8792- 66, 67, 68, 69, 70, 71, 72, 73, 74, -1,
8793- 76, 77, 78, 79, 80, 81, -1, -1, 84, 85,
8794+ -1, 155, -1, 157, -1, -1, -1, -1, -1, -1,
8795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8796- -1, -1, -1, -1, 216, -1, -1, -1, 104, 105,
8797- 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8799+ -1, -1, -1, -1, -1, 5, 6, 7, 8, -1,
8800+ 194, -1, -1, -1, -1, -1, 200, 201, 202, 203,
8801+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
8802+ 30, 31, -1, -1, -1, -1, -1, -1, -1, -1,
8803+ -1, 41, 42, 43, 44, 45, 46, 47, 48, 49,
8804+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
8805+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
8806+ 70, 71, 72, 73, 74, -1, 76, 77, 78, 79,
8807+ 80, 81, -1, -1, 84, 85, -1, -1, -1, -1,
8808+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8809+ -1, -1, -1, -1, 104, 105, 106, -1, -1, -1,
8810 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8811 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8812- -1, -1, -1, -1, -1, -1, -1, -1, 154, -1,
8813- 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8815 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8816- -1, -1, -1, -1, -1, -1, -1, 193, -1, -1,
8817- -1, -1, -1, 199, 200, 201, 202, 3, 4, 5,
8818- 6, 7, 8, -1, -1, -1, -1, -1, 214, -1,
8819- -1, -1, -1, -1, 20, 21, 22, 23, 24, 25,
8820- 26, 27, 28, 29, 30, 31, 32, 33, 34, -1,
8821- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
8822+ -1, -1, -1, -1, -1, 155, -1, 157, -1, -1,
8823+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8824+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8825+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 5,
8826+ 6, 7, 8, -1, 194, -1, -1, 197, -1, -1,
8827+ 200, 201, 202, 203, 20, 21, 22, 23, 24, 25,
8828+ 26, 27, 28, 29, 30, 31, -1, -1, -1, -1,
8829+ -1, -1, -1, -1, -1, 41, 42, 43, 44, 45,
8830 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
8831 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
8832 66, 67, 68, 69, 70, 71, 72, 73, 74, -1,
8833 76, 77, 78, 79, 80, 81, -1, -1, 84, 85,
8834 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8835- -1, -1, -1, -1, -1, -1, -1, 103, 104, 105,
8836+ -1, -1, -1, -1, -1, -1, -1, -1, 104, 105,
8837 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8838- -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
8839 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8840 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8841- -1, -1, -1, -1, -1, -1, -1, -1, 154, -1,
8842- 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8843 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8844+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 155,
8845+ -1, 157, -1, -1, -1, -1, -1, -1, -1, -1,
8846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8847- -1, -1, 5, 6, 7, 8, -1, 193, -1, -1,
8848- -1, -1, -1, 199, 200, 201, 202, 20, 21, 22,
8849- 23, 24, 25, 26, 27, 28, 29, 30, 31, -1,
8850- -1, -1, -1, -1, -1, -1, -1, -1, 41, 42,
8851- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
8852- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
8853- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
8854- 73, 74, -1, 76, 77, 78, 79, 80, 81, -1,
8855- -1, 84, 85, -1, -1, -1, -1, -1, -1, -1,
8856- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8857- -1, 104, 105, 106, -1, -1, -1, -1, -1, -1,
8858- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8859- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8860- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8861- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8862- -1, 154, -1, 156, -1, -1, -1, -1, -1, -1,
8863 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8864+ -1, -1, -1, 5, 6, 7, 8, -1, 194, -1,
8865+ -1, 197, -1, -1, 200, 201, 202, 203, 20, 21,
8866+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
8867+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
8868+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
8869+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
8870+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
8871+ 72, 73, 74, -1, 76, 77, 78, 79, 80, 81,
8872+ -1, -1, 84, 85, -1, -1, -1, -1, -1, -1,
8873 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8874- -1, -1, -1, -1, -1, 5, 6, 7, 8, -1,
8875- 193, -1, -1, 196, -1, -1, 199, 200, 201, 202,
8876- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
8877- 30, 31, -1, -1, -1, -1, -1, -1, -1, -1,
8878- -1, 41, 42, 43, 44, 45, 46, 47, 48, 49,
8879- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
8880- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
8881- 70, 71, 72, 73, 74, -1, 76, 77, 78, 79,
8882- 80, 81, -1, -1, 84, 85, -1, -1, -1, -1,
8883- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8884- -1, -1, -1, -1, 104, 105, 106, -1, -1, -1,
8885+ -1, -1, 104, 105, 106, -1, -1, -1, -1, -1,
8886 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8887 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8889 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8890- -1, -1, -1, -1, 154, -1, 156, -1, -1, -1,
8891+ -1, -1, -1, 155, -1, 157, -1, -1, -1, -1,
8892 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8893 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8894- -1, -1, -1, -1, -1, -1, -1, -1, 5, 6,
8895- 7, 8, -1, 193, -1, -1, 196, -1, -1, 199,
8896- 200, 201, 202, 20, 21, 22, 23, 24, 25, 26,
8897- 27, 28, 29, 30, 31, -1, -1, -1, -1, -1,
8898- -1, -1, -1, -1, 41, 42, 43, 44, 45, 46,
8899- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
8900- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
8901- 67, 68, 69, 70, 71, 72, 73, 74, -1, 76,
8902- 77, 78, 79, 80, 81, -1, -1, 84, 85, -1,
8903+ -1, -1, -1, -1, -1, -1, -1, 5, 6, 7,
8904+ 8, -1, 194, -1, -1, 197, -1, -1, 200, 201,
8905+ 202, 203, 20, 21, 22, 23, 24, 25, 26, 27,
8906+ 28, 29, 30, 31, -1, -1, -1, -1, -1, -1,
8907+ -1, -1, -1, 41, 42, 43, 44, 45, 46, 47,
8908+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
8909+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
8910+ 68, 69, 70, 71, 72, 73, 74, -1, 76, 77,
8911+ 78, 79, 80, 81, -1, -1, 84, 85, -1, -1,
8912 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8913- -1, -1, -1, -1, -1, -1, -1, 104, 105, 106,
8914+ -1, -1, -1, -1, -1, -1, 104, 105, 106, -1,
8915 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8916 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8917 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8918 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8919- -1, -1, -1, -1, -1, -1, -1, 154, -1, 156,
8920+ -1, -1, -1, -1, -1, -1, -1, 155, -1, 157,
8921 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8922 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8923 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8924- -1, 5, 6, 7, 8, -1, 193, -1, -1, 196,
8925- -1, -1, 199, 200, 201, 202, 20, 21, 22, 23,
8926+ -1, 5, 6, 7, 8, -1, 194, -1, -1, -1,
8927+ -1, -1, 200, 201, 202, 203, 20, 21, 22, 23,
8928 24, 25, 26, 27, 28, 29, 30, 31, -1, -1,
8929 -1, -1, -1, -1, -1, -1, -1, 41, 42, 43,
8930 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
8931@@ -1830,117 +1853,99 @@ static const yytype_int16 yycheck[] =
8932 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8933 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8934 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8935- 154, -1, 156, -1, -1, -1, -1, -1, -1, -1,
8936+ -1, 155, -1, 157, -1, -1, -1, -1, -1, -1,
8937 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8938 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8939- -1, -1, -1, -1, 5, 6, 7, 8, -1, 193,
8940- -1, -1, -1, -1, -1, 199, 200, 201, 202, 20,
8941+ -1, -1, -1, 3, 4, 5, 6, 7, 8, -1,
8942+ 194, -1, -1, -1, -1, -1, 200, 201, 202, 203,
8943+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
8944+ 30, 31, 32, 33, 34, -1, 36, 37, 38, 39,
8945+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
8946+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
8947+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
8948+ 70, 71, 72, 73, 74, -1, 76, -1, -1, -1,
8949+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8950+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8951+ -1, -1, -1, 103, 104, 105, 106, -1, 108, -1,
8952+ -1, -1, -1, -1, -1, -1, 116, 117, 118, 119,
8953+ 120, 121, 5, 6, 7, 8, -1, -1, -1, -1,
8954+ -1, -1, -1, -1, -1, -1, -1, 20, 21, 22,
8955+ 23, 24, 25, 26, 27, 28, 29, 30, 31, -1,
8956+ -1, -1, -1, -1, -1, 155, -1, 157, 41, 42,
8957+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
8958+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
8959+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
8960+ 73, 74, -1, 76, 5, 6, 7, 8, 81, -1,
8961+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 20,
8962 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
8963- 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8964+ 31, 104, 105, 106, -1, -1, -1, -1, -1, -1,
8965 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
8966 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
8967 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
8968- 71, 72, 73, 74, -1, 76, 77, 78, 79, 80,
8969- 81, -1, -1, 84, 85, -1, -1, -1, -1, -1,
8970- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8971- -1, -1, -1, 104, 105, 106, -1, -1, -1, -1,
8972- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8973- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8974- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8975- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8976- -1, -1, -1, 154, -1, 156, -1, -1, -1, -1,
8977- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8978- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8979- -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
8980- 8, -1, 193, -1, -1, -1, -1, -1, 199, 200,
8981- 201, 202, 20, 21, 22, 23, 24, 25, 26, 27,
8982- 28, 29, 30, 31, 32, 33, 34, -1, 36, 37,
8983- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
8984- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
8985- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
8986- 68, 69, 70, 71, 72, 73, 74, -1, 76, -1,
8987- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8988- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8989- -1, -1, -1, -1, -1, 103, 104, 105, 106, -1,
8990- 108, -1, -1, -1, -1, -1, -1, -1, 116, 117,
8991- 118, 119, 120, 5, 6, 7, 8, -1, -1, -1,
8992- -1, -1, -1, -1, -1, -1, -1, -1, 20, 21,
8993- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
8994- -1, -1, -1, -1, -1, -1, 154, -1, 156, 41,
8995- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
8996- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
8997- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
8998- 72, 73, 74, -1, 76, 5, 6, 7, 8, 81,
8999- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9000- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
9001- 30, 31, 104, 105, 106, -1, -1, -1, -1, -1,
9002- -1, 41, 42, 43, 44, 45, 46, 47, 48, 49,
9003- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
9004- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
9005- 70, 71, 72, 73, 74, -1, 76, 5, 6, 7,
9006- 8, -1, 154, -1, 156, -1, -1, -1, -1, -1,
9007- -1, -1, 20, 21, 22, 23, 24, 25, 26, 27,
9008- 28, 29, 30, 31, 104, 105, 106, -1, -1, -1,
9009- -1, -1, -1, 41, 42, 43, 44, 45, 46, 47,
9010- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
9011- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
9012- 68, 69, 70, 71, 72, 73, 74, -1, 76, -1,
9013- -1, -1, -1, -1, 154, -1, 156, -1, -1, -1,
9014+ 71, 72, 73, 74, -1, 76, 5, 6, 7, 8,
9015+ -1, -1, 155, -1, 157, -1, -1, -1, -1, -1,
9016+ -1, 20, 21, 22, 23, 24, 25, 26, 27, 28,
9017+ 29, 30, 31, 104, 105, 106, -1, -1, -1, -1,
9018+ -1, -1, 41, 42, 43, 44, 45, 46, 47, 48,
9019+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
9020+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
9021+ 69, 70, 71, 72, 73, 74, -1, 76, -1, -1,
9022+ -1, -1, -1, -1, 155, -1, 157, -1, -1, -1,
9023 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9024 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9025 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9026 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9027 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9028 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9029- -1, -1, -1, -1, -1, -1, 154, -1, 156
9030+ -1, -1, -1, -1, -1, -1, 155, -1, 157
9031 };
9032
9033 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
9034 symbol of state STATE-NUM. */
9035 static const yytype_uint16 yystos[] =
9036 {
9037- 0, 109, 218, 220, 78, 0, 222, 113, 110, 219,
9038- 223, 76, 3, 4, 5, 6, 7, 8, 20, 21,
9039+ 0, 109, 219, 221, 78, 0, 223, 113, 110, 220,
9040+ 224, 76, 3, 4, 5, 6, 7, 8, 20, 21,
9041 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
9042 32, 33, 34, 36, 37, 38, 39, 40, 41, 42,
9043 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
9044 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
9045 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
9046 73, 74, 76, 103, 104, 105, 106, 108, 116, 117,
9047- 118, 119, 120, 154, 156, 221, 224, 254, 255, 256,
9048- 257, 258, 263, 264, 265, 266, 269, 271, 272, 273,
9049- 274, 275, 276, 277, 278, 302, 303, 112, 33, 34,
9050- 37, 76, 215, 76, 269, 272, 277, 113, 113, 113,
9051- 113, 193, 302, 214, 215, 289, 194, 198, 4, 33,
9052- 34, 35, 260, 261, 270, 198, 214, 76, 272, 272,
9053- 273, 195, 274, 76, 215, 273, 279, 280, 272, 274,
9054- 76, 267, 268, 9, 10, 11, 13, 14, 15, 16,
9055- 17, 18, 19, 75, 76, 77, 78, 79, 80, 81,
9056- 84, 85, 193, 199, 200, 201, 202, 214, 215, 216,
9057- 225, 226, 227, 229, 230, 231, 232, 233, 234, 235,
9058- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
9059- 246, 247, 248, 249, 250, 252, 254, 255, 273, 284,
9060- 285, 286, 287, 290, 291, 292, 295, 296, 297, 301,
9061- 260, 259, 262, 273, 261, 76, 193, 195, 213, 196,
9062- 236, 249, 253, 273, 113, 279, 76, 281, 282, 216,
9063- 280, 214, 213, 194, 198, 214, 214, 285, 193, 193,
9064- 214, 214, 252, 193, 252, 212, 193, 236, 236, 252,
9065- 216, 290, 84, 85, 195, 197, 194, 194, 198, 74,
9066- 250, 193, 93, 94, 95, 96, 97, 98, 99, 100,
9067- 101, 102, 213, 251, 236, 203, 204, 205, 199, 200,
9068- 82, 83, 86, 87, 206, 207, 88, 89, 208, 209,
9069- 210, 90, 92, 91, 211, 198, 214, 216, 285, 76,
9070- 259, 262, 195, 213, 196, 253, 250, 283, 196, 216,
9071- 195, 198, 214, 78, 268, 75, 284, 291, 298, 252,
9072- 214, 252, 212, 103, 252, 265, 294, 194, 216, 228,
9073- 252, 76, 231, 250, 250, 236, 236, 236, 238, 238,
9074- 239, 239, 240, 240, 240, 240, 241, 241, 242, 243,
9075- 244, 245, 246, 247, 252, 250, 195, 196, 253, 283,
9076- 213, 196, 253, 282, 193, 294, 299, 300, 194, 194,
9077- 76, 194, 196, 212, 253, 213, 196, 283, 213, 196,
9078- 252, 214, 194, 285, 293, 287, 213, 286, 288, 289,
9079- 250, 196, 283, 213, 283, 194, 252, 288, 12, 283,
9080- 283, 214, 285
9081+ 118, 119, 120, 121, 155, 157, 222, 225, 255, 256,
9082+ 257, 258, 259, 264, 265, 266, 267, 270, 272, 273,
9083+ 274, 275, 276, 277, 278, 279, 303, 304, 112, 33,
9084+ 34, 37, 76, 216, 76, 270, 273, 278, 113, 113,
9085+ 113, 113, 113, 194, 303, 215, 216, 290, 195, 199,
9086+ 4, 33, 34, 35, 261, 262, 271, 199, 215, 76,
9087+ 273, 273, 274, 196, 275, 76, 216, 274, 280, 281,
9088+ 273, 275, 76, 268, 269, 9, 10, 11, 13, 14,
9089+ 15, 16, 17, 18, 19, 75, 76, 77, 78, 79,
9090+ 80, 81, 84, 85, 194, 200, 201, 202, 203, 215,
9091+ 216, 217, 226, 227, 228, 230, 231, 232, 233, 234,
9092+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
9093+ 245, 246, 247, 248, 249, 250, 251, 253, 255, 256,
9094+ 274, 285, 286, 287, 288, 291, 292, 293, 296, 297,
9095+ 298, 302, 261, 260, 263, 274, 262, 76, 194, 196,
9096+ 214, 197, 237, 250, 254, 274, 113, 280, 76, 282,
9097+ 283, 217, 281, 215, 214, 195, 199, 215, 215, 286,
9098+ 194, 194, 215, 215, 253, 194, 253, 213, 194, 237,
9099+ 237, 253, 217, 291, 84, 85, 196, 198, 195, 195,
9100+ 199, 74, 251, 194, 93, 94, 95, 96, 97, 98,
9101+ 99, 100, 101, 102, 214, 252, 237, 204, 205, 206,
9102+ 200, 201, 82, 83, 86, 87, 207, 208, 88, 89,
9103+ 209, 210, 211, 90, 92, 91, 212, 199, 215, 217,
9104+ 286, 76, 260, 263, 196, 214, 197, 254, 251, 284,
9105+ 197, 217, 196, 199, 215, 78, 269, 75, 285, 292,
9106+ 299, 253, 215, 253, 213, 103, 253, 266, 295, 195,
9107+ 217, 229, 253, 76, 232, 251, 251, 237, 237, 237,
9108+ 239, 239, 240, 240, 241, 241, 241, 241, 242, 242,
9109+ 243, 244, 245, 246, 247, 248, 253, 251, 196, 197,
9110+ 254, 284, 214, 197, 254, 283, 194, 295, 300, 301,
9111+ 195, 195, 76, 195, 197, 213, 254, 214, 197, 284,
9112+ 214, 197, 253, 215, 195, 286, 294, 288, 214, 287,
9113+ 289, 290, 251, 197, 284, 214, 284, 195, 253, 289,
9114+ 12, 284, 284, 215, 286
9115 };
9116
9117 #define yyerrok (yyerrstatus = 0)
9118@@ -2631,7 +2636,7 @@ YYLTYPE yylloc;
9119 }
9120
9121 /* Line 1251 of yacc.c */
9122-#line 2635 "glsl_parser.cpp"
9123+#line 2640 "glsl_parser.cpp"
9124 yylsp[0] = yylloc;
9125
9126 goto yysetstate;
9127@@ -2819,7 +2824,7 @@ yyreduce:
9128 case 2:
9129
9130 /* Line 1464 of yacc.c */
9131-#line 212 "glsl_parser.ypp"
9132+#line 213 "glsl_parser.ypp"
9133 {
9134 _mesa_glsl_initialize_types(state);
9135 ;}
9136@@ -2828,7 +2833,7 @@ yyreduce:
9137 case 5:
9138
9139 /* Line 1464 of yacc.c */
9140-#line 221 "glsl_parser.ypp"
9141+#line 222 "glsl_parser.ypp"
9142 {
9143 switch ((yyvsp[(2) - (3)].n)) {
9144 case 100:
9145@@ -2838,6 +2843,11 @@ yyreduce:
9146 case 130:
9147 /* FINISHME: Check against implementation support versions. */
9148 state->language_version = (yyvsp[(2) - (3)].n);
9149+ state->version_string =
9150+ ralloc_asprintf(state, "GLSL%s %d.%02d",
9151+ state->es_shader ? " ES" : "",
9152+ state->language_version / 100,
9153+ state->language_version % 100);
9154 break;
9155 default:
9156 _mesa_glsl_error(& (yylsp[(2) - (3)]), state, "Shading language version"
9157@@ -2847,10 +2857,25 @@ yyreduce:
9158 ;}
9159 break;
9160
9161- case 12:
9162+ case 10:
9163
9164 /* Line 1464 of yacc.c */
9165-#line 253 "glsl_parser.ypp"
9166+#line 251 "glsl_parser.ypp"
9167+ {
9168+ if (state->language_version < 120) {
9169+ _mesa_glsl_warning(& (yylsp[(1) - (2)]), state,
9170+ "pragma `invariant(all)' not supported in %s",
9171+ state->version_string);
9172+ } else {
9173+ state->all_invariant = true;
9174+ }
9175+ ;}
9176+ break;
9177+
9178+ case 13:
9179+
9180+/* Line 1464 of yacc.c */
9181+#line 269 "glsl_parser.ypp"
9182 {
9183 if (!_mesa_glsl_process_extension((yyvsp[(2) - (5)].identifier), & (yylsp[(2) - (5)]), (yyvsp[(4) - (5)].identifier), & (yylsp[(4) - (5)]), state)) {
9184 YYERROR;
9185@@ -2858,36 +2883,36 @@ yyreduce:
9186 ;}
9187 break;
9188
9189- case 13:
9190+ case 14:
9191
9192 /* Line 1464 of yacc.c */
9193-#line 262 "glsl_parser.ypp"
9194+#line 278 "glsl_parser.ypp"
9195 {
9196- /* FINISHME: The NULL test is only required because 'precision'
9197- * FINISHME: statements are not yet supported.
9198+ /* FINISHME: The NULL test is required because pragmas are set to
9199+ * FINISHME: NULL. (See production rule for external_declaration.)
9200 */
9201 if ((yyvsp[(1) - (1)].node) != NULL)
9202 state->translation_unit.push_tail(& (yyvsp[(1) - (1)].node)->link);
9203 ;}
9204 break;
9205
9206- case 14:
9207+ case 15:
9208
9209 /* Line 1464 of yacc.c */
9210-#line 270 "glsl_parser.ypp"
9211+#line 286 "glsl_parser.ypp"
9212 {
9213- /* FINISHME: The NULL test is only required because 'precision'
9214- * FINISHME: statements are not yet supported.
9215+ /* FINISHME: The NULL test is required because pragmas are set to
9216+ * FINISHME: NULL. (See production rule for external_declaration.)
9217 */
9218 if ((yyvsp[(2) - (2)].node) != NULL)
9219 state->translation_unit.push_tail(& (yyvsp[(2) - (2)].node)->link);
9220 ;}
9221 break;
9222
9223- case 16:
9224+ case 17:
9225
9226 /* Line 1464 of yacc.c */
9227-#line 285 "glsl_parser.ypp"
9228+#line 301 "glsl_parser.ypp"
9229 {
9230 void *ctx = state;
9231 (yyval.expression) = new(ctx) ast_expression(ast_identifier, NULL, NULL, NULL);
9232@@ -2896,10 +2921,10 @@ yyreduce:
9233 ;}
9234 break;
9235
9236- case 17:
9237+ case 18:
9238
9239 /* Line 1464 of yacc.c */
9240-#line 292 "glsl_parser.ypp"
9241+#line 308 "glsl_parser.ypp"
9242 {
9243 void *ctx = state;
9244 (yyval.expression) = new(ctx) ast_expression(ast_int_constant, NULL, NULL, NULL);
9245@@ -2908,10 +2933,10 @@ yyreduce:
9246 ;}
9247 break;
9248
9249- case 18:
9250+ case 19:
9251
9252 /* Line 1464 of yacc.c */
9253-#line 299 "glsl_parser.ypp"
9254+#line 315 "glsl_parser.ypp"
9255 {
9256 void *ctx = state;
9257 (yyval.expression) = new(ctx) ast_expression(ast_uint_constant, NULL, NULL, NULL);
9258@@ -2920,10 +2945,10 @@ yyreduce:
9259 ;}
9260 break;
9261
9262- case 19:
9263+ case 20:
9264
9265 /* Line 1464 of yacc.c */
9266-#line 306 "glsl_parser.ypp"
9267+#line 322 "glsl_parser.ypp"
9268 {
9269 void *ctx = state;
9270 (yyval.expression) = new(ctx) ast_expression(ast_float_constant, NULL, NULL, NULL);
9271@@ -2932,10 +2957,10 @@ yyreduce:
9272 ;}
9273 break;
9274
9275- case 20:
9276+ case 21:
9277
9278 /* Line 1464 of yacc.c */
9279-#line 313 "glsl_parser.ypp"
9280+#line 329 "glsl_parser.ypp"
9281 {
9282 void *ctx = state;
9283 (yyval.expression) = new(ctx) ast_expression(ast_bool_constant, NULL, NULL, NULL);
9284@@ -2944,19 +2969,19 @@ yyreduce:
9285 ;}
9286 break;
9287
9288- case 21:
9289+ case 22:
9290
9291 /* Line 1464 of yacc.c */
9292-#line 320 "glsl_parser.ypp"
9293+#line 336 "glsl_parser.ypp"
9294 {
9295 (yyval.expression) = (yyvsp[(2) - (3)].expression);
9296 ;}
9297 break;
9298
9299- case 23:
9300+ case 24:
9301
9302 /* Line 1464 of yacc.c */
9303-#line 328 "glsl_parser.ypp"
9304+#line 344 "glsl_parser.ypp"
9305 {
9306 void *ctx = state;
9307 (yyval.expression) = new(ctx) ast_expression(ast_array_index, (yyvsp[(1) - (4)].expression), (yyvsp[(3) - (4)].expression), NULL);
9308@@ -2964,19 +2989,19 @@ yyreduce:
9309 ;}
9310 break;
9311
9312- case 24:
9313+ case 25:
9314
9315 /* Line 1464 of yacc.c */
9316-#line 334 "glsl_parser.ypp"
9317+#line 350 "glsl_parser.ypp"
9318 {
9319 (yyval.expression) = (yyvsp[(1) - (1)].expression);
9320 ;}
9321 break;
9322
9323- case 25:
9324+ case 26:
9325
9326 /* Line 1464 of yacc.c */
9327-#line 338 "glsl_parser.ypp"
9328+#line 354 "glsl_parser.ypp"
9329 {
9330 void *ctx = state;
9331 (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), NULL, NULL);
9332@@ -2985,10 +3010,10 @@ yyreduce:
9333 ;}
9334 break;
9335
9336- case 26:
9337+ case 27:
9338
9339 /* Line 1464 of yacc.c */
9340-#line 345 "glsl_parser.ypp"
9341+#line 361 "glsl_parser.ypp"
9342 {
9343 void *ctx = state;
9344 (yyval.expression) = new(ctx) ast_expression(ast_post_inc, (yyvsp[(1) - (2)].expression), NULL, NULL);
9345@@ -2996,10 +3021,10 @@ yyreduce:
9346 ;}
9347 break;
9348
9349- case 27:
9350+ case 28:
9351
9352 /* Line 1464 of yacc.c */
9353-#line 351 "glsl_parser.ypp"
9354+#line 367 "glsl_parser.ypp"
9355 {
9356 void *ctx = state;
9357 (yyval.expression) = new(ctx) ast_expression(ast_post_dec, (yyvsp[(1) - (2)].expression), NULL, NULL);
9358@@ -3007,10 +3032,10 @@ yyreduce:
9359 ;}
9360 break;
9361
9362- case 31:
9363+ case 32:
9364
9365 /* Line 1464 of yacc.c */
9366-#line 369 "glsl_parser.ypp"
9367+#line 385 "glsl_parser.ypp"
9368 {
9369 void *ctx = state;
9370 (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL);
9371@@ -3018,10 +3043,10 @@ yyreduce:
9372 ;}
9373 break;
9374
9375- case 36:
9376+ case 37:
9377
9378 /* Line 1464 of yacc.c */
9379-#line 388 "glsl_parser.ypp"
9380+#line 404 "glsl_parser.ypp"
9381 {
9382 (yyval.expression) = (yyvsp[(1) - (2)].expression);
9383 (yyval.expression)->set_location(yylloc);
9384@@ -3029,10 +3054,10 @@ yyreduce:
9385 ;}
9386 break;
9387
9388- case 37:
9389+ case 38:
9390
9391 /* Line 1464 of yacc.c */
9392-#line 394 "glsl_parser.ypp"
9393+#line 410 "glsl_parser.ypp"
9394 {
9395 (yyval.expression) = (yyvsp[(1) - (3)].expression);
9396 (yyval.expression)->set_location(yylloc);
9397@@ -3040,10 +3065,10 @@ yyreduce:
9398 ;}
9399 break;
9400
9401- case 39:
9402+ case 40:
9403
9404 /* Line 1464 of yacc.c */
9405-#line 410 "glsl_parser.ypp"
9406+#line 426 "glsl_parser.ypp"
9407 {
9408 void *ctx = state;
9409 (yyval.expression) = new(ctx) ast_function_expression((yyvsp[(1) - (1)].type_specifier));
9410@@ -3051,10 +3076,10 @@ yyreduce:
9411 ;}
9412 break;
9413
9414- case 40:
9415+ case 41:
9416
9417 /* Line 1464 of yacc.c */
9418-#line 416 "glsl_parser.ypp"
9419+#line 432 "glsl_parser.ypp"
9420 {
9421 void *ctx = state;
9422 ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier));
9423@@ -3063,10 +3088,10 @@ yyreduce:
9424 ;}
9425 break;
9426
9427- case 41:
9428+ case 42:
9429
9430 /* Line 1464 of yacc.c */
9431-#line 423 "glsl_parser.ypp"
9432+#line 439 "glsl_parser.ypp"
9433 {
9434 void *ctx = state;
9435 ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier));
9436@@ -3075,10 +3100,10 @@ yyreduce:
9437 ;}
9438 break;
9439
9440- case 43:
9441+ case 44:
9442
9443 /* Line 1464 of yacc.c */
9444-#line 435 "glsl_parser.ypp"
9445+#line 451 "glsl_parser.ypp"
9446 {
9447 void *ctx = state;
9448 (yyval.expression) = new(ctx) ast_expression(ast_pre_inc, (yyvsp[(2) - (2)].expression), NULL, NULL);
9449@@ -3086,10 +3111,10 @@ yyreduce:
9450 ;}
9451 break;
9452
9453- case 44:
9454+ case 45:
9455
9456 /* Line 1464 of yacc.c */
9457-#line 441 "glsl_parser.ypp"
9458+#line 457 "glsl_parser.ypp"
9459 {
9460 void *ctx = state;
9461 (yyval.expression) = new(ctx) ast_expression(ast_pre_dec, (yyvsp[(2) - (2)].expression), NULL, NULL);
9462@@ -3097,10 +3122,10 @@ yyreduce:
9463 ;}
9464 break;
9465
9466- case 45:
9467+ case 46:
9468
9469 /* Line 1464 of yacc.c */
9470-#line 447 "glsl_parser.ypp"
9471+#line 463 "glsl_parser.ypp"
9472 {
9473 void *ctx = state;
9474 (yyval.expression) = new(ctx) ast_expression((yyvsp[(1) - (2)].n), (yyvsp[(2) - (2)].expression), NULL, NULL);
9475@@ -3108,38 +3133,38 @@ yyreduce:
9476 ;}
9477 break;
9478
9479- case 46:
9480+ case 47:
9481
9482 /* Line 1464 of yacc.c */
9483-#line 456 "glsl_parser.ypp"
9484+#line 472 "glsl_parser.ypp"
9485 { (yyval.n) = ast_plus; ;}
9486 break;
9487
9488- case 47:
9489+ case 48:
9490
9491 /* Line 1464 of yacc.c */
9492-#line 457 "glsl_parser.ypp"
9493+#line 473 "glsl_parser.ypp"
9494 { (yyval.n) = ast_neg; ;}
9495 break;
9496
9497- case 48:
9498+ case 49:
9499
9500 /* Line 1464 of yacc.c */
9501-#line 458 "glsl_parser.ypp"
9502+#line 474 "glsl_parser.ypp"
9503 { (yyval.n) = ast_logic_not; ;}
9504 break;
9505
9506- case 49:
9507+ case 50:
9508
9509 /* Line 1464 of yacc.c */
9510-#line 459 "glsl_parser.ypp"
9511+#line 475 "glsl_parser.ypp"
9512 { (yyval.n) = ast_bit_not; ;}
9513 break;
9514
9515- case 51:
9516+ case 52:
9517
9518 /* Line 1464 of yacc.c */
9519-#line 465 "glsl_parser.ypp"
9520+#line 481 "glsl_parser.ypp"
9521 {
9522 void *ctx = state;
9523 (yyval.expression) = new(ctx) ast_expression_bin(ast_mul, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9524@@ -3147,10 +3172,10 @@ yyreduce:
9525 ;}
9526 break;
9527
9528- case 52:
9529+ case 53:
9530
9531 /* Line 1464 of yacc.c */
9532-#line 471 "glsl_parser.ypp"
9533+#line 487 "glsl_parser.ypp"
9534 {
9535 void *ctx = state;
9536 (yyval.expression) = new(ctx) ast_expression_bin(ast_div, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9537@@ -3158,10 +3183,10 @@ yyreduce:
9538 ;}
9539 break;
9540
9541- case 53:
9542+ case 54:
9543
9544 /* Line 1464 of yacc.c */
9545-#line 477 "glsl_parser.ypp"
9546+#line 493 "glsl_parser.ypp"
9547 {
9548 void *ctx = state;
9549 (yyval.expression) = new(ctx) ast_expression_bin(ast_mod, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9550@@ -3169,10 +3194,10 @@ yyreduce:
9551 ;}
9552 break;
9553
9554- case 55:
9555+ case 56:
9556
9557 /* Line 1464 of yacc.c */
9558-#line 487 "glsl_parser.ypp"
9559+#line 503 "glsl_parser.ypp"
9560 {
9561 void *ctx = state;
9562 (yyval.expression) = new(ctx) ast_expression_bin(ast_add, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9563@@ -3180,10 +3205,10 @@ yyreduce:
9564 ;}
9565 break;
9566
9567- case 56:
9568+ case 57:
9569
9570 /* Line 1464 of yacc.c */
9571-#line 493 "glsl_parser.ypp"
9572+#line 509 "glsl_parser.ypp"
9573 {
9574 void *ctx = state;
9575 (yyval.expression) = new(ctx) ast_expression_bin(ast_sub, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9576@@ -3191,10 +3216,10 @@ yyreduce:
9577 ;}
9578 break;
9579
9580- case 58:
9581+ case 59:
9582
9583 /* Line 1464 of yacc.c */
9584-#line 503 "glsl_parser.ypp"
9585+#line 519 "glsl_parser.ypp"
9586 {
9587 void *ctx = state;
9588 (yyval.expression) = new(ctx) ast_expression_bin(ast_lshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9589@@ -3202,10 +3227,10 @@ yyreduce:
9590 ;}
9591 break;
9592
9593- case 59:
9594+ case 60:
9595
9596 /* Line 1464 of yacc.c */
9597-#line 509 "glsl_parser.ypp"
9598+#line 525 "glsl_parser.ypp"
9599 {
9600 void *ctx = state;
9601 (yyval.expression) = new(ctx) ast_expression_bin(ast_rshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9602@@ -3213,10 +3238,10 @@ yyreduce:
9603 ;}
9604 break;
9605
9606- case 61:
9607+ case 62:
9608
9609 /* Line 1464 of yacc.c */
9610-#line 519 "glsl_parser.ypp"
9611+#line 535 "glsl_parser.ypp"
9612 {
9613 void *ctx = state;
9614 (yyval.expression) = new(ctx) ast_expression_bin(ast_less, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9615@@ -3224,10 +3249,10 @@ yyreduce:
9616 ;}
9617 break;
9618
9619- case 62:
9620+ case 63:
9621
9622 /* Line 1464 of yacc.c */
9623-#line 525 "glsl_parser.ypp"
9624+#line 541 "glsl_parser.ypp"
9625 {
9626 void *ctx = state;
9627 (yyval.expression) = new(ctx) ast_expression_bin(ast_greater, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9628@@ -3235,10 +3260,10 @@ yyreduce:
9629 ;}
9630 break;
9631
9632- case 63:
9633+ case 64:
9634
9635 /* Line 1464 of yacc.c */
9636-#line 531 "glsl_parser.ypp"
9637+#line 547 "glsl_parser.ypp"
9638 {
9639 void *ctx = state;
9640 (yyval.expression) = new(ctx) ast_expression_bin(ast_lequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9641@@ -3246,10 +3271,10 @@ yyreduce:
9642 ;}
9643 break;
9644
9645- case 64:
9646+ case 65:
9647
9648 /* Line 1464 of yacc.c */
9649-#line 537 "glsl_parser.ypp"
9650+#line 553 "glsl_parser.ypp"
9651 {
9652 void *ctx = state;
9653 (yyval.expression) = new(ctx) ast_expression_bin(ast_gequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9654@@ -3257,10 +3282,10 @@ yyreduce:
9655 ;}
9656 break;
9657
9658- case 66:
9659+ case 67:
9660
9661 /* Line 1464 of yacc.c */
9662-#line 547 "glsl_parser.ypp"
9663+#line 563 "glsl_parser.ypp"
9664 {
9665 void *ctx = state;
9666 (yyval.expression) = new(ctx) ast_expression_bin(ast_equal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9667@@ -3268,10 +3293,10 @@ yyreduce:
9668 ;}
9669 break;
9670
9671- case 67:
9672+ case 68:
9673
9674 /* Line 1464 of yacc.c */
9675-#line 553 "glsl_parser.ypp"
9676+#line 569 "glsl_parser.ypp"
9677 {
9678 void *ctx = state;
9679 (yyval.expression) = new(ctx) ast_expression_bin(ast_nequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9680@@ -3279,10 +3304,10 @@ yyreduce:
9681 ;}
9682 break;
9683
9684- case 69:
9685+ case 70:
9686
9687 /* Line 1464 of yacc.c */
9688-#line 563 "glsl_parser.ypp"
9689+#line 579 "glsl_parser.ypp"
9690 {
9691 void *ctx = state;
9692 (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9693@@ -3290,10 +3315,10 @@ yyreduce:
9694 ;}
9695 break;
9696
9697- case 71:
9698+ case 72:
9699
9700 /* Line 1464 of yacc.c */
9701-#line 573 "glsl_parser.ypp"
9702+#line 589 "glsl_parser.ypp"
9703 {
9704 void *ctx = state;
9705 (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9706@@ -3301,10 +3326,10 @@ yyreduce:
9707 ;}
9708 break;
9709
9710- case 73:
9711+ case 74:
9712
9713 /* Line 1464 of yacc.c */
9714-#line 583 "glsl_parser.ypp"
9715+#line 599 "glsl_parser.ypp"
9716 {
9717 void *ctx = state;
9718 (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9719@@ -3312,10 +3337,10 @@ yyreduce:
9720 ;}
9721 break;
9722
9723- case 75:
9724+ case 76:
9725
9726 /* Line 1464 of yacc.c */
9727-#line 593 "glsl_parser.ypp"
9728+#line 609 "glsl_parser.ypp"
9729 {
9730 void *ctx = state;
9731 (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9732@@ -3323,10 +3348,10 @@ yyreduce:
9733 ;}
9734 break;
9735
9736- case 77:
9737+ case 78:
9738
9739 /* Line 1464 of yacc.c */
9740-#line 603 "glsl_parser.ypp"
9741+#line 619 "glsl_parser.ypp"
9742 {
9743 void *ctx = state;
9744 (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9745@@ -3334,10 +3359,10 @@ yyreduce:
9746 ;}
9747 break;
9748
9749- case 79:
9750+ case 80:
9751
9752 /* Line 1464 of yacc.c */
9753-#line 613 "glsl_parser.ypp"
9754+#line 629 "glsl_parser.ypp"
9755 {
9756 void *ctx = state;
9757 (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
9758@@ -3345,10 +3370,10 @@ yyreduce:
9759 ;}
9760 break;
9761
9762- case 81:
9763+ case 82:
9764
9765 /* Line 1464 of yacc.c */
9766-#line 623 "glsl_parser.ypp"
9767+#line 639 "glsl_parser.ypp"
9768 {
9769 void *ctx = state;
9770 (yyval.expression) = new(ctx) ast_expression(ast_conditional, (yyvsp[(1) - (5)].expression), (yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].expression));
9771@@ -3356,10 +3381,10 @@ yyreduce:
9772 ;}
9773 break;
9774
9775- case 83:
9776+ case 84:
9777
9778 /* Line 1464 of yacc.c */
9779-#line 633 "glsl_parser.ypp"
9780+#line 649 "glsl_parser.ypp"
9781 {
9782 void *ctx = state;
9783 (yyval.expression) = new(ctx) ast_expression((yyvsp[(2) - (3)].n), (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL);
9784@@ -3367,96 +3392,96 @@ yyreduce:
9785 ;}
9786 break;
9787
9788- case 84:
9789+ case 85:
9790
9791 /* Line 1464 of yacc.c */
9792-#line 641 "glsl_parser.ypp"
9793+#line 657 "glsl_parser.ypp"
9794 { (yyval.n) = ast_assign; ;}
9795 break;
9796
9797- case 85:
9798+ case 86:
9799
9800 /* Line 1464 of yacc.c */
9801-#line 642 "glsl_parser.ypp"
9802+#line 658 "glsl_parser.ypp"
9803 { (yyval.n) = ast_mul_assign; ;}
9804 break;
9805
9806- case 86:
9807+ case 87:
9808
9809 /* Line 1464 of yacc.c */
9810-#line 643 "glsl_parser.ypp"
9811+#line 659 "glsl_parser.ypp"
9812 { (yyval.n) = ast_div_assign; ;}
9813 break;
9814
9815- case 87:
9816+ case 88:
9817
9818 /* Line 1464 of yacc.c */
9819-#line 644 "glsl_parser.ypp"
9820+#line 660 "glsl_parser.ypp"
9821 { (yyval.n) = ast_mod_assign; ;}
9822 break;
9823
9824- case 88:
9825+ case 89:
9826
9827 /* Line 1464 of yacc.c */
9828-#line 645 "glsl_parser.ypp"
9829+#line 661 "glsl_parser.ypp"
9830 { (yyval.n) = ast_add_assign; ;}
9831 break;
9832
9833- case 89:
9834+ case 90:
9835
9836 /* Line 1464 of yacc.c */
9837-#line 646 "glsl_parser.ypp"
9838+#line 662 "glsl_parser.ypp"
9839 { (yyval.n) = ast_sub_assign; ;}
9840 break;
9841
9842- case 90:
9843+ case 91:
9844
9845 /* Line 1464 of yacc.c */
9846-#line 647 "glsl_parser.ypp"
9847+#line 663 "glsl_parser.ypp"
9848 { (yyval.n) = ast_ls_assign; ;}
9849 break;
9850
9851- case 91:
9852+ case 92:
9853
9854 /* Line 1464 of yacc.c */
9855-#line 648 "glsl_parser.ypp"
9856+#line 664 "glsl_parser.ypp"
9857 { (yyval.n) = ast_rs_assign; ;}
9858 break;
9859
9860- case 92:
9861+ case 93:
9862
9863 /* Line 1464 of yacc.c */
9864-#line 649 "glsl_parser.ypp"
9865+#line 665 "glsl_parser.ypp"
9866 { (yyval.n) = ast_and_assign; ;}
9867 break;
9868
9869- case 93:
9870+ case 94:
9871
9872 /* Line 1464 of yacc.c */
9873-#line 650 "glsl_parser.ypp"
9874+#line 666 "glsl_parser.ypp"
9875 { (yyval.n) = ast_xor_assign; ;}
9876 break;
9877
9878- case 94:
9879+ case 95:
9880
9881 /* Line 1464 of yacc.c */
9882-#line 651 "glsl_parser.ypp"
9883+#line 667 "glsl_parser.ypp"
9884 { (yyval.n) = ast_or_assign; ;}
9885 break;
9886
9887- case 95:
9888+ case 96:
9889
9890 /* Line 1464 of yacc.c */
9891-#line 656 "glsl_parser.ypp"
9892+#line 672 "glsl_parser.ypp"
9893 {
9894 (yyval.expression) = (yyvsp[(1) - (1)].expression);
9895 ;}
9896 break;
9897
9898- case 96:
9899+ case 97:
9900
9901 /* Line 1464 of yacc.c */
9902-#line 660 "glsl_parser.ypp"
9903+#line 676 "glsl_parser.ypp"
9904 {
9905 void *ctx = state;
9906 if ((yyvsp[(1) - (3)].expression)->oper != ast_sequence) {
9907@@ -3471,64 +3496,59 @@ yyreduce:
9908 ;}
9909 break;
9910
9911- case 98:
9912+ case 99:
9913
9914 /* Line 1464 of yacc.c */
9915-#line 680 "glsl_parser.ypp"
9916+#line 696 "glsl_parser.ypp"
9917 {
9918 (yyval.node) = (yyvsp[(1) - (2)].function);
9919 ;}
9920 break;
9921
9922- case 99:
9923+ case 100:
9924
9925 /* Line 1464 of yacc.c */
9926-#line 684 "glsl_parser.ypp"
9927+#line 700 "glsl_parser.ypp"
9928 {
9929 (yyval.node) = (yyvsp[(1) - (2)].declarator_list);
9930 ;}
9931 break;
9932
9933- case 100:
9934+ case 101:
9935
9936 /* Line 1464 of yacc.c */
9937-#line 688 "glsl_parser.ypp"
9938+#line 704 "glsl_parser.ypp"
9939 {
9940- if (((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_float)
9941- && ((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_int)) {
9942- _mesa_glsl_error(& (yylsp[(3) - (4)]), state, "global precision qualifier can "
9943- "only be applied to `int' or `float'\n");
9944- YYERROR;
9945- }
9946-
9947- (yyval.node) = NULL; /* FINISHME */
9948+ (yyvsp[(3) - (4)].type_specifier)->precision = (yyvsp[(2) - (4)].n);
9949+ (yyvsp[(3) - (4)].type_specifier)->is_precision_statement = true;
9950+ (yyval.node) = (yyvsp[(3) - (4)].type_specifier);
9951 ;}
9952 break;
9953
9954- case 104:
9955+ case 105:
9956
9957 /* Line 1464 of yacc.c */
9958-#line 711 "glsl_parser.ypp"
9959+#line 722 "glsl_parser.ypp"
9960 {
9961 (yyval.function) = (yyvsp[(1) - (2)].function);
9962 (yyval.function)->parameters.push_tail(& (yyvsp[(2) - (2)].parameter_declarator)->link);
9963 ;}
9964 break;
9965
9966- case 105:
9967+ case 106:
9968
9969 /* Line 1464 of yacc.c */
9970-#line 716 "glsl_parser.ypp"
9971+#line 727 "glsl_parser.ypp"
9972 {
9973 (yyval.function) = (yyvsp[(1) - (3)].function);
9974 (yyval.function)->parameters.push_tail(& (yyvsp[(3) - (3)].parameter_declarator)->link);
9975 ;}
9976 break;
9977
9978- case 106:
9979+ case 107:
9980
9981 /* Line 1464 of yacc.c */
9982-#line 724 "glsl_parser.ypp"
9983+#line 735 "glsl_parser.ypp"
9984 {
9985 void *ctx = state;
9986 (yyval.function) = new(ctx) ast_function();
9987@@ -3538,10 +3558,10 @@ yyreduce:
9988 ;}
9989 break;
9990
9991- case 107:
9992+ case 108:
9993
9994 /* Line 1464 of yacc.c */
9995-#line 735 "glsl_parser.ypp"
9996+#line 746 "glsl_parser.ypp"
9997 {
9998 void *ctx = state;
9999 (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
10000@@ -3553,10 +3573,10 @@ yyreduce:
10001 ;}
10002 break;
10003
10004- case 108:
10005+ case 109:
10006
10007 /* Line 1464 of yacc.c */
10008-#line 745 "glsl_parser.ypp"
10009+#line 756 "glsl_parser.ypp"
10010 {
10011 void *ctx = state;
10012 (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
10013@@ -3570,10 +3590,10 @@ yyreduce:
10014 ;}
10015 break;
10016
10017- case 109:
10018+ case 110:
10019
10020 /* Line 1464 of yacc.c */
10021-#line 760 "glsl_parser.ypp"
10022+#line 771 "glsl_parser.ypp"
10023 {
10024 (yyvsp[(1) - (3)].type_qualifier).flags.i |= (yyvsp[(2) - (3)].type_qualifier).flags.i;
10025
10026@@ -3582,20 +3602,20 @@ yyreduce:
10027 ;}
10028 break;
10029
10030- case 110:
10031+ case 111:
10032
10033 /* Line 1464 of yacc.c */
10034-#line 767 "glsl_parser.ypp"
10035+#line 778 "glsl_parser.ypp"
10036 {
10037 (yyval.parameter_declarator) = (yyvsp[(2) - (2)].parameter_declarator);
10038 (yyval.parameter_declarator)->type->qualifier = (yyvsp[(1) - (2)].type_qualifier);
10039 ;}
10040 break;
10041
10042- case 111:
10043+ case 112:
10044
10045 /* Line 1464 of yacc.c */
10046-#line 772 "glsl_parser.ypp"
10047+#line 783 "glsl_parser.ypp"
10048 {
10049 void *ctx = state;
10050 (yyvsp[(1) - (3)].type_qualifier).flags.i |= (yyvsp[(2) - (3)].type_qualifier).flags.i;
10051@@ -3608,10 +3628,10 @@ yyreduce:
10052 ;}
10053 break;
10054
10055- case 112:
10056+ case 113:
10057
10058 /* Line 1464 of yacc.c */
10059-#line 783 "glsl_parser.ypp"
10060+#line 794 "glsl_parser.ypp"
10061 {
10062 void *ctx = state;
10063 (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
10064@@ -3622,39 +3642,39 @@ yyreduce:
10065 ;}
10066 break;
10067
10068- case 113:
10069+ case 114:
10070
10071 /* Line 1464 of yacc.c */
10072-#line 795 "glsl_parser.ypp"
10073+#line 806 "glsl_parser.ypp"
10074 {
10075 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10076 ;}
10077 break;
10078
10079- case 114:
10080+ case 115:
10081
10082 /* Line 1464 of yacc.c */
10083-#line 799 "glsl_parser.ypp"
10084+#line 810 "glsl_parser.ypp"
10085 {
10086 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10087 (yyval.type_qualifier).flags.q.in = 1;
10088 ;}
10089 break;
10090
10091- case 115:
10092+ case 116:
10093
10094 /* Line 1464 of yacc.c */
10095-#line 804 "glsl_parser.ypp"
10096+#line 815 "glsl_parser.ypp"
10097 {
10098 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10099 (yyval.type_qualifier).flags.q.out = 1;
10100 ;}
10101 break;
10102
10103- case 116:
10104+ case 117:
10105
10106 /* Line 1464 of yacc.c */
10107-#line 809 "glsl_parser.ypp"
10108+#line 820 "glsl_parser.ypp"
10109 {
10110 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10111 (yyval.type_qualifier).flags.q.in = 1;
10112@@ -3662,10 +3682,10 @@ yyreduce:
10113 ;}
10114 break;
10115
10116- case 119:
10117+ case 120:
10118
10119 /* Line 1464 of yacc.c */
10120-#line 823 "glsl_parser.ypp"
10121+#line 834 "glsl_parser.ypp"
10122 {
10123 void *ctx = state;
10124 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (3)].identifier), false, NULL, NULL);
10125@@ -3676,10 +3696,10 @@ yyreduce:
10126 ;}
10127 break;
10128
10129- case 120:
10130+ case 121:
10131
10132 /* Line 1464 of yacc.c */
10133-#line 832 "glsl_parser.ypp"
10134+#line 843 "glsl_parser.ypp"
10135 {
10136 void *ctx = state;
10137 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), true, NULL, NULL);
10138@@ -3690,10 +3710,10 @@ yyreduce:
10139 ;}
10140 break;
10141
10142- case 121:
10143+ case 122:
10144
10145 /* Line 1464 of yacc.c */
10146-#line 841 "glsl_parser.ypp"
10147+#line 852 "glsl_parser.ypp"
10148 {
10149 void *ctx = state;
10150 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (6)].identifier), true, (yyvsp[(5) - (6)].expression), NULL);
10151@@ -3704,10 +3724,10 @@ yyreduce:
10152 ;}
10153 break;
10154
10155- case 122:
10156+ case 123:
10157
10158 /* Line 1464 of yacc.c */
10159-#line 850 "glsl_parser.ypp"
10160+#line 861 "glsl_parser.ypp"
10161 {
10162 void *ctx = state;
10163 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (7)].identifier), true, NULL, (yyvsp[(7) - (7)].expression));
10164@@ -3718,10 +3738,10 @@ yyreduce:
10165 ;}
10166 break;
10167
10168- case 123:
10169+ case 124:
10170
10171 /* Line 1464 of yacc.c */
10172-#line 859 "glsl_parser.ypp"
10173+#line 870 "glsl_parser.ypp"
10174 {
10175 void *ctx = state;
10176 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (8)].identifier), true, (yyvsp[(5) - (8)].expression), (yyvsp[(8) - (8)].expression));
10177@@ -3732,10 +3752,10 @@ yyreduce:
10178 ;}
10179 break;
10180
10181- case 124:
10182+ case 125:
10183
10184 /* Line 1464 of yacc.c */
10185-#line 868 "glsl_parser.ypp"
10186+#line 879 "glsl_parser.ypp"
10187 {
10188 void *ctx = state;
10189 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), false, NULL, (yyvsp[(5) - (5)].expression));
10190@@ -3746,10 +3766,10 @@ yyreduce:
10191 ;}
10192 break;
10193
10194- case 125:
10195+ case 126:
10196
10197 /* Line 1464 of yacc.c */
10198-#line 881 "glsl_parser.ypp"
10199+#line 892 "glsl_parser.ypp"
10200 {
10201 void *ctx = state;
10202 if ((yyvsp[(1) - (1)].fully_specified_type)->specifier->type_specifier != ast_struct) {
10203@@ -3762,10 +3782,10 @@ yyreduce:
10204 ;}
10205 break;
10206
10207- case 126:
10208+ case 127:
10209
10210 /* Line 1464 of yacc.c */
10211-#line 892 "glsl_parser.ypp"
10212+#line 903 "glsl_parser.ypp"
10213 {
10214 void *ctx = state;
10215 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
10216@@ -3776,10 +3796,10 @@ yyreduce:
10217 ;}
10218 break;
10219
10220- case 127:
10221+ case 128:
10222
10223 /* Line 1464 of yacc.c */
10224-#line 901 "glsl_parser.ypp"
10225+#line 912 "glsl_parser.ypp"
10226 {
10227 void *ctx = state;
10228 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), true, NULL, NULL);
10229@@ -3790,10 +3810,10 @@ yyreduce:
10230 ;}
10231 break;
10232
10233- case 128:
10234+ case 129:
10235
10236 /* Line 1464 of yacc.c */
10237-#line 910 "glsl_parser.ypp"
10238+#line 921 "glsl_parser.ypp"
10239 {
10240 void *ctx = state;
10241 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (5)].identifier), true, (yyvsp[(4) - (5)].expression), NULL);
10242@@ -3804,10 +3824,10 @@ yyreduce:
10243 ;}
10244 break;
10245
10246- case 129:
10247+ case 130:
10248
10249 /* Line 1464 of yacc.c */
10250-#line 919 "glsl_parser.ypp"
10251+#line 930 "glsl_parser.ypp"
10252 {
10253 void *ctx = state;
10254 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (6)].identifier), true, NULL, (yyvsp[(6) - (6)].expression));
10255@@ -3818,10 +3838,10 @@ yyreduce:
10256 ;}
10257 break;
10258
10259- case 130:
10260+ case 131:
10261
10262 /* Line 1464 of yacc.c */
10263-#line 928 "glsl_parser.ypp"
10264+#line 939 "glsl_parser.ypp"
10265 {
10266 void *ctx = state;
10267 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (7)].identifier), true, (yyvsp[(4) - (7)].expression), (yyvsp[(7) - (7)].expression));
10268@@ -3832,10 +3852,10 @@ yyreduce:
10269 ;}
10270 break;
10271
10272- case 131:
10273+ case 132:
10274
10275 /* Line 1464 of yacc.c */
10276-#line 937 "glsl_parser.ypp"
10277+#line 948 "glsl_parser.ypp"
10278 {
10279 void *ctx = state;
10280 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
10281@@ -3846,10 +3866,10 @@ yyreduce:
10282 ;}
10283 break;
10284
10285- case 132:
10286+ case 133:
10287
10288 /* Line 1464 of yacc.c */
10289-#line 946 "glsl_parser.ypp"
10290+#line 957 "glsl_parser.ypp"
10291 {
10292 void *ctx = state;
10293 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
10294@@ -3862,10 +3882,10 @@ yyreduce:
10295 ;}
10296 break;
10297
10298- case 133:
10299+ case 134:
10300
10301 /* Line 1464 of yacc.c */
10302-#line 960 "glsl_parser.ypp"
10303+#line 971 "glsl_parser.ypp"
10304 {
10305 void *ctx = state;
10306 (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
10307@@ -3874,10 +3894,10 @@ yyreduce:
10308 ;}
10309 break;
10310
10311- case 134:
10312+ case 135:
10313
10314 /* Line 1464 of yacc.c */
10315-#line 967 "glsl_parser.ypp"
10316+#line 978 "glsl_parser.ypp"
10317 {
10318 void *ctx = state;
10319 (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
10320@@ -3887,19 +3907,19 @@ yyreduce:
10321 ;}
10322 break;
10323
10324- case 135:
10325+ case 136:
10326
10327 /* Line 1464 of yacc.c */
10328-#line 978 "glsl_parser.ypp"
10329+#line 989 "glsl_parser.ypp"
10330 {
10331 (yyval.type_qualifier) = (yyvsp[(3) - (4)].type_qualifier);
10332 ;}
10333 break;
10334
10335- case 137:
10336+ case 138:
10337
10338 /* Line 1464 of yacc.c */
10339-#line 986 "glsl_parser.ypp"
10340+#line 997 "glsl_parser.ypp"
10341 {
10342 if (((yyvsp[(1) - (3)].type_qualifier).flags.i & (yyvsp[(3) - (3)].type_qualifier).flags.i) != 0) {
10343 _mesa_glsl_error(& (yylsp[(3) - (3)]), state,
10344@@ -3917,10 +3937,10 @@ yyreduce:
10345 ;}
10346 break;
10347
10348- case 138:
10349+ case 139:
10350
10351 /* Line 1464 of yacc.c */
10352-#line 1005 "glsl_parser.ypp"
10353+#line 1016 "glsl_parser.ypp"
10354 {
10355 bool got_one = false;
10356
10357@@ -3951,10 +3971,10 @@ yyreduce:
10358 ;}
10359 break;
10360
10361- case 139:
10362+ case 140:
10363
10364 /* Line 1464 of yacc.c */
10365-#line 1034 "glsl_parser.ypp"
10366+#line 1045 "glsl_parser.ypp"
10367 {
10368 bool got_one = false;
10369
10370@@ -3994,80 +4014,80 @@ yyreduce:
10371 ;}
10372 break;
10373
10374- case 140:
10375+ case 141:
10376
10377 /* Line 1464 of yacc.c */
10378-#line 1075 "glsl_parser.ypp"
10379+#line 1086 "glsl_parser.ypp"
10380 {
10381 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10382 (yyval.type_qualifier).flags.q.smooth = 1;
10383 ;}
10384 break;
10385
10386- case 141:
10387+ case 142:
10388
10389 /* Line 1464 of yacc.c */
10390-#line 1080 "glsl_parser.ypp"
10391+#line 1091 "glsl_parser.ypp"
10392 {
10393 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10394 (yyval.type_qualifier).flags.q.flat = 1;
10395 ;}
10396 break;
10397
10398- case 142:
10399+ case 143:
10400
10401 /* Line 1464 of yacc.c */
10402-#line 1085 "glsl_parser.ypp"
10403+#line 1096 "glsl_parser.ypp"
10404 {
10405 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10406 (yyval.type_qualifier).flags.q.noperspective = 1;
10407 ;}
10408 break;
10409
10410- case 143:
10411+ case 144:
10412
10413 /* Line 1464 of yacc.c */
10414-#line 1093 "glsl_parser.ypp"
10415+#line 1104 "glsl_parser.ypp"
10416 {
10417 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10418 (yyval.type_qualifier).flags.q.constant = 1;
10419 ;}
10420 break;
10421
10422- case 146:
10423+ case 147:
10424
10425 /* Line 1464 of yacc.c */
10426-#line 1103 "glsl_parser.ypp"
10427+#line 1114 "glsl_parser.ypp"
10428 {
10429 (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier);
10430 (yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i;
10431 ;}
10432 break;
10433
10434- case 148:
10435+ case 149:
10436
10437 /* Line 1464 of yacc.c */
10438-#line 1109 "glsl_parser.ypp"
10439+#line 1120 "glsl_parser.ypp"
10440 {
10441 (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier);
10442 (yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i;
10443 ;}
10444 break;
10445
10446- case 149:
10447+ case 150:
10448
10449 /* Line 1464 of yacc.c */
10450-#line 1114 "glsl_parser.ypp"
10451+#line 1125 "glsl_parser.ypp"
10452 {
10453 (yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier);
10454 (yyval.type_qualifier).flags.q.invariant = 1;
10455 ;}
10456 break;
10457
10458- case 150:
10459+ case 151:
10460
10461 /* Line 1464 of yacc.c */
10462-#line 1119 "glsl_parser.ypp"
10463+#line 1130 "glsl_parser.ypp"
10464 {
10465 (yyval.type_qualifier) = (yyvsp[(2) - (3)].type_qualifier);
10466 (yyval.type_qualifier).flags.i |= (yyvsp[(3) - (3)].type_qualifier).flags.i;
10467@@ -4075,50 +4095,50 @@ yyreduce:
10468 ;}
10469 break;
10470
10471- case 151:
10472+ case 152:
10473
10474 /* Line 1464 of yacc.c */
10475-#line 1125 "glsl_parser.ypp"
10476+#line 1136 "glsl_parser.ypp"
10477 {
10478 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10479 (yyval.type_qualifier).flags.q.invariant = 1;
10480 ;}
10481 break;
10482
10483- case 152:
10484+ case 153:
10485
10486 /* Line 1464 of yacc.c */
10487-#line 1133 "glsl_parser.ypp"
10488+#line 1144 "glsl_parser.ypp"
10489 {
10490 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10491 (yyval.type_qualifier).flags.q.constant = 1;
10492 ;}
10493 break;
10494
10495- case 153:
10496+ case 154:
10497
10498 /* Line 1464 of yacc.c */
10499-#line 1138 "glsl_parser.ypp"
10500+#line 1149 "glsl_parser.ypp"
10501 {
10502 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10503 (yyval.type_qualifier).flags.q.attribute = 1;
10504 ;}
10505 break;
10506
10507- case 154:
10508+ case 155:
10509
10510 /* Line 1464 of yacc.c */
10511-#line 1143 "glsl_parser.ypp"
10512+#line 1154 "glsl_parser.ypp"
10513 {
10514 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10515 (yyval.type_qualifier).flags.q.varying = 1;
10516 ;}
10517 break;
10518
10519- case 155:
10520+ case 156:
10521
10522 /* Line 1464 of yacc.c */
10523-#line 1148 "glsl_parser.ypp"
10524+#line 1159 "glsl_parser.ypp"
10525 {
10526 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10527 (yyval.type_qualifier).flags.q.centroid = 1;
10528@@ -4126,50 +4146,50 @@ yyreduce:
10529 ;}
10530 break;
10531
10532- case 156:
10533+ case 157:
10534
10535 /* Line 1464 of yacc.c */
10536-#line 1154 "glsl_parser.ypp"
10537+#line 1165 "glsl_parser.ypp"
10538 {
10539 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10540 (yyval.type_qualifier).flags.q.in = 1;
10541 ;}
10542 break;
10543
10544- case 157:
10545+ case 158:
10546
10547 /* Line 1464 of yacc.c */
10548-#line 1159 "glsl_parser.ypp"
10549+#line 1170 "glsl_parser.ypp"
10550 {
10551 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10552 (yyval.type_qualifier).flags.q.out = 1;
10553 ;}
10554 break;
10555
10556- case 158:
10557+ case 159:
10558
10559 /* Line 1464 of yacc.c */
10560-#line 1164 "glsl_parser.ypp"
10561+#line 1175 "glsl_parser.ypp"
10562 {
10563 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10564 (yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.in = 1;
10565 ;}
10566 break;
10567
10568- case 159:
10569+ case 160:
10570
10571 /* Line 1464 of yacc.c */
10572-#line 1169 "glsl_parser.ypp"
10573+#line 1180 "glsl_parser.ypp"
10574 {
10575 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10576 (yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.out = 1;
10577 ;}
10578 break;
10579
10580- case 160:
10581+ case 161:
10582
10583 /* Line 1464 of yacc.c */
10584-#line 1174 "glsl_parser.ypp"
10585+#line 1185 "glsl_parser.ypp"
10586 {
10587 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
10588 (yyval.type_qualifier).flags.q.uniform = 1;
10589@@ -4179,17 +4199,26 @@ yyreduce:
10590 case 162:
10591
10592 /* Line 1464 of yacc.c */
10593-#line 1183 "glsl_parser.ypp"
10594+#line 1193 "glsl_parser.ypp"
10595+ {
10596+ (yyval.type_specifier) = (yyvsp[(1) - (1)].type_specifier);
10597+ ;}
10598+ break;
10599+
10600+ case 163:
10601+
10602+/* Line 1464 of yacc.c */
10603+#line 1197 "glsl_parser.ypp"
10604 {
10605 (yyval.type_specifier) = (yyvsp[(2) - (2)].type_specifier);
10606 (yyval.type_specifier)->precision = (yyvsp[(1) - (2)].n);
10607 ;}
10608 break;
10609
10610- case 164:
10611+ case 165:
10612
10613 /* Line 1464 of yacc.c */
10614-#line 1192 "glsl_parser.ypp"
10615+#line 1206 "glsl_parser.ypp"
10616 {
10617 (yyval.type_specifier) = (yyvsp[(1) - (3)].type_specifier);
10618 (yyval.type_specifier)->is_array = true;
10619@@ -4197,10 +4226,10 @@ yyreduce:
10620 ;}
10621 break;
10622
10623- case 165:
10624+ case 166:
10625
10626 /* Line 1464 of yacc.c */
10627-#line 1198 "glsl_parser.ypp"
10628+#line 1212 "glsl_parser.ypp"
10629 {
10630 (yyval.type_specifier) = (yyvsp[(1) - (4)].type_specifier);
10631 (yyval.type_specifier)->is_array = true;
10632@@ -4208,10 +4237,10 @@ yyreduce:
10633 ;}
10634 break;
10635
10636- case 166:
10637+ case 167:
10638
10639 /* Line 1464 of yacc.c */
10640-#line 1207 "glsl_parser.ypp"
10641+#line 1221 "glsl_parser.ypp"
10642 {
10643 void *ctx = state;
10644 (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].n));
10645@@ -4219,10 +4248,10 @@ yyreduce:
10646 ;}
10647 break;
10648
10649- case 167:
10650+ case 168:
10651
10652 /* Line 1464 of yacc.c */
10653-#line 1213 "glsl_parser.ypp"
10654+#line 1227 "glsl_parser.ypp"
10655 {
10656 void *ctx = state;
10657 (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].struct_specifier));
10658@@ -4230,10 +4259,10 @@ yyreduce:
10659 ;}
10660 break;
10661
10662- case 168:
10663+ case 169:
10664
10665 /* Line 1464 of yacc.c */
10666-#line 1219 "glsl_parser.ypp"
10667+#line 1233 "glsl_parser.ypp"
10668 {
10669 void *ctx = state;
10670 (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier));
10671@@ -4241,418 +4270,415 @@ yyreduce:
10672 ;}
10673 break;
10674
10675- case 169:
10676+ case 170:
10677
10678 /* Line 1464 of yacc.c */
10679-#line 1227 "glsl_parser.ypp"
10680+#line 1241 "glsl_parser.ypp"
10681 { (yyval.n) = ast_void; ;}
10682 break;
10683
10684- case 170:
10685+ case 171:
10686
10687 /* Line 1464 of yacc.c */
10688-#line 1228 "glsl_parser.ypp"
10689+#line 1242 "glsl_parser.ypp"
10690 { (yyval.n) = ast_float; ;}
10691 break;
10692
10693- case 171:
10694+ case 172:
10695
10696 /* Line 1464 of yacc.c */
10697-#line 1229 "glsl_parser.ypp"
10698+#line 1243 "glsl_parser.ypp"
10699 { (yyval.n) = ast_int; ;}
10700 break;
10701
10702- case 172:
10703+ case 173:
10704
10705 /* Line 1464 of yacc.c */
10706-#line 1230 "glsl_parser.ypp"
10707+#line 1244 "glsl_parser.ypp"
10708 { (yyval.n) = ast_uint; ;}
10709 break;
10710
10711- case 173:
10712+ case 174:
10713
10714 /* Line 1464 of yacc.c */
10715-#line 1231 "glsl_parser.ypp"
10716+#line 1245 "glsl_parser.ypp"
10717 { (yyval.n) = ast_bool; ;}
10718 break;
10719
10720- case 174:
10721+ case 175:
10722
10723 /* Line 1464 of yacc.c */
10724-#line 1232 "glsl_parser.ypp"
10725+#line 1246 "glsl_parser.ypp"
10726 { (yyval.n) = ast_vec2; ;}
10727 break;
10728
10729- case 175:
10730+ case 176:
10731
10732 /* Line 1464 of yacc.c */
10733-#line 1233 "glsl_parser.ypp"
10734+#line 1247 "glsl_parser.ypp"
10735 { (yyval.n) = ast_vec3; ;}
10736 break;
10737
10738- case 176:
10739+ case 177:
10740
10741 /* Line 1464 of yacc.c */
10742-#line 1234 "glsl_parser.ypp"
10743+#line 1248 "glsl_parser.ypp"
10744 { (yyval.n) = ast_vec4; ;}
10745 break;
10746
10747- case 177:
10748+ case 178:
10749
10750 /* Line 1464 of yacc.c */
10751-#line 1235 "glsl_parser.ypp"
10752+#line 1249 "glsl_parser.ypp"
10753 { (yyval.n) = ast_bvec2; ;}
10754 break;
10755
10756- case 178:
10757+ case 179:
10758
10759 /* Line 1464 of yacc.c */
10760-#line 1236 "glsl_parser.ypp"
10761+#line 1250 "glsl_parser.ypp"
10762 { (yyval.n) = ast_bvec3; ;}
10763 break;
10764
10765- case 179:
10766+ case 180:
10767
10768 /* Line 1464 of yacc.c */
10769-#line 1237 "glsl_parser.ypp"
10770+#line 1251 "glsl_parser.ypp"
10771 { (yyval.n) = ast_bvec4; ;}
10772 break;
10773
10774- case 180:
10775+ case 181:
10776
10777 /* Line 1464 of yacc.c */
10778-#line 1238 "glsl_parser.ypp"
10779+#line 1252 "glsl_parser.ypp"
10780 { (yyval.n) = ast_ivec2; ;}
10781 break;
10782
10783- case 181:
10784+ case 182:
10785
10786 /* Line 1464 of yacc.c */
10787-#line 1239 "glsl_parser.ypp"
10788+#line 1253 "glsl_parser.ypp"
10789 { (yyval.n) = ast_ivec3; ;}
10790 break;
10791
10792- case 182:
10793+ case 183:
10794
10795 /* Line 1464 of yacc.c */
10796-#line 1240 "glsl_parser.ypp"
10797+#line 1254 "glsl_parser.ypp"
10798 { (yyval.n) = ast_ivec4; ;}
10799 break;
10800
10801- case 183:
10802+ case 184:
10803
10804 /* Line 1464 of yacc.c */
10805-#line 1241 "glsl_parser.ypp"
10806+#line 1255 "glsl_parser.ypp"
10807 { (yyval.n) = ast_uvec2; ;}
10808 break;
10809
10810- case 184:
10811+ case 185:
10812
10813 /* Line 1464 of yacc.c */
10814-#line 1242 "glsl_parser.ypp"
10815+#line 1256 "glsl_parser.ypp"
10816 { (yyval.n) = ast_uvec3; ;}
10817 break;
10818
10819- case 185:
10820+ case 186:
10821
10822 /* Line 1464 of yacc.c */
10823-#line 1243 "glsl_parser.ypp"
10824+#line 1257 "glsl_parser.ypp"
10825 { (yyval.n) = ast_uvec4; ;}
10826 break;
10827
10828- case 186:
10829+ case 187:
10830
10831 /* Line 1464 of yacc.c */
10832-#line 1244 "glsl_parser.ypp"
10833+#line 1258 "glsl_parser.ypp"
10834 { (yyval.n) = ast_mat2; ;}
10835 break;
10836
10837- case 187:
10838+ case 188:
10839
10840 /* Line 1464 of yacc.c */
10841-#line 1245 "glsl_parser.ypp"
10842+#line 1259 "glsl_parser.ypp"
10843 { (yyval.n) = ast_mat2x3; ;}
10844 break;
10845
10846- case 188:
10847+ case 189:
10848
10849 /* Line 1464 of yacc.c */
10850-#line 1246 "glsl_parser.ypp"
10851+#line 1260 "glsl_parser.ypp"
10852 { (yyval.n) = ast_mat2x4; ;}
10853 break;
10854
10855- case 189:
10856+ case 190:
10857
10858 /* Line 1464 of yacc.c */
10859-#line 1247 "glsl_parser.ypp"
10860+#line 1261 "glsl_parser.ypp"
10861 { (yyval.n) = ast_mat3x2; ;}
10862 break;
10863
10864- case 190:
10865+ case 191:
10866
10867 /* Line 1464 of yacc.c */
10868-#line 1248 "glsl_parser.ypp"
10869+#line 1262 "glsl_parser.ypp"
10870 { (yyval.n) = ast_mat3; ;}
10871 break;
10872
10873- case 191:
10874+ case 192:
10875
10876 /* Line 1464 of yacc.c */
10877-#line 1249 "glsl_parser.ypp"
10878+#line 1263 "glsl_parser.ypp"
10879 { (yyval.n) = ast_mat3x4; ;}
10880 break;
10881
10882- case 192:
10883+ case 193:
10884
10885 /* Line 1464 of yacc.c */
10886-#line 1250 "glsl_parser.ypp"
10887+#line 1264 "glsl_parser.ypp"
10888 { (yyval.n) = ast_mat4x2; ;}
10889 break;
10890
10891- case 193:
10892+ case 194:
10893
10894 /* Line 1464 of yacc.c */
10895-#line 1251 "glsl_parser.ypp"
10896+#line 1265 "glsl_parser.ypp"
10897 { (yyval.n) = ast_mat4x3; ;}
10898 break;
10899
10900- case 194:
10901+ case 195:
10902
10903 /* Line 1464 of yacc.c */
10904-#line 1252 "glsl_parser.ypp"
10905+#line 1266 "glsl_parser.ypp"
10906 { (yyval.n) = ast_mat4; ;}
10907 break;
10908
10909- case 195:
10910+ case 196:
10911
10912 /* Line 1464 of yacc.c */
10913-#line 1253 "glsl_parser.ypp"
10914+#line 1267 "glsl_parser.ypp"
10915 { (yyval.n) = ast_sampler1d; ;}
10916 break;
10917
10918- case 196:
10919+ case 197:
10920
10921 /* Line 1464 of yacc.c */
10922-#line 1254 "glsl_parser.ypp"
10923+#line 1268 "glsl_parser.ypp"
10924 { (yyval.n) = ast_sampler2d; ;}
10925 break;
10926
10927- case 197:
10928+ case 198:
10929
10930 /* Line 1464 of yacc.c */
10931-#line 1255 "glsl_parser.ypp"
10932+#line 1269 "glsl_parser.ypp"
10933 { (yyval.n) = ast_sampler2drect; ;}
10934 break;
10935
10936- case 198:
10937+ case 199:
10938
10939 /* Line 1464 of yacc.c */
10940-#line 1256 "glsl_parser.ypp"
10941+#line 1270 "glsl_parser.ypp"
10942 { (yyval.n) = ast_sampler3d; ;}
10943 break;
10944
10945- case 199:
10946+ case 200:
10947
10948 /* Line 1464 of yacc.c */
10949-#line 1257 "glsl_parser.ypp"
10950+#line 1271 "glsl_parser.ypp"
10951 { (yyval.n) = ast_samplercube; ;}
10952 break;
10953
10954- case 200:
10955+ case 201:
10956
10957 /* Line 1464 of yacc.c */
10958-#line 1258 "glsl_parser.ypp"
10959+#line 1272 "glsl_parser.ypp"
10960 { (yyval.n) = ast_sampler1dshadow; ;}
10961 break;
10962
10963- case 201:
10964+ case 202:
10965
10966 /* Line 1464 of yacc.c */
10967-#line 1259 "glsl_parser.ypp"
10968+#line 1273 "glsl_parser.ypp"
10969 { (yyval.n) = ast_sampler2dshadow; ;}
10970 break;
10971
10972- case 202:
10973+ case 203:
10974
10975 /* Line 1464 of yacc.c */
10976-#line 1260 "glsl_parser.ypp"
10977+#line 1274 "glsl_parser.ypp"
10978 { (yyval.n) = ast_sampler2drectshadow; ;}
10979 break;
10980
10981- case 203:
10982+ case 204:
10983
10984 /* Line 1464 of yacc.c */
10985-#line 1261 "glsl_parser.ypp"
10986+#line 1275 "glsl_parser.ypp"
10987 { (yyval.n) = ast_samplercubeshadow; ;}
10988 break;
10989
10990- case 204:
10991+ case 205:
10992
10993 /* Line 1464 of yacc.c */
10994-#line 1262 "glsl_parser.ypp"
10995+#line 1276 "glsl_parser.ypp"
10996 { (yyval.n) = ast_sampler1darray; ;}
10997 break;
10998
10999- case 205:
11000+ case 206:
11001
11002 /* Line 1464 of yacc.c */
11003-#line 1263 "glsl_parser.ypp"
11004+#line 1277 "glsl_parser.ypp"
11005 { (yyval.n) = ast_sampler2darray; ;}
11006 break;
11007
11008- case 206:
11009+ case 207:
11010
11011 /* Line 1464 of yacc.c */
11012-#line 1264 "glsl_parser.ypp"
11013+#line 1278 "glsl_parser.ypp"
11014 { (yyval.n) = ast_sampler1darrayshadow; ;}
11015 break;
11016
11017- case 207:
11018+ case 208:
11019
11020 /* Line 1464 of yacc.c */
11021-#line 1265 "glsl_parser.ypp"
11022+#line 1279 "glsl_parser.ypp"
11023 { (yyval.n) = ast_sampler2darrayshadow; ;}
11024 break;
11025
11026- case 208:
11027+ case 209:
11028
11029 /* Line 1464 of yacc.c */
11030-#line 1266 "glsl_parser.ypp"
11031+#line 1280 "glsl_parser.ypp"
11032 { (yyval.n) = ast_isampler1d; ;}
11033 break;
11034
11035- case 209:
11036+ case 210:
11037
11038 /* Line 1464 of yacc.c */
11039-#line 1267 "glsl_parser.ypp"
11040+#line 1281 "glsl_parser.ypp"
11041 { (yyval.n) = ast_isampler2d; ;}
11042 break;
11043
11044- case 210:
11045+ case 211:
11046
11047 /* Line 1464 of yacc.c */
11048-#line 1268 "glsl_parser.ypp"
11049+#line 1282 "glsl_parser.ypp"
11050 { (yyval.n) = ast_isampler3d; ;}
11051 break;
11052
11053- case 211:
11054+ case 212:
11055
11056 /* Line 1464 of yacc.c */
11057-#line 1269 "glsl_parser.ypp"
11058+#line 1283 "glsl_parser.ypp"
11059 { (yyval.n) = ast_isamplercube; ;}
11060 break;
11061
11062- case 212:
11063+ case 213:
11064
11065 /* Line 1464 of yacc.c */
11066-#line 1270 "glsl_parser.ypp"
11067+#line 1284 "glsl_parser.ypp"
11068 { (yyval.n) = ast_isampler1darray; ;}
11069 break;
11070
11071- case 213:
11072+ case 214:
11073
11074 /* Line 1464 of yacc.c */
11075-#line 1271 "glsl_parser.ypp"
11076+#line 1285 "glsl_parser.ypp"
11077 { (yyval.n) = ast_isampler2darray; ;}
11078 break;
11079
11080- case 214:
11081+ case 215:
11082
11083 /* Line 1464 of yacc.c */
11084-#line 1272 "glsl_parser.ypp"
11085+#line 1286 "glsl_parser.ypp"
11086 { (yyval.n) = ast_usampler1d; ;}
11087 break;
11088
11089- case 215:
11090+ case 216:
11091
11092 /* Line 1464 of yacc.c */
11093-#line 1273 "glsl_parser.ypp"
11094+#line 1287 "glsl_parser.ypp"
11095 { (yyval.n) = ast_usampler2d; ;}
11096 break;
11097
11098- case 216:
11099+ case 217:
11100
11101 /* Line 1464 of yacc.c */
11102-#line 1274 "glsl_parser.ypp"
11103+#line 1288 "glsl_parser.ypp"
11104 { (yyval.n) = ast_usampler3d; ;}
11105 break;
11106
11107- case 217:
11108+ case 218:
11109
11110 /* Line 1464 of yacc.c */
11111-#line 1275 "glsl_parser.ypp"
11112+#line 1289 "glsl_parser.ypp"
11113 { (yyval.n) = ast_usamplercube; ;}
11114 break;
11115
11116- case 218:
11117+ case 219:
11118
11119 /* Line 1464 of yacc.c */
11120-#line 1276 "glsl_parser.ypp"
11121+#line 1290 "glsl_parser.ypp"
11122 { (yyval.n) = ast_usampler1darray; ;}
11123 break;
11124
11125- case 219:
11126+ case 220:
11127
11128 /* Line 1464 of yacc.c */
11129-#line 1277 "glsl_parser.ypp"
11130+#line 1291 "glsl_parser.ypp"
11131 { (yyval.n) = ast_usampler2darray; ;}
11132 break;
11133
11134- case 220:
11135+ case 221:
11136
11137 /* Line 1464 of yacc.c */
11138-#line 1281 "glsl_parser.ypp"
11139+#line 1295 "glsl_parser.ypp"
11140 {
11141 if (!state->es_shader && state->language_version < 130)
11142 _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
11143 "precision qualifier forbidden "
11144- "in GLSL %d.%d (1.30 or later "
11145+ "in %s (1.30 or later "
11146 "required)\n",
11147- state->language_version / 100,
11148- state->language_version % 100);
11149+ state->version_string);
11150
11151 (yyval.n) = ast_precision_high;
11152 ;}
11153 break;
11154
11155- case 221:
11156+ case 222:
11157
11158 /* Line 1464 of yacc.c */
11159-#line 1292 "glsl_parser.ypp"
11160+#line 1305 "glsl_parser.ypp"
11161 {
11162 if (!state->es_shader && state->language_version < 130)
11163 _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
11164 "precision qualifier forbidden "
11165- "in GLSL %d.%d (1.30 or later "
11166+ "in %s (1.30 or later "
11167 "required)\n",
11168- state->language_version / 100,
11169- state->language_version % 100);
11170+ state->version_string);
11171
11172 (yyval.n) = ast_precision_medium;
11173 ;}
11174 break;
11175
11176- case 222:
11177+ case 223:
11178
11179 /* Line 1464 of yacc.c */
11180-#line 1303 "glsl_parser.ypp"
11181+#line 1315 "glsl_parser.ypp"
11182 {
11183 if (!state->es_shader && state->language_version < 130)
11184 _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
11185 "precision qualifier forbidden "
11186- "in GLSL %d.%d (1.30 or later "
11187+ "in %s (1.30 or later "
11188 "required)\n",
11189- state->language_version / 100,
11190- state->language_version % 100);
11191+ state->version_string);
11192
11193 (yyval.n) = ast_precision_low;
11194 ;}
11195 break;
11196
11197- case 223:
11198+ case 224:
11199
11200 /* Line 1464 of yacc.c */
11201-#line 1318 "glsl_parser.ypp"
11202+#line 1329 "glsl_parser.ypp"
11203 {
11204 void *ctx = state;
11205 (yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[(2) - (5)].identifier), (yyvsp[(4) - (5)].node));
11206@@ -4660,10 +4686,10 @@ yyreduce:
11207 ;}
11208 break;
11209
11210- case 224:
11211+ case 225:
11212
11213 /* Line 1464 of yacc.c */
11214-#line 1324 "glsl_parser.ypp"
11215+#line 1335 "glsl_parser.ypp"
11216 {
11217 void *ctx = state;
11218 (yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[(3) - (4)].node));
11219@@ -4671,30 +4697,30 @@ yyreduce:
11220 ;}
11221 break;
11222
11223- case 225:
11224+ case 226:
11225
11226 /* Line 1464 of yacc.c */
11227-#line 1333 "glsl_parser.ypp"
11228+#line 1344 "glsl_parser.ypp"
11229 {
11230 (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].declarator_list);
11231 (yyvsp[(1) - (1)].declarator_list)->link.self_link();
11232 ;}
11233 break;
11234
11235- case 226:
11236+ case 227:
11237
11238 /* Line 1464 of yacc.c */
11239-#line 1338 "glsl_parser.ypp"
11240+#line 1349 "glsl_parser.ypp"
11241 {
11242 (yyval.node) = (ast_node *) (yyvsp[(1) - (2)].node);
11243 (yyval.node)->link.insert_before(& (yyvsp[(2) - (2)].declarator_list)->link);
11244 ;}
11245 break;
11246
11247- case 227:
11248+ case 228:
11249
11250 /* Line 1464 of yacc.c */
11251-#line 1346 "glsl_parser.ypp"
11252+#line 1357 "glsl_parser.ypp"
11253 {
11254 void *ctx = state;
11255 ast_fully_specified_type *type = new(ctx) ast_fully_specified_type();
11256@@ -4708,30 +4734,30 @@ yyreduce:
11257 ;}
11258 break;
11259
11260- case 228:
11261+ case 229:
11262
11263 /* Line 1464 of yacc.c */
11264-#line 1361 "glsl_parser.ypp"
11265+#line 1372 "glsl_parser.ypp"
11266 {
11267 (yyval.declaration) = (yyvsp[(1) - (1)].declaration);
11268 (yyvsp[(1) - (1)].declaration)->link.self_link();
11269 ;}
11270 break;
11271
11272- case 229:
11273+ case 230:
11274
11275 /* Line 1464 of yacc.c */
11276-#line 1366 "glsl_parser.ypp"
11277+#line 1377 "glsl_parser.ypp"
11278 {
11279 (yyval.declaration) = (yyvsp[(1) - (3)].declaration);
11280 (yyval.declaration)->link.insert_before(& (yyvsp[(3) - (3)].declaration)->link);
11281 ;}
11282 break;
11283
11284- case 230:
11285+ case 231:
11286
11287 /* Line 1464 of yacc.c */
11288-#line 1374 "glsl_parser.ypp"
11289+#line 1385 "glsl_parser.ypp"
11290 {
11291 void *ctx = state;
11292 (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (1)].identifier), false, NULL, NULL);
11293@@ -4739,10 +4765,10 @@ yyreduce:
11294 ;}
11295 break;
11296
11297- case 231:
11298+ case 232:
11299
11300 /* Line 1464 of yacc.c */
11301-#line 1380 "glsl_parser.ypp"
11302+#line 1391 "glsl_parser.ypp"
11303 {
11304 void *ctx = state;
11305 (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (4)].identifier), true, (yyvsp[(3) - (4)].expression), NULL);
11306@@ -4750,31 +4776,31 @@ yyreduce:
11307 ;}
11308 break;
11309
11310- case 234:
11311+ case 235:
11312
11313 /* Line 1464 of yacc.c */
11314-#line 1398 "glsl_parser.ypp"
11315+#line 1409 "glsl_parser.ypp"
11316 { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
11317 break;
11318
11319- case 239:
11320+ case 240:
11321
11322 /* Line 1464 of yacc.c */
11323-#line 1406 "glsl_parser.ypp"
11324+#line 1417 "glsl_parser.ypp"
11325 { (yyval.node) = NULL; ;}
11326 break;
11327
11328- case 240:
11329+ case 241:
11330
11331 /* Line 1464 of yacc.c */
11332-#line 1407 "glsl_parser.ypp"
11333+#line 1418 "glsl_parser.ypp"
11334 { (yyval.node) = NULL; ;}
11335 break;
11336
11337- case 243:
11338+ case 244:
11339
11340 /* Line 1464 of yacc.c */
11341-#line 1414 "glsl_parser.ypp"
11342+#line 1425 "glsl_parser.ypp"
11343 {
11344 void *ctx = state;
11345 (yyval.compound_statement) = new(ctx) ast_compound_statement(true, NULL);
11346@@ -4782,10 +4808,10 @@ yyreduce:
11347 ;}
11348 break;
11349
11350- case 244:
11351+ case 245:
11352
11353 /* Line 1464 of yacc.c */
11354-#line 1420 "glsl_parser.ypp"
11355+#line 1431 "glsl_parser.ypp"
11356 {
11357 void *ctx = state;
11358 (yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[(2) - (3)].node));
11359@@ -4793,17 +4819,17 @@ yyreduce:
11360 ;}
11361 break;
11362
11363- case 245:
11364+ case 246:
11365
11366 /* Line 1464 of yacc.c */
11367-#line 1428 "glsl_parser.ypp"
11368+#line 1439 "glsl_parser.ypp"
11369 { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
11370 break;
11371
11372- case 247:
11373+ case 248:
11374
11375 /* Line 1464 of yacc.c */
11376-#line 1434 "glsl_parser.ypp"
11377+#line 1445 "glsl_parser.ypp"
11378 {
11379 void *ctx = state;
11380 (yyval.compound_statement) = new(ctx) ast_compound_statement(false, NULL);
11381@@ -4811,10 +4837,10 @@ yyreduce:
11382 ;}
11383 break;
11384
11385- case 248:
11386+ case 249:
11387
11388 /* Line 1464 of yacc.c */
11389-#line 1440 "glsl_parser.ypp"
11390+#line 1451 "glsl_parser.ypp"
11391 {
11392 void *ctx = state;
11393 (yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[(2) - (3)].node));
11394@@ -4822,10 +4848,10 @@ yyreduce:
11395 ;}
11396 break;
11397
11398- case 249:
11399+ case 250:
11400
11401 /* Line 1464 of yacc.c */
11402-#line 1449 "glsl_parser.ypp"
11403+#line 1460 "glsl_parser.ypp"
11404 {
11405 if ((yyvsp[(1) - (1)].node) == NULL) {
11406 _mesa_glsl_error(& (yylsp[(1) - (1)]), state, "<nil> statement\n");
11407@@ -4837,10 +4863,10 @@ yyreduce:
11408 ;}
11409 break;
11410
11411- case 250:
11412+ case 251:
11413
11414 /* Line 1464 of yacc.c */
11415-#line 1459 "glsl_parser.ypp"
11416+#line 1470 "glsl_parser.ypp"
11417 {
11418 if ((yyvsp[(2) - (2)].node) == NULL) {
11419 _mesa_glsl_error(& (yylsp[(2) - (2)]), state, "<nil> statement\n");
11420@@ -4851,10 +4877,10 @@ yyreduce:
11421 ;}
11422 break;
11423
11424- case 251:
11425+ case 252:
11426
11427 /* Line 1464 of yacc.c */
11428-#line 1471 "glsl_parser.ypp"
11429+#line 1482 "glsl_parser.ypp"
11430 {
11431 void *ctx = state;
11432 (yyval.node) = new(ctx) ast_expression_statement(NULL);
11433@@ -4862,10 +4888,10 @@ yyreduce:
11434 ;}
11435 break;
11436
11437- case 252:
11438+ case 253:
11439
11440 /* Line 1464 of yacc.c */
11441-#line 1477 "glsl_parser.ypp"
11442+#line 1488 "glsl_parser.ypp"
11443 {
11444 void *ctx = state;
11445 (yyval.node) = new(ctx) ast_expression_statement((yyvsp[(1) - (2)].expression));
11446@@ -4873,10 +4899,10 @@ yyreduce:
11447 ;}
11448 break;
11449
11450- case 253:
11451+ case 254:
11452
11453 /* Line 1464 of yacc.c */
11454-#line 1486 "glsl_parser.ypp"
11455+#line 1497 "glsl_parser.ypp"
11456 {
11457 (yyval.node) = new(state) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].selection_rest_statement).then_statement,
11458 (yyvsp[(5) - (5)].selection_rest_statement).else_statement);
11459@@ -4884,39 +4910,39 @@ yyreduce:
11460 ;}
11461 break;
11462
11463- case 254:
11464+ case 255:
11465
11466 /* Line 1464 of yacc.c */
11467-#line 1495 "glsl_parser.ypp"
11468+#line 1506 "glsl_parser.ypp"
11469 {
11470 (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (3)].node);
11471 (yyval.selection_rest_statement).else_statement = (yyvsp[(3) - (3)].node);
11472 ;}
11473 break;
11474
11475- case 255:
11476+ case 256:
11477
11478 /* Line 1464 of yacc.c */
11479-#line 1500 "glsl_parser.ypp"
11480+#line 1511 "glsl_parser.ypp"
11481 {
11482 (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (1)].node);
11483 (yyval.selection_rest_statement).else_statement = NULL;
11484 ;}
11485 break;
11486
11487- case 256:
11488+ case 257:
11489
11490 /* Line 1464 of yacc.c */
11491-#line 1508 "glsl_parser.ypp"
11492+#line 1519 "glsl_parser.ypp"
11493 {
11494 (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].expression);
11495 ;}
11496 break;
11497
11498- case 257:
11499+ case 258:
11500
11501 /* Line 1464 of yacc.c */
11502-#line 1512 "glsl_parser.ypp"
11503+#line 1523 "glsl_parser.ypp"
11504 {
11505 void *ctx = state;
11506 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
11507@@ -4929,10 +4955,10 @@ yyreduce:
11508 ;}
11509 break;
11510
11511- case 261:
11512+ case 262:
11513
11514 /* Line 1464 of yacc.c */
11515-#line 1535 "glsl_parser.ypp"
11516+#line 1546 "glsl_parser.ypp"
11517 {
11518 void *ctx = state;
11519 (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while,
11520@@ -4941,10 +4967,10 @@ yyreduce:
11521 ;}
11522 break;
11523
11524- case 262:
11525+ case 263:
11526
11527 /* Line 1464 of yacc.c */
11528-#line 1542 "glsl_parser.ypp"
11529+#line 1553 "glsl_parser.ypp"
11530 {
11531 void *ctx = state;
11532 (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while,
11533@@ -4953,10 +4979,10 @@ yyreduce:
11534 ;}
11535 break;
11536
11537- case 263:
11538+ case 264:
11539
11540 /* Line 1464 of yacc.c */
11541-#line 1549 "glsl_parser.ypp"
11542+#line 1560 "glsl_parser.ypp"
11543 {
11544 void *ctx = state;
11545 (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for,
11546@@ -4965,39 +4991,39 @@ yyreduce:
11547 ;}
11548 break;
11549
11550- case 267:
11551+ case 268:
11552
11553 /* Line 1464 of yacc.c */
11554-#line 1565 "glsl_parser.ypp"
11555+#line 1576 "glsl_parser.ypp"
11556 {
11557 (yyval.node) = NULL;
11558 ;}
11559 break;
11560
11561- case 268:
11562+ case 269:
11563
11564 /* Line 1464 of yacc.c */
11565-#line 1572 "glsl_parser.ypp"
11566+#line 1583 "glsl_parser.ypp"
11567 {
11568 (yyval.for_rest_statement).cond = (yyvsp[(1) - (2)].node);
11569 (yyval.for_rest_statement).rest = NULL;
11570 ;}
11571 break;
11572
11573- case 269:
11574+ case 270:
11575
11576 /* Line 1464 of yacc.c */
11577-#line 1577 "glsl_parser.ypp"
11578+#line 1588 "glsl_parser.ypp"
11579 {
11580 (yyval.for_rest_statement).cond = (yyvsp[(1) - (3)].node);
11581 (yyval.for_rest_statement).rest = (yyvsp[(3) - (3)].expression);
11582 ;}
11583 break;
11584
11585- case 270:
11586+ case 271:
11587
11588 /* Line 1464 of yacc.c */
11589-#line 1586 "glsl_parser.ypp"
11590+#line 1597 "glsl_parser.ypp"
11591 {
11592 void *ctx = state;
11593 (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL);
11594@@ -5005,10 +5031,10 @@ yyreduce:
11595 ;}
11596 break;
11597
11598- case 271:
11599+ case 272:
11600
11601 /* Line 1464 of yacc.c */
11602-#line 1592 "glsl_parser.ypp"
11603+#line 1603 "glsl_parser.ypp"
11604 {
11605 void *ctx = state;
11606 (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL);
11607@@ -5016,10 +5042,10 @@ yyreduce:
11608 ;}
11609 break;
11610
11611- case 272:
11612+ case 273:
11613
11614 /* Line 1464 of yacc.c */
11615-#line 1598 "glsl_parser.ypp"
11616+#line 1609 "glsl_parser.ypp"
11617 {
11618 void *ctx = state;
11619 (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL);
11620@@ -5027,10 +5053,10 @@ yyreduce:
11621 ;}
11622 break;
11623
11624- case 273:
11625+ case 274:
11626
11627 /* Line 1464 of yacc.c */
11628-#line 1604 "glsl_parser.ypp"
11629+#line 1615 "glsl_parser.ypp"
11630 {
11631 void *ctx = state;
11632 (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[(2) - (3)].expression));
11633@@ -5038,10 +5064,10 @@ yyreduce:
11634 ;}
11635 break;
11636
11637- case 274:
11638+ case 275:
11639
11640 /* Line 1464 of yacc.c */
11641-#line 1610 "glsl_parser.ypp"
11642+#line 1621 "glsl_parser.ypp"
11643 {
11644 void *ctx = state;
11645 (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL);
11646@@ -5049,31 +5075,31 @@ yyreduce:
11647 ;}
11648 break;
11649
11650- case 275:
11651+ case 276:
11652
11653 /* Line 1464 of yacc.c */
11654-#line 1618 "glsl_parser.ypp"
11655+#line 1629 "glsl_parser.ypp"
11656 { (yyval.node) = (yyvsp[(1) - (1)].function_definition); ;}
11657 break;
11658
11659- case 276:
11660+ case 277:
11661
11662 /* Line 1464 of yacc.c */
11663-#line 1619 "glsl_parser.ypp"
11664+#line 1630 "glsl_parser.ypp"
11665 { (yyval.node) = (yyvsp[(1) - (1)].node); ;}
11666 break;
11667
11668- case 277:
11669+ case 278:
11670
11671 /* Line 1464 of yacc.c */
11672-#line 1620 "glsl_parser.ypp"
11673+#line 1631 "glsl_parser.ypp"
11674 { (yyval.node) = NULL; ;}
11675 break;
11676
11677- case 278:
11678+ case 279:
11679
11680 /* Line 1464 of yacc.c */
11681-#line 1625 "glsl_parser.ypp"
11682+#line 1636 "glsl_parser.ypp"
11683 {
11684 void *ctx = state;
11685 (yyval.function_definition) = new(ctx) ast_function_definition();
11686@@ -5086,7 +5112,7 @@ yyreduce:
11687
11688
11689 /* Line 1464 of yacc.c */
11690-#line 5090 "glsl_parser.cpp"
11691+#line 5116 "glsl_parser.cpp"
11692 default: break;
11693 }
11694 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
11695diff --git a/src/glsl/glsl_parser.h b/src/glsl/glsl_parser.h
11696index 83aa56f..1bf3b35 100644
11697--- a/src/glsl/glsl_parser.h
11698+++ b/src/glsl/glsl_parser.h
11699@@ -155,79 +155,80 @@
11700 PRAGMA_DEBUG_OFF = 372,
11701 PRAGMA_OPTIMIZE_ON = 373,
11702 PRAGMA_OPTIMIZE_OFF = 374,
11703- LAYOUT_TOK = 375,
11704- ASM = 376,
11705- CLASS = 377,
11706- UNION = 378,
11707- ENUM = 379,
11708- TYPEDEF = 380,
11709- TEMPLATE = 381,
11710- THIS = 382,
11711- PACKED_TOK = 383,
11712- GOTO = 384,
11713- INLINE_TOK = 385,
11714- NOINLINE = 386,
11715- VOLATILE = 387,
11716- PUBLIC_TOK = 388,
11717- STATIC = 389,
11718- EXTERN = 390,
11719- EXTERNAL = 391,
11720- LONG_TOK = 392,
11721- SHORT_TOK = 393,
11722- DOUBLE_TOK = 394,
11723- HALF = 395,
11724- FIXED_TOK = 396,
11725- UNSIGNED = 397,
11726- INPUT_TOK = 398,
11727- OUPTUT = 399,
11728- HVEC2 = 400,
11729- HVEC3 = 401,
11730- HVEC4 = 402,
11731- DVEC2 = 403,
11732- DVEC3 = 404,
11733- DVEC4 = 405,
11734- FVEC2 = 406,
11735- FVEC3 = 407,
11736- FVEC4 = 408,
11737- SAMPLER2DRECT = 409,
11738- SAMPLER3DRECT = 410,
11739- SAMPLER2DRECTSHADOW = 411,
11740- SIZEOF = 412,
11741- CAST = 413,
11742- NAMESPACE = 414,
11743- USING = 415,
11744- ERROR_TOK = 416,
11745- COMMON = 417,
11746- PARTITION = 418,
11747- ACTIVE = 419,
11748- SAMPLERBUFFER = 420,
11749- FILTER = 421,
11750- IMAGE1D = 422,
11751- IMAGE2D = 423,
11752- IMAGE3D = 424,
11753- IMAGECUBE = 425,
11754- IMAGE1DARRAY = 426,
11755- IMAGE2DARRAY = 427,
11756- IIMAGE1D = 428,
11757- IIMAGE2D = 429,
11758- IIMAGE3D = 430,
11759- IIMAGECUBE = 431,
11760- IIMAGE1DARRAY = 432,
11761- IIMAGE2DARRAY = 433,
11762- UIMAGE1D = 434,
11763- UIMAGE2D = 435,
11764- UIMAGE3D = 436,
11765- UIMAGECUBE = 437,
11766- UIMAGE1DARRAY = 438,
11767- UIMAGE2DARRAY = 439,
11768- IMAGE1DSHADOW = 440,
11769- IMAGE2DSHADOW = 441,
11770- IMAGEBUFFER = 442,
11771- IIMAGEBUFFER = 443,
11772- UIMAGEBUFFER = 444,
11773- IMAGE1DARRAYSHADOW = 445,
11774- IMAGE2DARRAYSHADOW = 446,
11775- ROW_MAJOR = 447
11776+ PRAGMA_INVARIANT_ALL = 375,
11777+ LAYOUT_TOK = 376,
11778+ ASM = 377,
11779+ CLASS = 378,
11780+ UNION = 379,
11781+ ENUM = 380,
11782+ TYPEDEF = 381,
11783+ TEMPLATE = 382,
11784+ THIS = 383,
11785+ PACKED_TOK = 384,
11786+ GOTO = 385,
11787+ INLINE_TOK = 386,
11788+ NOINLINE = 387,
11789+ VOLATILE = 388,
11790+ PUBLIC_TOK = 389,
11791+ STATIC = 390,
11792+ EXTERN = 391,
11793+ EXTERNAL = 392,
11794+ LONG_TOK = 393,
11795+ SHORT_TOK = 394,
11796+ DOUBLE_TOK = 395,
11797+ HALF = 396,
11798+ FIXED_TOK = 397,
11799+ UNSIGNED = 398,
11800+ INPUT_TOK = 399,
11801+ OUPTUT = 400,
11802+ HVEC2 = 401,
11803+ HVEC3 = 402,
11804+ HVEC4 = 403,
11805+ DVEC2 = 404,
11806+ DVEC3 = 405,
11807+ DVEC4 = 406,
11808+ FVEC2 = 407,
11809+ FVEC3 = 408,
11810+ FVEC4 = 409,
11811+ SAMPLER2DRECT = 410,
11812+ SAMPLER3DRECT = 411,
11813+ SAMPLER2DRECTSHADOW = 412,
11814+ SIZEOF = 413,
11815+ CAST = 414,
11816+ NAMESPACE = 415,
11817+ USING = 416,
11818+ ERROR_TOK = 417,
11819+ COMMON = 418,
11820+ PARTITION = 419,
11821+ ACTIVE = 420,
11822+ SAMPLERBUFFER = 421,
11823+ FILTER = 422,
11824+ IMAGE1D = 423,
11825+ IMAGE2D = 424,
11826+ IMAGE3D = 425,
11827+ IMAGECUBE = 426,
11828+ IMAGE1DARRAY = 427,
11829+ IMAGE2DARRAY = 428,
11830+ IIMAGE1D = 429,
11831+ IIMAGE2D = 430,
11832+ IIMAGE3D = 431,
11833+ IIMAGECUBE = 432,
11834+ IIMAGE1DARRAY = 433,
11835+ IIMAGE2DARRAY = 434,
11836+ UIMAGE1D = 435,
11837+ UIMAGE2D = 436,
11838+ UIMAGE3D = 437,
11839+ UIMAGECUBE = 438,
11840+ UIMAGE1DARRAY = 439,
11841+ UIMAGE2DARRAY = 440,
11842+ IMAGE1DSHADOW = 441,
11843+ IMAGE2DSHADOW = 442,
11844+ IMAGEBUFFER = 443,
11845+ IIMAGEBUFFER = 444,
11846+ UIMAGEBUFFER = 445,
11847+ IMAGE1DARRAYSHADOW = 446,
11848+ IMAGE2DARRAYSHADOW = 447,
11849+ ROW_MAJOR = 448
11850 };
11851 #endif
11852
11853@@ -271,7 +272,7 @@ typedef union YYSTYPE
11854
11855
11856 /* Line 1685 of yacc.c */
11857-#line 275 "glsl_parser.h"
11858+#line 276 "glsl_parser.h"
11859 } YYSTYPE;
11860 # define YYSTYPE_IS_TRIVIAL 1
11861 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
11862diff --git a/src/glsl/glsl_parser.ypp b/src/glsl/glsl_parser.ypp
11863index 6d7d148..6ced818 100644
11864--- a/src/glsl/glsl_parser.ypp
11865+++ b/src/glsl/glsl_parser.ypp
11866@@ -108,6 +108,7 @@
11867 %token VERSION EXTENSION LINE COLON EOL INTERFACE OUTPUT
11868 %token PRAGMA_DEBUG_ON PRAGMA_DEBUG_OFF
11869 %token PRAGMA_OPTIMIZE_ON PRAGMA_OPTIMIZE_OFF
11870+%token PRAGMA_INVARIANT_ALL
11871 %token LAYOUT_TOK
11872
11873 /* Reserved words that are not actually used in the grammar.
11874@@ -227,6 +228,11 @@ version_statement:
11875 case 130:
11876 /* FINISHME: Check against implementation support versions. */
11877 state->language_version = $2;
11878+ state->version_string =
11879+ ralloc_asprintf(state, "GLSL%s %d.%02d",
11880+ state->es_shader ? " ES" : "",
11881+ state->language_version / 100,
11882+ state->language_version % 100);
11883 break;
11884 default:
11885 _mesa_glsl_error(& @2, state, "Shading language version"
11886@@ -241,6 +247,16 @@ pragma_statement:
11887 | PRAGMA_DEBUG_OFF EOL
11888 | PRAGMA_OPTIMIZE_ON EOL
11889 | PRAGMA_OPTIMIZE_OFF EOL
11890+ | PRAGMA_INVARIANT_ALL EOL
11891+ {
11892+ if (state->language_version < 120) {
11893+ _mesa_glsl_warning(& @1, state,
11894+ "pragma `invariant(all)' not supported in %s",
11895+ state->version_string);
11896+ } else {
11897+ state->all_invariant = true;
11898+ }
11899+ }
11900 ;
11901
11902 extension_statement_list:
11903@@ -260,16 +276,16 @@ extension_statement:
11904 external_declaration_list:
11905 external_declaration
11906 {
11907- /* FINISHME: The NULL test is only required because 'precision'
11908- * FINISHME: statements are not yet supported.
11909+ /* FINISHME: The NULL test is required because pragmas are set to
11910+ * FINISHME: NULL. (See production rule for external_declaration.)
11911 */
11912 if ($1 != NULL)
11913 state->translation_unit.push_tail(& $1->link);
11914 }
11915 | external_declaration_list external_declaration
11916 {
11917- /* FINISHME: The NULL test is only required because 'precision'
11918- * FINISHME: statements are not yet supported.
11919+ /* FINISHME: The NULL test is required because pragmas are set to
11920+ * FINISHME: NULL. (See production rule for external_declaration.)
11921 */
11922 if ($2 != NULL)
11923 state->translation_unit.push_tail(& $2->link);
11924@@ -686,14 +702,9 @@ declaration:
11925 }
11926 | PRECISION precision_qualifier type_specifier_no_prec ';'
11927 {
11928- if (($3->type_specifier != ast_float)
11929- && ($3->type_specifier != ast_int)) {
11930- _mesa_glsl_error(& @3, state, "global precision qualifier can "
11931- "only be applied to `int' or `float'\n");
11932- YYERROR;
11933- }
11934-
11935- $$ = NULL; /* FINISHME */
11936+ $3->precision = $2;
11937+ $3->is_precision_statement = true;
11938+ $$ = $3;
11939 }
11940 ;
11941
11942@@ -1179,6 +1190,9 @@ storage_qualifier:
11943
11944 type_specifier:
11945 type_specifier_no_prec
11946+ {
11947+ $$ = $1;
11948+ }
11949 | precision_qualifier type_specifier_no_prec
11950 {
11951 $$ = $2;
11952@@ -1282,10 +1296,9 @@ precision_qualifier:
11953 if (!state->es_shader && state->language_version < 130)
11954 _mesa_glsl_error(& @1, state,
11955 "precision qualifier forbidden "
11956- "in GLSL %d.%d (1.30 or later "
11957+ "in %s (1.30 or later "
11958 "required)\n",
11959- state->language_version / 100,
11960- state->language_version % 100);
11961+ state->version_string);
11962
11963 $$ = ast_precision_high;
11964 }
11965@@ -1293,10 +1306,9 @@ precision_qualifier:
11966 if (!state->es_shader && state->language_version < 130)
11967 _mesa_glsl_error(& @1, state,
11968 "precision qualifier forbidden "
11969- "in GLSL %d.%d (1.30 or later "
11970+ "in %s (1.30 or later "
11971 "required)\n",
11972- state->language_version / 100,
11973- state->language_version % 100);
11974+ state->version_string);
11975
11976 $$ = ast_precision_medium;
11977 }
11978@@ -1304,10 +1316,9 @@ precision_qualifier:
11979 if (!state->es_shader && state->language_version < 130)
11980 _mesa_glsl_error(& @1, state,
11981 "precision qualifier forbidden "
11982- "in GLSL %d.%d (1.30 or later "
11983+ "in %s (1.30 or later "
11984 "required)\n",
11985- state->language_version / 100,
11986- state->language_version % 100);
11987+ state->version_string);
11988
11989 $$ = ast_precision_low;
11990 }
11991diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp
11992index 8dbe669..24ab082 100644
11993--- a/src/glsl/glsl_parser_extras.cpp
11994+++ b/src/glsl/glsl_parser_extras.cpp
11995@@ -26,10 +26,10 @@
11996 #include <assert.h>
11997
11998 extern "C" {
11999-#include <talloc.h>
12000 #include "main/core.h" /* for struct gl_context */
12001 }
12002
12003+#include "ralloc.h"
12004 #include "ast.h"
12005 #include "glsl_parser_extras.h"
12006 #include "glsl_parser.h"
12007@@ -48,7 +48,7 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *ctx,
12008 this->scanner = NULL;
12009 this->translation_unit.make_empty();
12010 this->symbols = new(mem_ctx) glsl_symbol_table;
12011- this->info_log = talloc_strdup(mem_ctx, "");
12012+ this->info_log = ralloc_strdup(mem_ctx, "");
12013 this->error = false;
12014 this->loop_or_switch_nesting = NULL;
12015
12016@@ -104,15 +104,14 @@ _mesa_glsl_error(YYLTYPE *locp, _mesa_glsl_parse_state *state,
12017 state->error = true;
12018
12019 assert(state->info_log != NULL);
12020- state->info_log = talloc_asprintf_append(state->info_log,
12021- "%u:%u(%u): error: ",
12022+ ralloc_asprintf_append(&state->info_log, "%u:%u(%u): error: ",
12023 locp->source,
12024 locp->first_line,
12025 locp->first_column);
12026 va_start(ap, fmt);
12027- state->info_log = talloc_vasprintf_append(state->info_log, fmt, ap);
12028+ ralloc_vasprintf_append(&state->info_log, fmt, ap);
12029 va_end(ap);
12030- state->info_log = talloc_strdup_append(state->info_log, "\n");
12031+ ralloc_strcat(&state->info_log, "\n");
12032 }
12033
12034
12035@@ -123,15 +122,14 @@ _mesa_glsl_warning(const YYLTYPE *locp, _mesa_glsl_parse_state *state,
12036 va_list ap;
12037
12038 assert(state->info_log != NULL);
12039- state->info_log = talloc_asprintf_append(state->info_log,
12040- "%u:%u(%u): warning: ",
12041+ ralloc_asprintf_append(&state->info_log, "%u:%u(%u): warning: ",
12042 locp->source,
12043 locp->first_line,
12044 locp->first_column);
12045 va_start(ap, fmt);
12046- state->info_log = talloc_vasprintf_append(state->info_log, fmt, ap);
12047+ ralloc_vasprintf_append(&state->info_log, fmt, ap);
12048 va_end(ap);
12049- state->info_log = talloc_strdup_append(state->info_log, "\n");
12050+ ralloc_strcat(&state->info_log, "\n");
12051 }
12052
12053
12054@@ -696,7 +694,7 @@ ast_struct_specifier::ast_struct_specifier(char *identifier,
12055 {
12056 if (identifier == NULL) {
12057 static unsigned anon_count = 1;
12058- identifier = talloc_asprintf(this, "#anon_struct_%04x", anon_count);
12059+ identifier = ralloc_asprintf(this, "#anon_struct_%04x", anon_count);
12060 anon_count++;
12061 }
12062 name = identifier;
12063diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h
12064index 98c4e70..bb77678 100644
12065--- a/src/glsl/glsl_parser_extras.h
12066+++ b/src/glsl/glsl_parser_extras.h
12067@@ -46,21 +46,21 @@ struct _mesa_glsl_parse_state {
12068 _mesa_glsl_parse_state(struct gl_context *ctx, GLenum target,
12069 void *mem_ctx);
12070
12071- /* Callers of this talloc-based new need not call delete. It's
12072- * easier to just talloc_free 'ctx' (or any of its ancestors). */
12073+ /* Callers of this ralloc-based new need not call delete. It's
12074+ * easier to just ralloc_free 'ctx' (or any of its ancestors). */
12075 static void* operator new(size_t size, void *ctx)
12076 {
12077- void *mem = talloc_zero_size(ctx, size);
12078+ void *mem = rzalloc_size(ctx, size);
12079 assert(mem != NULL);
12080
12081 return mem;
12082 }
12083
12084 /* If the user *does* call delete, that's OK, we will just
12085- * talloc_free in that case. */
12086+ * ralloc_free in that case. */
12087 static void operator delete(void *mem)
12088 {
12089- talloc_free(mem);
12090+ ralloc_free(mem);
12091 }
12092
12093 void *scanner;
12094@@ -69,6 +69,7 @@ struct _mesa_glsl_parse_state {
12095
12096 bool es_shader;
12097 unsigned language_version;
12098+ const char *version_string;
12099 enum _mesa_glsl_parser_targets target;
12100
12101 /**
12102@@ -108,6 +109,13 @@ struct _mesa_glsl_parse_state {
12103 /** Was there an error during compilation? */
12104 bool error;
12105
12106+ /**
12107+ * Are all shader inputs / outputs invariant?
12108+ *
12109+ * This is set when the 'STDGL invariant(all)' pragma is used.
12110+ */
12111+ bool all_invariant;
12112+
12113 /** Loop or switch statement containing the current instructions. */
12114 class ir_instruction *loop_or_switch_nesting;
12115 class ast_iteration_statement *loop_or_switch_nesting_ast;
12116diff --git a/src/glsl/glsl_symbol_table.cpp b/src/glsl/glsl_symbol_table.cpp
12117index 3dcd928..2f291d4 100644
12118--- a/src/glsl/glsl_symbol_table.cpp
12119+++ b/src/glsl/glsl_symbol_table.cpp
12120@@ -26,22 +26,19 @@
12121
12122 class symbol_table_entry {
12123 public:
12124- /* Callers of this talloc-based new need not call delete. It's
12125- * easier to just talloc_free 'ctx' (or any of its ancestors). */
12126+ /* Callers of this ralloc-based new need not call delete. It's
12127+ * easier to just ralloc_free 'ctx' (or any of its ancestors). */
12128 static void* operator new(size_t size, void *ctx)
12129 {
12130- void *entry = talloc_size(ctx, size);
12131+ void *entry = ralloc_size(ctx, size);
12132 assert(entry != NULL);
12133 return entry;
12134 }
12135
12136- /* If the user *does* call delete, that's OK, we will just
12137- * talloc_free in that case. Here, C++ will have already called the
12138- * destructor so tell talloc not to do that again. */
12139- static void operator delete(void *table)
12140+ /* If the user *does* call delete, that's OK, we will just ralloc_free. */
12141+ static void operator delete(void *entry)
12142 {
12143- talloc_set_destructor(table, NULL);
12144- talloc_free(table);
12145+ ralloc_free(entry);
12146 }
12147
12148 symbol_table_entry(ir_variable *v) : v(v), f(0), t(0) {}
12149@@ -57,13 +54,13 @@ glsl_symbol_table::glsl_symbol_table()
12150 {
12151 this->language_version = 120;
12152 this->table = _mesa_symbol_table_ctor();
12153- this->mem_ctx = talloc_init("symbol table entries");
12154+ this->mem_ctx = ralloc_context(NULL);
12155 }
12156
12157 glsl_symbol_table::~glsl_symbol_table()
12158 {
12159 _mesa_symbol_table_dtor(table);
12160- talloc_free(mem_ctx);
12161+ ralloc_free(mem_ctx);
12162 }
12163
12164 void glsl_symbol_table::push_scope()
12165diff --git a/src/glsl/glsl_symbol_table.h b/src/glsl/glsl_symbol_table.h
12166index 28a44eb..637bc03 100644
12167--- a/src/glsl/glsl_symbol_table.h
12168+++ b/src/glsl/glsl_symbol_table.h
12169@@ -44,36 +44,34 @@ class symbol_table_entry;
12170 */
12171 struct glsl_symbol_table {
12172 private:
12173- static int
12174+ static void
12175 _glsl_symbol_table_destructor (glsl_symbol_table *table)
12176 {
12177 table->~glsl_symbol_table();
12178-
12179- return 0;
12180 }
12181
12182 public:
12183- /* Callers of this talloc-based new need not call delete. It's
12184- * easier to just talloc_free 'ctx' (or any of its ancestors). */
12185+ /* Callers of this ralloc-based new need not call delete. It's
12186+ * easier to just ralloc_free 'ctx' (or any of its ancestors). */
12187 static void* operator new(size_t size, void *ctx)
12188 {
12189 void *table;
12190
12191- table = talloc_size(ctx, size);
12192+ table = ralloc_size(ctx, size);
12193 assert(table != NULL);
12194
12195- talloc_set_destructor(table, (int (*)(void*)) _glsl_symbol_table_destructor);
12196+ ralloc_set_destructor(table, (void (*)(void*)) _glsl_symbol_table_destructor);
12197
12198 return table;
12199 }
12200
12201 /* If the user *does* call delete, that's OK, we will just
12202- * talloc_free in that case. Here, C++ will have already called the
12203- * destructor so tell talloc not to do that again. */
12204+ * ralloc_free in that case. Here, C++ will have already called the
12205+ * destructor so tell ralloc not to do that again. */
12206 static void operator delete(void *table)
12207 {
12208- talloc_set_destructor(table, NULL);
12209- talloc_free(table);
12210+ ralloc_set_destructor(table, NULL);
12211+ ralloc_free(table);
12212 }
12213
12214 glsl_symbol_table();
12215diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp
12216index 8c33cfa..f4d9242 100644
12217--- a/src/glsl/glsl_types.cpp
12218+++ b/src/glsl/glsl_types.cpp
12219@@ -37,10 +37,10 @@ hash_table *glsl_type::record_types = NULL;
12220 void *glsl_type::mem_ctx = NULL;
12221
12222 void
12223-glsl_type::init_talloc_type_ctx(void)
12224+glsl_type::init_ralloc_type_ctx(void)
12225 {
12226 if (glsl_type::mem_ctx == NULL) {
12227- glsl_type::mem_ctx = talloc_autofree_context();
12228+ glsl_type::mem_ctx = ralloc_autofree_context();
12229 assert(glsl_type::mem_ctx != NULL);
12230 }
12231 }
12232@@ -55,8 +55,8 @@ glsl_type::glsl_type(GLenum gl_type,
12233 vector_elements(vector_elements), matrix_columns(matrix_columns),
12234 length(0)
12235 {
12236- init_talloc_type_ctx();
12237- this->name = talloc_strdup(this->mem_ctx, name);
12238+ init_ralloc_type_ctx();
12239+ this->name = ralloc_strdup(this->mem_ctx, name);
12240 /* Neither dimension is zero or both dimensions are zero.
12241 */
12242 assert((vector_elements == 0) == (matrix_columns == 0));
12243@@ -73,8 +73,8 @@ glsl_type::glsl_type(GLenum gl_type,
12244 vector_elements(0), matrix_columns(0),
12245 length(0)
12246 {
12247- init_talloc_type_ctx();
12248- this->name = talloc_strdup(this->mem_ctx, name);
12249+ init_ralloc_type_ctx();
12250+ this->name = ralloc_strdup(this->mem_ctx, name);
12251 memset(& fields, 0, sizeof(fields));
12252 }
12253
12254@@ -88,13 +88,13 @@ glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields,
12255 {
12256 unsigned int i;
12257
12258- init_talloc_type_ctx();
12259- this->name = talloc_strdup(this->mem_ctx, name);
12260- this->fields.structure = talloc_array(this->mem_ctx,
12261+ init_ralloc_type_ctx();
12262+ this->name = ralloc_strdup(this->mem_ctx, name);
12263+ this->fields.structure = ralloc_array(this->mem_ctx,
12264 glsl_struct_field, length);
12265 for (i = 0; i < length; i++) {
12266 this->fields.structure[i].type = fields[i].type;
12267- this->fields.structure[i].name = talloc_strdup(this->fields.structure,
12268+ this->fields.structure[i].name = ralloc_strdup(this->fields.structure,
12269 fields[i].name);
12270 }
12271 }
12272@@ -120,7 +120,7 @@ glsl_type::generate_100ES_types(glsl_symbol_table *symtab)
12273 add_types_to_symbol_table(symtab, builtin_structure_types,
12274 Elements(builtin_structure_types),
12275 false);
12276- add_types_to_symbol_table(symtab, &void_type, 1, false);
12277+ add_types_to_symbol_table(symtab, void_type, 1, false);
12278 }
12279
12280 void
12281@@ -264,7 +264,7 @@ glsl_type::glsl_type(const glsl_type *array, unsigned length) :
12282 * NUL.
12283 */
12284 const unsigned name_length = strlen(array->name) + 10 + 3;
12285- char *const n = (char *) talloc_size(this->mem_ctx, name_length);
12286+ char *const n = (char *) ralloc_size(this->mem_ctx, name_length);
12287
12288 if (length == 0)
12289 snprintf(n, name_length, "%s[]", array->name);
12290@@ -279,7 +279,7 @@ const glsl_type *
12291 glsl_type::get_instance(unsigned base_type, unsigned rows, unsigned columns)
12292 {
12293 if (base_type == GLSL_TYPE_VOID)
12294- return &void_type;
12295+ return void_type;
12296
12297 if ((rows < 1) || (rows > 4) || (columns < 1) || (columns > 4))
12298 return error_type;
12299@@ -354,7 +354,7 @@ glsl_type::get_array_instance(const glsl_type *base, unsigned array_size)
12300 if (t == NULL) {
12301 t = new glsl_type(base, array_size);
12302
12303- hash_table_insert(array_types, (void *) t, talloc_strdup(mem_ctx, key));
12304+ hash_table_insert(array_types, (void *) t, ralloc_strdup(mem_ctx, key));
12305 }
12306
12307 assert(t->base_type == GLSL_TYPE_ARRAY);
12308diff --git a/src/glsl/glsl_types.h b/src/glsl/glsl_types.h
12309index d62d493..ab6858f 100644
12310--- a/src/glsl/glsl_types.h
12311+++ b/src/glsl/glsl_types.h
12312@@ -31,9 +31,10 @@
12313
12314 extern "C" {
12315 #include "GL/gl.h"
12316-#include <talloc.h>
12317 }
12318
12319+#include "ralloc.h"
12320+
12321 struct _mesa_glsl_parse_state;
12322 struct glsl_symbol_table;
12323
12324@@ -77,28 +78,28 @@ struct glsl_type {
12325 * and \c GLSL_TYPE_UINT are valid.
12326 */
12327
12328- /* Callers of this talloc-based new need not call delete. It's
12329- * easier to just talloc_free 'mem_ctx' (or any of its ancestors). */
12330+ /* Callers of this ralloc-based new need not call delete. It's
12331+ * easier to just ralloc_free 'mem_ctx' (or any of its ancestors). */
12332 static void* operator new(size_t size)
12333 {
12334 if (glsl_type::mem_ctx == NULL) {
12335- glsl_type::mem_ctx = talloc_init("glsl_type");
12336+ glsl_type::mem_ctx = ralloc_context(NULL);
12337 assert(glsl_type::mem_ctx != NULL);
12338 }
12339
12340 void *type;
12341
12342- type = talloc_size(glsl_type::mem_ctx, size);
12343+ type = ralloc_size(glsl_type::mem_ctx, size);
12344 assert(type != NULL);
12345
12346 return type;
12347 }
12348
12349 /* If the user *does* call delete, that's OK, we will just
12350- * talloc_free in that case. */
12351+ * ralloc_free in that case. */
12352 static void operator delete(void *type)
12353 {
12354- talloc_free(type);
12355+ ralloc_free(type);
12356 }
12357
12358 /**
12359@@ -142,6 +143,7 @@ struct glsl_type {
12360 */
12361 /*@{*/
12362 static const glsl_type *const error_type;
12363+ static const glsl_type *const void_type;
12364 static const glsl_type *const int_type;
12365 static const glsl_type *const ivec4_type;
12366 static const glsl_type *const uint_type;
12367@@ -385,13 +387,13 @@ struct glsl_type {
12368
12369 private:
12370 /**
12371- * talloc context for all glsl_type allocations
12372+ * ralloc context for all glsl_type allocations
12373 *
12374 * Set on the first call to \c glsl_type::new.
12375 */
12376 static void *mem_ctx;
12377
12378- void init_talloc_type_ctx(void);
12379+ void init_ralloc_type_ctx(void);
12380
12381 /** Constructor for vector and matrix types */
12382 glsl_type(GLenum gl_type,
12383@@ -424,7 +426,7 @@ private:
12384 */
12385 /*@{*/
12386 static const glsl_type _error_type;
12387- static const glsl_type void_type;
12388+ static const glsl_type _void_type;
12389 static const glsl_type builtin_core_types[];
12390 static const glsl_type builtin_structure_types[];
12391 static const glsl_type builtin_110_deprecated_structure_types[];
12392diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
12393index b8b0fed..169e948 100644
12394--- a/src/glsl/ir.cpp
12395+++ b/src/glsl/ir.cpp
12396@@ -514,7 +514,7 @@ ir_constant::ir_constant(const struct glsl_type *type, exec_list *value_list)
12397 || type->is_record() || type->is_array());
12398
12399 if (type->is_array()) {
12400- this->array_elements = talloc_array(this, ir_constant *, type->length);
12401+ this->array_elements = ralloc_array(this, ir_constant *, type->length);
12402 unsigned i = 0;
12403 foreach_list(node, value_list) {
12404 ir_constant *value = (ir_constant *) node;
12405@@ -972,7 +972,7 @@ ir_dereference_array::ir_dereference_array(ir_rvalue *value,
12406 ir_dereference_array::ir_dereference_array(ir_variable *var,
12407 ir_rvalue *array_index)
12408 {
12409- void *ctx = talloc_parent(var);
12410+ void *ctx = ralloc_parent(var);
12411
12412 this->ir_type = ir_type_dereference_array;
12413 this->array_index = array_index;
12414@@ -1005,7 +1005,7 @@ ir_dereference_record::ir_dereference_record(ir_rvalue *value,
12415 {
12416 this->ir_type = ir_type_dereference_record;
12417 this->record = value;
12418- this->field = talloc_strdup(this, field);
12419+ this->field = ralloc_strdup(this, field);
12420 this->type = (this->record != NULL)
12421 ? this->record->type->field_type(field) : glsl_type::error_type;
12422 }
12423@@ -1014,11 +1014,11 @@ ir_dereference_record::ir_dereference_record(ir_rvalue *value,
12424 ir_dereference_record::ir_dereference_record(ir_variable *var,
12425 const char *field)
12426 {
12427- void *ctx = talloc_parent(var);
12428+ void *ctx = ralloc_parent(var);
12429
12430 this->ir_type = ir_type_dereference_record;
12431 this->record = new(ctx) ir_dereference_variable(var);
12432- this->field = talloc_strdup(this, field);
12433+ this->field = ralloc_strdup(this, field);
12434 this->type = (this->record != NULL)
12435 ? this->record->type->field_type(field) : glsl_type::error_type;
12436 }
12437@@ -1181,7 +1181,7 @@ ir_swizzle::ir_swizzle(ir_rvalue *val, ir_swizzle_mask mask)
12438 ir_swizzle *
12439 ir_swizzle::create(ir_rvalue *val, const char *str, unsigned vector_length)
12440 {
12441- void *ctx = talloc_parent(val);
12442+ void *ctx = ralloc_parent(val);
12443
12444 /* For each possible swizzle character, this table encodes the value in
12445 * \c idx_map that represents the 0th element of the vector. For invalid
12446@@ -1270,13 +1270,14 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name,
12447 {
12448 this->ir_type = ir_type_variable;
12449 this->type = type;
12450- this->name = talloc_strdup(this, name);
12451+ this->name = ralloc_strdup(this, name);
12452 this->explicit_location = false;
12453 this->location = -1;
12454 this->warn_extension = NULL;
12455 this->constant_value = NULL;
12456 this->origin_upper_left = false;
12457 this->pixel_center_integer = false;
12458+ this->used = false;
12459
12460 if (type && type->base_type == GLSL_TYPE_SAMPLER)
12461 this->read_only = true;
12462@@ -1360,7 +1361,7 @@ ir_function_signature::replace_parameters(exec_list *new_params)
12463 ir_function::ir_function(const char *name)
12464 {
12465 this->ir_type = ir_type_function;
12466- this->name = talloc_strdup(this, name);
12467+ this->name = ralloc_strdup(this, name);
12468 }
12469
12470
12471@@ -1426,7 +1427,7 @@ steal_memory(ir_instruction *ir, void *new_ctx)
12472 }
12473 }
12474
12475- talloc_steal(new_ctx, ir);
12476+ ralloc_steal(new_ctx, ir);
12477 }
12478
12479
12480diff --git a/src/glsl/ir.h b/src/glsl/ir.h
12481index 102a68b..c4d2fbf 100644
12482--- a/src/glsl/ir.h
12483+++ b/src/glsl/ir.h
12484@@ -29,10 +29,7 @@
12485 #include <cstdio>
12486 #include <cstdlib>
12487
12488-extern "C" {
12489-#include <talloc.h>
12490-}
12491-
12492+#include "ralloc.h"
12493 #include "glsl_types.h"
12494 #include "list.h"
12495 #include "ir_visitor.h"
12496@@ -295,6 +292,15 @@ public:
12497 unsigned invariant:1;
12498
12499 /**
12500+ * Has this variable been used for reading or writing?
12501+ *
12502+ * Several GLSL semantic checks require knowledge of whether or not a
12503+ * variable has been used. For example, it is an error to redeclare a
12504+ * variable as invariant after it has been used.
12505+ */
12506+ unsigned used:1;
12507+
12508+ /**
12509 * Storage class of the variable.
12510 *
12511 * \sa ir_variable_mode
12512@@ -949,7 +955,7 @@ public:
12513 /**
12514 * Get a generic ir_call object when an error occurs
12515 *
12516- * Any allocation will be performed with 'ctx' as talloc owner.
12517+ * Any allocation will be performed with 'ctx' as ralloc owner.
12518 */
12519 static ir_call *get_error_instruction(void *ctx);
12520
12521diff --git a/src/glsl/ir_clone.cpp b/src/glsl/ir_clone.cpp
12522index 1522af6..20a59b1 100644
12523--- a/src/glsl/ir_clone.cpp
12524+++ b/src/glsl/ir_clone.cpp
12525@@ -346,7 +346,7 @@ ir_constant::clone(void *mem_ctx, struct hash_table *ht) const
12526 ir_constant *c = new(mem_ctx) ir_constant;
12527
12528 c->type = this->type;
12529- c->array_elements = talloc_array(c, ir_constant *, this->type->length);
12530+ c->array_elements = ralloc_array(c, ir_constant *, this->type->length);
12531 for (unsigned i = 0; i < this->type->length; i++) {
12532 c->array_elements[i] = this->array_elements[i]->clone(mem_ctx, NULL);
12533 }
12534diff --git a/src/glsl/ir_constant_expression.cpp b/src/glsl/ir_constant_expression.cpp
12535index 4fd6d09..cf958aa 100644
12536--- a/src/glsl/ir_constant_expression.cpp
12537+++ b/src/glsl/ir_constant_expression.cpp
12538@@ -86,7 +86,7 @@ ir_expression::constant_expression_value()
12539 components = op[1]->type->components();
12540 }
12541
12542- void *ctx = talloc_parent(this);
12543+ void *ctx = ralloc_parent(this);
12544
12545 /* Handle array operations here, rather than below. */
12546 if (op[0]->type->is_array()) {
12547@@ -845,7 +845,7 @@ ir_swizzle::constant_expression_value()
12548 }
12549 }
12550
12551- void *ctx = talloc_parent(this);
12552+ void *ctx = ralloc_parent(this);
12553 return new(ctx) ir_constant(this->type, &data);
12554 }
12555 return NULL;
12556@@ -868,7 +868,7 @@ ir_dereference_variable::constant_expression_value()
12557 if (!var->constant_value)
12558 return NULL;
12559
12560- return var->constant_value->clone(talloc_parent(var), NULL);
12561+ return var->constant_value->clone(ralloc_parent(var), NULL);
12562 }
12563
12564
12565@@ -879,7 +879,7 @@ ir_dereference_array::constant_expression_value()
12566 ir_constant *idx = this->array_index->constant_expression_value();
12567
12568 if ((array != NULL) && (idx != NULL)) {
12569- void *ctx = talloc_parent(this);
12570+ void *ctx = ralloc_parent(this);
12571 if (array->type->is_matrix()) {
12572 /* Array access of a matrix results in a vector.
12573 */
12574@@ -984,7 +984,7 @@ ir_call::constant_expression_value()
12575 * - Fill "data" with appopriate constant data
12576 * - Return an ir_constant directly.
12577 */
12578- void *mem_ctx = talloc_parent(this);
12579+ void *mem_ctx = ralloc_parent(this);
12580 ir_expression *expr = NULL;
12581
12582 ir_constant_data data;
12583diff --git a/src/glsl/ir_expression_flattening.cpp b/src/glsl/ir_expression_flattening.cpp
12584index 7b1b8db..0b7c537 100644
12585--- a/src/glsl/ir_expression_flattening.cpp
12586+++ b/src/glsl/ir_expression_flattening.cpp
12587@@ -78,7 +78,7 @@ ir_expression_flattening_visitor::handle_rvalue(ir_rvalue **rvalue)
12588 if (!ir || !this->predicate(ir))
12589 return;
12590
12591- void *ctx = talloc_parent(ir);
12592+ void *ctx = ralloc_parent(ir);
12593
12594 var = new(ctx) ir_variable(ir->type, "flattening_tmp", ir_var_temporary);
12595 base_ir->insert_before(var);
12596diff --git a/src/glsl/ir_import_prototypes.cpp b/src/glsl/ir_import_prototypes.cpp
12597index 4e0b30a..be5e0c1 100644
12598--- a/src/glsl/ir_import_prototypes.cpp
12599+++ b/src/glsl/ir_import_prototypes.cpp
12600@@ -109,7 +109,7 @@ private:
12601 * \param dest Destination instruction stream where new \c ir_function and
12602 * \c ir_function_signature nodes will be stored
12603 * \param symbols Symbol table where new functions will be stored
12604- * \param mem_ctx talloc memory context used for new allocations
12605+ * \param mem_ctx ralloc memory context used for new allocations
12606 */
12607 void
12608 import_prototypes(const exec_list *source, exec_list *dest,
12609diff --git a/src/glsl/ir_reader.cpp b/src/glsl/ir_reader.cpp
12610index 5a718d3..e395ee9 100644
12611--- a/src/glsl/ir_reader.cpp
12612+++ b/src/glsl/ir_reader.cpp
12613@@ -23,10 +23,6 @@
12614
12615 #include <cstdarg>
12616
12617-extern "C" {
12618-#include <talloc.h>
12619-}
12620-
12621 #include "ir_reader.h"
12622 #include "glsl_parser_extras.h"
12623 #include "glsl_types.h"
12624@@ -88,7 +84,7 @@ _mesa_glsl_read_ir(_mesa_glsl_parse_state *state, exec_list *instructions,
12625 }
12626
12627 read_instructions(state, instructions, expr, NULL);
12628- talloc_free(expr);
12629+ ralloc_free(expr);
12630
12631 if (debug)
12632 validate_ir_tree(instructions);
12633@@ -103,21 +99,19 @@ ir_read_error(_mesa_glsl_parse_state *state, s_expression *expr,
12634 state->error = true;
12635
12636 if (state->current_function != NULL)
12637- state->info_log = talloc_asprintf_append(state->info_log,
12638- "In function %s:\n",
12639- state->current_function->function_name());
12640- state->info_log = talloc_strdup_append(state->info_log, "error: ");
12641+ ralloc_asprintf_append(&state->info_log, "In function %s:\n",
12642+ state->current_function->function_name());
12643+ ralloc_strcat(&state->info_log, "error: ");
12644
12645 va_start(ap, fmt);
12646- state->info_log = talloc_vasprintf_append(state->info_log, fmt, ap);
12647+ ralloc_vasprintf_append(&state->info_log, fmt, ap);
12648 va_end(ap);
12649- state->info_log = talloc_strdup_append(state->info_log, "\n");
12650+ ralloc_strcat(&state->info_log, "\n");
12651
12652 if (expr != NULL) {
12653- state->info_log = talloc_strdup_append(state->info_log,
12654- "...in this context:\n ");
12655+ ralloc_strcat(&state->info_log, "...in this context:\n ");
12656 expr->print();
12657- state->info_log = talloc_strdup_append(state->info_log, "\n\n");
12658+ ralloc_strcat(&state->info_log, "\n\n");
12659 }
12660 }
12661
12662diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp
12663index 5b055f6..44d7549 100644
12664--- a/src/glsl/ir_validate.cpp
12665+++ b/src/glsl/ir_validate.cpp
12666@@ -179,7 +179,7 @@ ir_validate::visit_enter(ir_function *ir)
12667 ir_visitor_status
12668 ir_validate::visit_leave(ir_function *ir)
12669 {
12670- assert(talloc_parent(ir->name) == ir);
12671+ assert(ralloc_parent(ir->name) == ir);
12672
12673 this->current_function = NULL;
12674 return visit_continue;
12675@@ -450,7 +450,7 @@ ir_validate::visit(ir_variable *ir)
12676 * declared before it is dereferenced.
12677 */
12678 if (ir->name)
12679- assert(talloc_parent(ir->name) == ir);
12680+ assert(ralloc_parent(ir->name) == ir);
12681
12682 hash_table_insert(ht, ir, ir);
12683 return visit_continue;
12684diff --git a/src/glsl/ir_variable_refcount.h b/src/glsl/ir_variable_refcount.h
12685index 8b43bad..906135a 100644
12686--- a/src/glsl/ir_variable_refcount.h
12687+++ b/src/glsl/ir_variable_refcount.h
12688@@ -54,13 +54,13 @@ class ir_variable_refcount_visitor : public ir_hierarchical_visitor {
12689 public:
12690 ir_variable_refcount_visitor(void)
12691 {
12692- this->mem_ctx = talloc_new(NULL);
12693+ this->mem_ctx = ralloc_context(NULL);
12694 this->variable_list.make_empty();
12695 }
12696
12697 ~ir_variable_refcount_visitor(void)
12698 {
12699- talloc_free(this->mem_ctx);
12700+ ralloc_free(this->mem_ctx);
12701 }
12702
12703 virtual ir_visitor_status visit(ir_variable *);
12704diff --git a/src/glsl/link_functions.cpp b/src/glsl/link_functions.cpp
12705index 05930ed..861fa39 100644
12706--- a/src/glsl/link_functions.cpp
12707+++ b/src/glsl/link_functions.cpp
12708@@ -25,10 +25,6 @@
12709 #include <cstdio>
12710 #include <cstdarg>
12711
12712-extern "C" {
12713-#include <talloc.h>
12714-}
12715-
12716 #include "main/core.h"
12717 #include "glsl_symbol_table.h"
12718 #include "glsl_parser_extras.h"
12719@@ -185,6 +181,18 @@ public:
12720 var = ir->var->clone(linked, NULL);
12721 linked->symbols->add_variable(var);
12722 linked->ir->push_head(var);
12723+ } else if (var->type->is_array()) {
12724+ /* It is possible to have a global array declared in multiple
12725+ * shaders without a size. The array is implicitly sized by the
12726+ * maximal access to it in *any* shader. Because of this, we
12727+ * need to track the maximal access to the array as linking pulls
12728+ * more functions in that access the array.
12729+ */
12730+ var->max_array_access =
12731+ MAX2(var->max_array_access, ir->var->max_array_access);
12732+
12733+ if (var->type->length == 0 && ir->var->type->length != 0)
12734+ var->type = ir->var->type;
12735 }
12736
12737 ir->var = var;
12738diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
12739index d8c42ac..e296507 100644
12740--- a/src/glsl/linker.cpp
12741+++ b/src/glsl/linker.cpp
12742@@ -68,10 +68,6 @@
12743 #include <cstdarg>
12744 #include <climits>
12745
12746-extern "C" {
12747-#include <talloc.h>
12748-}
12749-
12750 #include "main/core.h"
12751 #include "glsl_symbol_table.h"
12752 #include "ir.h"
12753@@ -176,9 +172,9 @@ linker_error_printf(gl_shader_program *prog, const char *fmt, ...)
12754 {
12755 va_list ap;
12756
12757- prog->InfoLog = talloc_strdup_append(prog->InfoLog, "error: ");
12758+ ralloc_strcat(&prog->InfoLog, "error: ");
12759 va_start(ap, fmt);
12760- prog->InfoLog = talloc_vasprintf_append(prog->InfoLog, fmt, ap);
12761+ ralloc_vasprintf_append(&prog->InfoLog, fmt, ap);
12762 va_end(ap);
12763 }
12764
12765@@ -360,11 +356,8 @@ cross_validate_globals(struct gl_shader_program *prog,
12766 && (var->type->fields.array == existing->type->fields.array)
12767 && ((var->type->length == 0)
12768 || (existing->type->length == 0))) {
12769- if (existing->type->length == 0) {
12770+ if (var->type->length != 0) {
12771 existing->type = var->type;
12772- existing->max_array_access =
12773- MAX2(existing->max_array_access,
12774- var->max_array_access);
12775 }
12776 } else {
12777 linker_error_printf(prog, "%s `%s' declared as type "
12778@@ -413,7 +406,7 @@ cross_validate_globals(struct gl_shader_program *prog,
12779 * FINISHME: will fail.
12780 */
12781 existing->constant_value =
12782- var->constant_value->clone(talloc_parent(existing), NULL);
12783+ var->constant_value->clone(ralloc_parent(existing), NULL);
12784 }
12785
12786 if (existing->invariant != var->invariant) {
12787@@ -422,6 +415,12 @@ cross_validate_globals(struct gl_shader_program *prog,
12788 mode_string(var), var->name);
12789 return false;
12790 }
12791+ if (existing->centroid != var->centroid) {
12792+ linker_error_printf(prog, "declarations for %s `%s' have "
12793+ "mismatching centroid qualifiers\n",
12794+ mode_string(var), var->name);
12795+ return false;
12796+ }
12797 } else
12798 variables.add_variable(var);
12799 }
12800@@ -888,30 +887,29 @@ link_intrastage_shaders(void *mem_ctx,
12801
12802 free(linking_shaders);
12803
12804- /* Make a pass over all global variables to ensure that arrays with
12805+ /* Make a pass over all variable declarations to ensure that arrays with
12806 * unspecified sizes have a size specified. The size is inferred from the
12807 * max_array_access field.
12808 */
12809 if (linked != NULL) {
12810- foreach_list(node, linked->ir) {
12811- ir_variable *const var = ((ir_instruction *) node)->as_variable();
12812-
12813- if (var == NULL)
12814- continue;
12815-
12816- if ((var->mode != ir_var_auto) && (var->mode != ir_var_temporary))
12817- continue;
12818-
12819- if (!var->type->is_array() || (var->type->length != 0))
12820- continue;
12821+ class array_sizing_visitor : public ir_hierarchical_visitor {
12822+ public:
12823+ virtual ir_visitor_status visit(ir_variable *var)
12824+ {
12825+ if (var->type->is_array() && (var->type->length == 0)) {
12826+ const glsl_type *type =
12827+ glsl_type::get_array_instance(var->type->fields.array,
12828+ var->max_array_access);
12829+
12830+ assert(type != NULL);
12831+ var->type = type;
12832+ }
12833
12834- const glsl_type *type =
12835- glsl_type::get_array_instance(var->type->fields.array,
12836- var->max_array_access);
12837+ return visit_continue;
12838+ }
12839+ } v;
12840
12841- assert(type != NULL);
12842- var->type = type;
12843- }
12844+ v.run(linked->ir);
12845 }
12846
12847 return linked;
12848@@ -991,7 +989,7 @@ add_uniform(void *mem_ctx, exec_list *uniforms, struct hash_table *ht,
12849 if (type->is_record()) {
12850 for (unsigned int i = 0; i < type->length; i++) {
12851 const glsl_type *field_type = type->fields.structure[i].type;
12852- char *field_name = talloc_asprintf(mem_ctx, "%s.%s", name,
12853+ char *field_name = ralloc_asprintf(mem_ctx, "%s.%s", name,
12854 type->fields.structure[i].name);
12855
12856 add_uniform(mem_ctx, uniforms, ht, field_name, field_type,
12857@@ -1007,7 +1005,7 @@ add_uniform(void *mem_ctx, exec_list *uniforms, struct hash_table *ht,
12858 /* Array of structures. */
12859 if (array_elem_type->is_record()) {
12860 for (unsigned int i = 0; i < type->length; i++) {
12861- char *elem_name = talloc_asprintf(mem_ctx, "%s[%d]", name, i);
12862+ char *elem_name = ralloc_asprintf(mem_ctx, "%s[%d]", name, i);
12863 add_uniform(mem_ctx, uniforms, ht, elem_name, array_elem_type,
12864 shader_type, next_shader_pos, total_uniforms);
12865 }
12866@@ -1069,7 +1067,7 @@ assign_uniform_locations(struct gl_shader_program *prog)
12867 unsigned total_uniforms = 0;
12868 hash_table *ht = hash_table_ctor(32, hash_table_string_hash,
12869 hash_table_string_compare);
12870- void *mem_ctx = talloc_new(NULL);
12871+ void *mem_ctx = ralloc_context(NULL);
12872
12873 for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
12874 if (prog->_LinkedShaders[i] == NULL)
12875@@ -1098,7 +1096,7 @@ assign_uniform_locations(struct gl_shader_program *prog)
12876 }
12877 }
12878
12879- talloc_free(mem_ctx);
12880+ ralloc_free(mem_ctx);
12881
12882 gl_uniform_list *ul = (gl_uniform_list *)
12883 calloc(1, sizeof(gl_uniform_list));
12884@@ -1466,16 +1464,16 @@ assign_varying_locations(struct gl_shader_program *prog,
12885 void
12886 link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
12887 {
12888- void *mem_ctx = talloc_init("temporary linker context");
12889+ void *mem_ctx = ralloc_context(NULL); // temporary linker context
12890
12891 prog->LinkStatus = false;
12892 prog->Validated = false;
12893 prog->_Used = false;
12894
12895 if (prog->InfoLog != NULL)
12896- talloc_free(prog->InfoLog);
12897+ ralloc_free(prog->InfoLog);
12898
12899- prog->InfoLog = talloc_strdup(NULL, "");
12900+ prog->InfoLog = ralloc_strdup(NULL, "");
12901
12902 /* Separate the shaders into groups based on their type.
12903 */
12904@@ -1670,5 +1668,5 @@ done:
12905 reparent_ir(prog->_LinkedShaders[i]->ir, prog->_LinkedShaders[i]->ir);
12906 }
12907
12908- talloc_free(mem_ctx);
12909+ ralloc_free(mem_ctx);
12910 }
12911diff --git a/src/glsl/list.h b/src/glsl/list.h
12912index 3197b03..1d46365 100644
12913--- a/src/glsl/list.h
12914+++ b/src/glsl/list.h
12915@@ -66,37 +66,33 @@
12916
12917 #ifndef __cplusplus
12918 #include <stddef.h>
12919-#include <talloc.h>
12920-#else
12921-extern "C" {
12922-#include <talloc.h>
12923-}
12924 #endif
12925-
12926 #include <assert.h>
12927
12928+#include "ralloc.h"
12929+
12930 struct exec_node {
12931 struct exec_node *next;
12932 struct exec_node *prev;
12933
12934 #ifdef __cplusplus
12935- /* Callers of this talloc-based new need not call delete. It's
12936- * easier to just talloc_free 'ctx' (or any of its ancestors). */
12937+ /* Callers of this ralloc-based new need not call delete. It's
12938+ * easier to just ralloc_free 'ctx' (or any of its ancestors). */
12939 static void* operator new(size_t size, void *ctx)
12940 {
12941 void *node;
12942
12943- node = talloc_size(ctx, size);
12944+ node = ralloc_size(ctx, size);
12945 assert(node != NULL);
12946
12947 return node;
12948 }
12949
12950 /* If the user *does* call delete, that's OK, we will just
12951- * talloc_free in that case. */
12952+ * ralloc_free in that case. */
12953 static void operator delete(void *node)
12954 {
12955- talloc_free(node);
12956+ ralloc_free(node);
12957 }
12958
12959 exec_node() : next(NULL), prev(NULL)
12960@@ -289,23 +285,23 @@ struct exec_list {
12961 struct exec_node *tail_pred;
12962
12963 #ifdef __cplusplus
12964- /* Callers of this talloc-based new need not call delete. It's
12965- * easier to just talloc_free 'ctx' (or any of its ancestors). */
12966+ /* Callers of this ralloc-based new need not call delete. It's
12967+ * easier to just ralloc_free 'ctx' (or any of its ancestors). */
12968 static void* operator new(size_t size, void *ctx)
12969 {
12970 void *node;
12971
12972- node = talloc_size(ctx, size);
12973+ node = ralloc_size(ctx, size);
12974 assert(node != NULL);
12975
12976 return node;
12977 }
12978
12979 /* If the user *does* call delete, that's OK, we will just
12980- * talloc_free in that case. */
12981+ * ralloc_free in that case. */
12982 static void operator delete(void *node)
12983 {
12984- talloc_free(node);
12985+ ralloc_free(node);
12986 }
12987
12988 exec_list()
12989diff --git a/src/glsl/loop_analysis.cpp b/src/glsl/loop_analysis.cpp
12990index ff7adf0..a15f6e1 100644
12991--- a/src/glsl/loop_analysis.cpp
12992+++ b/src/glsl/loop_analysis.cpp
12993@@ -37,14 +37,14 @@ loop_state::loop_state()
12994 {
12995 this->ht = hash_table_ctor(0, hash_table_pointer_hash,
12996 hash_table_pointer_compare);
12997- this->mem_ctx = talloc_init("loop state");
12998+ this->mem_ctx = ralloc_context(NULL);
12999 }
13000
13001
13002 loop_state::~loop_state()
13003 {
13004 hash_table_dtor(this->ht);
13005- talloc_free(this->mem_ctx);
13006+ ralloc_free(this->mem_ctx);
13007 }
13008
13009
13010@@ -75,8 +75,8 @@ loop_variable_state::get(const ir_variable *ir)
13011 loop_variable *
13012 loop_variable_state::insert(ir_variable *var)
13013 {
13014- void *mem_ctx = talloc_parent(this);
13015- loop_variable *lv = talloc_zero(mem_ctx, loop_variable);
13016+ void *mem_ctx = ralloc_parent(this);
13017+ loop_variable *lv = rzalloc(mem_ctx, loop_variable);
13018
13019 lv->var = var;
13020
13021@@ -90,8 +90,8 @@ loop_variable_state::insert(ir_variable *var)
13022 loop_terminator *
13023 loop_variable_state::insert(ir_if *if_stmt)
13024 {
13025- void *mem_ctx = talloc_parent(this);
13026- loop_terminator *t = talloc_zero(mem_ctx, loop_terminator);
13027+ void *mem_ctx = ralloc_parent(this);
13028+ loop_terminator *t = rzalloc(mem_ctx, loop_terminator);
13029
13030 t->ir = if_stmt;
13031 this->terminators.push_tail(t);
13032@@ -447,7 +447,7 @@ get_basic_induction_increment(ir_assignment *ir, hash_table *var_hash)
13033 }
13034
13035 if ((inc != NULL) && (rhs->operation == ir_binop_sub)) {
13036- void *mem_ctx = talloc_parent(ir);
13037+ void *mem_ctx = ralloc_parent(ir);
13038
13039 inc = new(mem_ctx) ir_expression(ir_unop_neg,
13040 inc->type,
13041diff --git a/src/glsl/loop_controls.cpp b/src/glsl/loop_controls.cpp
13042index b528810..9eaa50f 100644
13043--- a/src/glsl/loop_controls.cpp
13044+++ b/src/glsl/loop_controls.cpp
13045@@ -88,7 +88,7 @@ calculate_iterations(ir_rvalue *from, ir_rvalue *to, ir_rvalue *increment,
13046 if (from == NULL || to == NULL || increment == NULL)
13047 return -1;
13048
13049- void *mem_ctx = talloc_init("%s", __func__);
13050+ void *mem_ctx = ralloc_context(NULL);
13051
13052 ir_expression *const sub =
13053 new(mem_ctx) ir_expression(ir_binop_sub, from->type, to, from);
13054@@ -147,7 +147,7 @@ calculate_iterations(ir_rvalue *from, ir_rvalue *to, ir_rvalue *increment,
13055 }
13056 }
13057
13058- talloc_free(mem_ctx);
13059+ ralloc_free(mem_ctx);
13060 return (valid_loop) ? iter_value : -1;
13061 }
13062
13063diff --git a/src/glsl/loop_unroll.cpp b/src/glsl/loop_unroll.cpp
13064index 4600052..5b84e10 100644
13065--- a/src/glsl/loop_unroll.cpp
13066+++ b/src/glsl/loop_unroll.cpp
13067@@ -150,7 +150,7 @@ loop_unroll_visitor::visit_leave(ir_loop *ir)
13068 */
13069 break_ir->remove();
13070
13071- void *const mem_ctx = talloc_parent(ir);
13072+ void *const mem_ctx = ralloc_parent(ir);
13073 ir_instruction *ir_to_replace = ir;
13074
13075 for (int i = 0; i < iterations; i++) {
13076@@ -182,7 +182,7 @@ loop_unroll_visitor::visit_leave(ir_loop *ir)
13077 }
13078 }
13079
13080- void *const mem_ctx = talloc_parent(ir);
13081+ void *const mem_ctx = ralloc_parent(ir);
13082
13083 for (int i = 0; i < iterations; i++) {
13084 exec_list copy_list;
13085diff --git a/src/glsl/lower_discard.cpp b/src/glsl/lower_discard.cpp
13086index b95313d..cafd2dd 100644
13087--- a/src/glsl/lower_discard.cpp
13088+++ b/src/glsl/lower_discard.cpp
13089@@ -170,7 +170,7 @@ lower_discard_visitor::visit_leave(ir_if *ir)
13090 if (then_discard == NULL && else_discard == NULL)
13091 return visit_continue;
13092
13093- void *mem_ctx = talloc_parent(ir);
13094+ void *mem_ctx = ralloc_parent(ir);
13095
13096 ir_variable *temp = new(mem_ctx) ir_variable(glsl_type::bool_type,
13097 "discard_cond_temp",
13098diff --git a/src/glsl/lower_if_to_cond_assign.cpp b/src/glsl/lower_if_to_cond_assign.cpp
13099index 40ffc45..e3a1065 100644
13100--- a/src/glsl/lower_if_to_cond_assign.cpp
13101+++ b/src/glsl/lower_if_to_cond_assign.cpp
13102@@ -171,7 +171,7 @@ ir_if_to_cond_assign_visitor::visit_leave(ir_if *ir)
13103 if (found_control_flow)
13104 return visit_continue;
13105
13106- void *mem_ctx = talloc_parent(ir);
13107+ void *mem_ctx = ralloc_parent(ir);
13108
13109 /* Store the condition to a variable so the assignment conditions are
13110 * simpler.
13111diff --git a/src/glsl/lower_mat_op_to_vec.cpp b/src/glsl/lower_mat_op_to_vec.cpp
13112index 7065fde..8cbbfa7 100644
13113--- a/src/glsl/lower_mat_op_to_vec.cpp
13114+++ b/src/glsl/lower_mat_op_to_vec.cpp
13115@@ -368,7 +368,7 @@ ir_mat_op_to_vec_visitor::visit_leave(ir_assignment *orig_assign)
13116
13117 assert(orig_expr->get_num_operands() <= 2);
13118
13119- mem_ctx = talloc_parent(orig_assign);
13120+ mem_ctx = ralloc_parent(orig_assign);
13121
13122 ir_dereference_variable *lhs_deref =
13123 orig_assign->lhs->as_dereference_variable();
13124diff --git a/src/glsl/lower_noise.cpp b/src/glsl/lower_noise.cpp
13125index cb32d28..85f59b6 100644
13126--- a/src/glsl/lower_noise.cpp
13127+++ b/src/glsl/lower_noise.cpp
13128@@ -51,7 +51,7 @@ public:
13129 * that implements noise. No hardware has a noise instruction.
13130 */
13131 if (expr->operation == ir_unop_noise) {
13132- *rvalue = ir_constant::zero(talloc_parent(expr), expr->type);
13133+ *rvalue = ir_constant::zero(ralloc_parent(expr), expr->type);
13134 this->progress = true;
13135 }
13136 }
13137diff --git a/src/glsl/lower_texture_projection.cpp b/src/glsl/lower_texture_projection.cpp
13138index 1fd26a7..6e3aaec 100644
13139--- a/src/glsl/lower_texture_projection.cpp
13140+++ b/src/glsl/lower_texture_projection.cpp
13141@@ -55,7 +55,7 @@ lower_texture_projection_visitor::visit_leave(ir_texture *ir)
13142 if (!ir->projector)
13143 return visit_continue;
13144
13145- void *mem_ctx = talloc_parent(ir);
13146+ void *mem_ctx = ralloc_parent(ir);
13147
13148 ir_variable *var = new(mem_ctx) ir_variable(ir->projector->type,
13149 "projector", ir_var_auto);
13150diff --git a/src/glsl/lower_variable_index_to_cond_assign.cpp b/src/glsl/lower_variable_index_to_cond_assign.cpp
13151index 5f0dd73..147a6ae 100644
13152--- a/src/glsl/lower_variable_index_to_cond_assign.cpp
13153+++ b/src/glsl/lower_variable_index_to_cond_assign.cpp
13154@@ -42,6 +42,7 @@ struct assignment_generator
13155 ir_instruction* base_ir;
13156 ir_rvalue* array;
13157 bool is_write;
13158+ unsigned int write_mask;
13159 ir_variable* var;
13160
13161 assignment_generator()
13162@@ -53,15 +54,19 @@ struct assignment_generator
13163 /* Just clone the rest of the deref chain when trying to get at the
13164 * underlying variable.
13165 */
13166- void *mem_ctx = talloc_parent(base_ir);
13167- ir_rvalue *element =
13168+ void *mem_ctx = ralloc_parent(base_ir);
13169+ ir_dereference *element =
13170 new(mem_ctx) ir_dereference_array(this->array->clone(mem_ctx, NULL),
13171 new(mem_ctx) ir_constant(i));
13172 ir_rvalue *variable = new(mem_ctx) ir_dereference_variable(this->var);
13173
13174- ir_assignment *assignment = (is_write)
13175- ? new(mem_ctx) ir_assignment(element, variable, condition)
13176- : new(mem_ctx) ir_assignment(variable, element, condition);
13177+ ir_assignment *assignment;
13178+ if (is_write) {
13179+ assignment = new(mem_ctx) ir_assignment(element, variable, condition,
13180+ write_mask);
13181+ } else {
13182+ assignment = new(mem_ctx) ir_assignment(variable, element, condition);
13183+ }
13184
13185 list->push_tail(assignment);
13186 }
13187@@ -86,7 +91,7 @@ struct switch_generator
13188 linear_sequence_max_length(linear_sequence_max_length),
13189 condition_components(condition_components)
13190 {
13191- this->mem_ctx = talloc_parent(index);
13192+ this->mem_ctx = ralloc_parent(index);
13193 }
13194
13195 void linear_sequence(unsigned begin, unsigned end, exec_list *list)
13196@@ -262,7 +267,7 @@ public:
13197 }
13198
13199 ir_variable *convert_dereference_array(ir_dereference_array *orig_deref,
13200- ir_rvalue* value)
13201+ ir_assignment* orig_assign)
13202 {
13203 assert(is_array_or_matrix(orig_deref->array));
13204
13205@@ -270,17 +275,31 @@ public:
13206 ? orig_deref->array->type->length
13207 : orig_deref->array->type->matrix_columns;
13208
13209- void *const mem_ctx = talloc_parent(base_ir);
13210- ir_variable *var =
13211- new(mem_ctx) ir_variable(orig_deref->type, "dereference_array_value",
13212- ir_var_temporary);
13213- base_ir->insert_before(var);
13214+ void *const mem_ctx = ralloc_parent(base_ir);
13215+
13216+ /* Temporary storage for either the result of the dereference of
13217+ * the array, or the RHS that's being assigned into the
13218+ * dereference of the array.
13219+ */
13220+ ir_variable *var;
13221+
13222+ if (orig_assign) {
13223+ var = new(mem_ctx) ir_variable(orig_assign->rhs->type,
13224+ "dereference_array_value",
13225+ ir_var_temporary);
13226+ base_ir->insert_before(var);
13227
13228- if (value) {
13229 ir_dereference *lhs = new(mem_ctx) ir_dereference_variable(var);
13230- ir_assignment *assign = new(mem_ctx) ir_assignment(lhs, value, NULL);
13231+ ir_assignment *assign = new(mem_ctx) ir_assignment(lhs,
13232+ orig_assign->rhs,
13233+ NULL);
13234
13235 base_ir->insert_before(assign);
13236+ } else {
13237+ var = new(mem_ctx) ir_variable(orig_deref->type,
13238+ "dereference_array_value",
13239+ ir_var_temporary);
13240+ base_ir->insert_before(var);
13241 }
13242
13243 /* Store the index to a temporary to avoid reusing its tree. */
13244@@ -298,7 +317,12 @@ public:
13245 ag.array = orig_deref->array;
13246 ag.base_ir = base_ir;
13247 ag.var = var;
13248- ag.is_write = !!value;
13249+ if (orig_assign) {
13250+ ag.is_write = true;
13251+ ag.write_mask = orig_assign->write_mask;
13252+ } else {
13253+ ag.is_write = false;
13254+ }
13255
13256 switch_generator sg(ag, index, 4, 4);
13257
13258@@ -318,7 +342,7 @@ public:
13259 if (needs_lowering(orig_deref)) {
13260 ir_variable* var = convert_dereference_array(orig_deref, 0);
13261 assert(var);
13262- *pir = new(talloc_parent(base_ir)) ir_dereference_variable(var);
13263+ *pir = new(ralloc_parent(base_ir)) ir_dereference_variable(var);
13264 this->progress = true;
13265 }
13266 }
13267@@ -331,7 +355,7 @@ public:
13268 ir_dereference_array *orig_deref = ir->lhs->as_dereference_array();
13269
13270 if (needs_lowering(orig_deref)) {
13271- convert_dereference_array(orig_deref, ir->rhs);
13272+ convert_dereference_array(orig_deref, ir);
13273 ir->remove();
13274 this->progress = true;
13275 }
13276diff --git a/src/glsl/lower_vec_index_to_cond_assign.cpp b/src/glsl/lower_vec_index_to_cond_assign.cpp
13277index f8011a1..3c4d932 100644
13278--- a/src/glsl/lower_vec_index_to_cond_assign.cpp
13279+++ b/src/glsl/lower_vec_index_to_cond_assign.cpp
13280@@ -82,7 +82,7 @@ ir_vec_index_to_cond_assign_visitor::convert_vec_index_to_cond_assign(ir_rvalue
13281 orig_deref->array->type->is_array())
13282 return ir;
13283
13284- void *mem_ctx = talloc_parent(ir);
13285+ void *mem_ctx = ralloc_parent(ir);
13286
13287 assert(orig_deref->array_index->type->base_type == GLSL_TYPE_INT);
13288
13289@@ -167,7 +167,7 @@ ir_vec_index_to_cond_assign_visitor::visit_leave(ir_assignment *ir)
13290 orig_deref->array->type->is_array())
13291 return visit_continue;
13292
13293- void *mem_ctx = talloc_parent(ir);
13294+ void *mem_ctx = ralloc_parent(ir);
13295
13296 assert(orig_deref->array_index->type->base_type == GLSL_TYPE_INT);
13297
13298diff --git a/src/glsl/lower_vec_index_to_swizzle.cpp b/src/glsl/lower_vec_index_to_swizzle.cpp
13299index 9ae43c0..c7630c2 100644
13300--- a/src/glsl/lower_vec_index_to_swizzle.cpp
13301+++ b/src/glsl/lower_vec_index_to_swizzle.cpp
13302@@ -74,7 +74,7 @@ ir_vec_index_to_swizzle_visitor::convert_vec_index_to_swizzle(ir_rvalue *ir)
13303 if (!ir_constant)
13304 return ir;
13305
13306- void *ctx = talloc_parent(ir);
13307+ void *ctx = ralloc_parent(ir);
13308 this->progress = true;
13309 return new(ctx) ir_swizzle(deref->array,
13310 ir_constant->value.i[0], 0, 0, 0, 1);
13311diff --git a/src/glsl/lower_vector.cpp b/src/glsl/lower_vector.cpp
13312index 93c3763..57963a1 100644
13313--- a/src/glsl/lower_vector.cpp
13314+++ b/src/glsl/lower_vector.cpp
13315@@ -125,7 +125,7 @@ lower_vector_visitor::handle_rvalue(ir_rvalue **rvalue)
13316 if (this->dont_lower_swz && is_extended_swizzle(expr))
13317 return;
13318
13319- /* FINISHME: Is this the right thing to use for the talloc context?
13320+ /* FINISHME: Is this the right thing to use for the ralloc context?
13321 */
13322 void *const mem_ctx = expr;
13323
13324diff --git a/src/glsl/main.cpp b/src/glsl/main.cpp
13325index c8fc267..efb49f0 100644
13326--- a/src/glsl/main.cpp
13327+++ b/src/glsl/main.cpp
13328@@ -61,7 +61,7 @@ _mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type)
13329 (void) ctx;
13330
13331 assert(type == GL_FRAGMENT_SHADER || type == GL_VERTEX_SHADER);
13332- shader = talloc_zero(NULL, struct gl_shader);
13333+ shader = rzalloc(NULL, struct gl_shader);
13334 if (shader) {
13335 shader->Type = type;
13336 shader->Name = name;
13337@@ -105,7 +105,7 @@ initialize_context(struct gl_context *ctx, gl_api api)
13338 ctx->Driver.NewShader = _mesa_new_shader;
13339 }
13340
13341-/* Returned string will have 'ctx' as its talloc owner. */
13342+/* Returned string will have 'ctx' as its ralloc owner. */
13343 static char *
13344 load_text_file(void *ctx, const char *file_name)
13345 {
13346@@ -119,7 +119,7 @@ load_text_file(void *ctx, const char *file_name)
13347 }
13348
13349 if (fstat(fd, & st) == 0) {
13350- text = (char *) talloc_size(ctx, st.st_size + 1);
13351+ text = (char *) ralloc_size(ctx, st.st_size + 1);
13352 if (text != NULL) {
13353 do {
13354 ssize_t bytes = read(fd, text + total_read,
13355@@ -238,14 +238,14 @@ compile_shader(struct gl_context *ctx, struct gl_shader *shader)
13356 shader->num_builtins_to_link = state->num_builtins_to_link;
13357
13358 if (shader->InfoLog)
13359- talloc_free(shader->InfoLog);
13360+ ralloc_free(shader->InfoLog);
13361
13362 shader->InfoLog = state->info_log;
13363
13364 /* Retain any live IR, but trash the rest. */
13365 reparent_ir(shader->ir, shader);
13366
13367- talloc_free(state);
13368+ ralloc_free(state);
13369
13370 return;
13371 }
13372@@ -270,16 +270,16 @@ main(int argc, char **argv)
13373
13374 struct gl_shader_program *whole_program;
13375
13376- whole_program = talloc_zero (NULL, struct gl_shader_program);
13377+ whole_program = rzalloc (NULL, struct gl_shader_program);
13378 assert(whole_program != NULL);
13379
13380 for (/* empty */; argc > optind; optind++) {
13381- whole_program->Shaders = (struct gl_shader **)
13382- talloc_realloc(whole_program, whole_program->Shaders,
13383- struct gl_shader *, whole_program->NumShaders + 1);
13384+ whole_program->Shaders =
13385+ reralloc(whole_program, whole_program->Shaders,
13386+ struct gl_shader *, whole_program->NumShaders + 1);
13387 assert(whole_program->Shaders != NULL);
13388
13389- struct gl_shader *shader = talloc_zero(whole_program, gl_shader);
13390+ struct gl_shader *shader = rzalloc(whole_program, gl_shader);
13391
13392 whole_program->Shaders[whole_program->NumShaders] = shader;
13393 whole_program->NumShaders++;
13394@@ -322,9 +322,9 @@ main(int argc, char **argv)
13395 }
13396
13397 for (unsigned i = 0; i < MESA_SHADER_TYPES; i++)
13398- talloc_free(whole_program->_LinkedShaders[i]);
13399+ ralloc_free(whole_program->_LinkedShaders[i]);
13400
13401- talloc_free(whole_program);
13402+ ralloc_free(whole_program);
13403 _mesa_glsl_release_types();
13404 _mesa_glsl_release_functions();
13405
13406diff --git a/src/glsl/opt_algebraic.cpp b/src/glsl/opt_algebraic.cpp
13407index 20f6159..cade961 100644
13408--- a/src/glsl/opt_algebraic.cpp
13409+++ b/src/glsl/opt_algebraic.cpp
13410@@ -191,7 +191,7 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
13411 }
13412
13413 if (this->mem_ctx == NULL)
13414- this->mem_ctx = talloc_parent(ir);
13415+ this->mem_ctx = ralloc_parent(ir);
13416
13417 switch (ir->operation) {
13418 case ir_unop_logic_not: {
13419diff --git a/src/glsl/opt_constant_propagation.cpp b/src/glsl/opt_constant_propagation.cpp
13420index 6719fc8..e1f6889 100644
13421--- a/src/glsl/opt_constant_propagation.cpp
13422+++ b/src/glsl/opt_constant_propagation.cpp
13423@@ -78,13 +78,13 @@ public:
13424 ir_constant_propagation_visitor()
13425 {
13426 progress = false;
13427- mem_ctx = talloc_new(0);
13428+ mem_ctx = ralloc_context(0);
13429 this->acp = new(mem_ctx) exec_list;
13430 this->kills = new(mem_ctx) exec_list;
13431 }
13432 ~ir_constant_propagation_visitor()
13433 {
13434- talloc_free(mem_ctx);
13435+ ralloc_free(mem_ctx);
13436 }
13437
13438 virtual ir_visitor_status visit_enter(class ir_loop *);
13439@@ -195,7 +195,7 @@ ir_constant_propagation_visitor::handle_rvalue(ir_rvalue **rvalue)
13440 }
13441 }
13442
13443- *rvalue = new(talloc_parent(deref)) ir_constant(type, &data);
13444+ *rvalue = new(ralloc_parent(deref)) ir_constant(type, &data);
13445 this->progress = true;
13446 }
13447
13448diff --git a/src/glsl/opt_copy_propagation.cpp b/src/glsl/opt_copy_propagation.cpp
13449index 8d07fef..4ab23bf 100644
13450--- a/src/glsl/opt_copy_propagation.cpp
13451+++ b/src/glsl/opt_copy_propagation.cpp
13452@@ -71,13 +71,13 @@ public:
13453 ir_copy_propagation_visitor()
13454 {
13455 progress = false;
13456- mem_ctx = talloc_new(0);
13457+ mem_ctx = ralloc_context(0);
13458 this->acp = new(mem_ctx) exec_list;
13459 this->kills = new(mem_ctx) exec_list;
13460 }
13461 ~ir_copy_propagation_visitor()
13462 {
13463- talloc_free(mem_ctx);
13464+ ralloc_free(mem_ctx);
13465 }
13466
13467 virtual ir_visitor_status visit(class ir_dereference_variable *);
13468@@ -325,7 +325,7 @@ ir_copy_propagation_visitor::add_copy(ir_assignment *ir)
13469 * calling us. Just flag it to not execute, and someone else
13470 * will clean up the mess.
13471 */
13472- ir->condition = new(talloc_parent(ir)) ir_constant(false);
13473+ ir->condition = new(ralloc_parent(ir)) ir_constant(false);
13474 this->progress = true;
13475 } else {
13476 entry = new(this->mem_ctx) acp_entry(lhs_var, rhs_var);
13477diff --git a/src/glsl/opt_dead_code_local.cpp b/src/glsl/opt_dead_code_local.cpp
13478index 5689e7d..2610b69 100644
13479--- a/src/glsl/opt_dead_code_local.cpp
13480+++ b/src/glsl/opt_dead_code_local.cpp
13481@@ -190,7 +190,7 @@ dead_code_local_basic_block(ir_instruction *first,
13482 bool *out_progress = (bool *)data;
13483 bool progress = false;
13484
13485- void *ctx = talloc_new(NULL);
13486+ void *ctx = ralloc_context(NULL);
13487 /* Safe looping, since process_assignment */
13488 for (ir = first, ir_next = (ir_instruction *)first->next;;
13489 ir = ir_next, ir_next = (ir_instruction *)ir->next) {
13490@@ -212,7 +212,7 @@ dead_code_local_basic_block(ir_instruction *first,
13491 break;
13492 }
13493 *out_progress = progress;
13494- talloc_free(ctx);
13495+ ralloc_free(ctx);
13496 }
13497
13498 /**
13499diff --git a/src/glsl/opt_dead_functions.cpp b/src/glsl/opt_dead_functions.cpp
13500index cf91cb6..ceb7908 100644
13501--- a/src/glsl/opt_dead_functions.cpp
13502+++ b/src/glsl/opt_dead_functions.cpp
13503@@ -49,12 +49,12 @@
13504 public:
13505 ir_dead_functions_visitor()
13506 {
13507- this->mem_ctx = talloc_new(NULL);
13508+ this->mem_ctx = ralloc_context(NULL);
13509 }
13510
13511 ~ir_dead_functions_visitor()
13512 {
13513- talloc_free(this->mem_ctx);
13514+ ralloc_free(this->mem_ctx);
13515 }
13516
13517 virtual ir_visitor_status visit_enter(ir_function_signature *);
13518diff --git a/src/glsl/opt_function_inlining.cpp b/src/glsl/opt_function_inlining.cpp
13519index 169fd82..a0449a7 100644
13520--- a/src/glsl/opt_function_inlining.cpp
13521+++ b/src/glsl/opt_function_inlining.cpp
13522@@ -89,7 +89,7 @@ do_function_inlining(exec_list *instructions)
13523 static void
13524 replace_return_with_assignment(ir_instruction *ir, void *data)
13525 {
13526- void *ctx = talloc_parent(ir);
13527+ void *ctx = ralloc_parent(ir);
13528 ir_variable *retval = (ir_variable *)data;
13529 ir_return *ret = ir->as_return();
13530
13531@@ -110,7 +110,7 @@ replace_return_with_assignment(ir_instruction *ir, void *data)
13532 ir_rvalue *
13533 ir_call::generate_inline(ir_instruction *next_ir)
13534 {
13535- void *ctx = talloc_parent(this);
13536+ void *ctx = ralloc_parent(this);
13537 ir_variable **parameters;
13538 int num_parameters;
13539 int i;
13540@@ -357,7 +357,7 @@ ir_sampler_replacement_visitor::replace_deref(ir_dereference **deref)
13541 {
13542 ir_dereference_variable *deref_var = (*deref)->as_dereference_variable();
13543 if (deref_var && deref_var->var == this->sampler) {
13544- *deref = this->deref->clone(talloc_parent(*deref), NULL);
13545+ *deref = this->deref->clone(ralloc_parent(*deref), NULL);
13546 }
13547 }
13548
13549diff --git a/src/glsl/opt_structure_splitting.cpp b/src/glsl/opt_structure_splitting.cpp
13550index d619100..014407c 100644
13551--- a/src/glsl/opt_structure_splitting.cpp
13552+++ b/src/glsl/opt_structure_splitting.cpp
13553@@ -65,7 +65,7 @@ public:
13554
13555 ir_variable **components;
13556
13557- /** talloc_parent(this->var) -- the shader's talloc context. */
13558+ /** ralloc_parent(this->var) -- the shader's ralloc context. */
13559 void *mem_ctx;
13560 };
13561
13562@@ -74,13 +74,13 @@ class ir_structure_reference_visitor : public ir_hierarchical_visitor {
13563 public:
13564 ir_structure_reference_visitor(void)
13565 {
13566- this->mem_ctx = talloc_new(NULL);
13567+ this->mem_ctx = ralloc_context(NULL);
13568 this->variable_list.make_empty();
13569 }
13570
13571 ~ir_structure_reference_visitor(void)
13572 {
13573- talloc_free(mem_ctx);
13574+ ralloc_free(mem_ctx);
13575 }
13576
13577 virtual ir_visitor_status visit(ir_variable *);
13578@@ -322,7 +322,7 @@ do_structure_splitting(exec_list *instructions)
13579 if (refs.variable_list.is_empty())
13580 return false;
13581
13582- void *mem_ctx = talloc_new(NULL);
13583+ void *mem_ctx = ralloc_context(NULL);
13584
13585 /* Replace the decls of the structures to be split with their split
13586 * components.
13587@@ -331,14 +331,14 @@ do_structure_splitting(exec_list *instructions)
13588 variable_entry2 *entry = (variable_entry2 *)iter.get();
13589 const struct glsl_type *type = entry->var->type;
13590
13591- entry->mem_ctx = talloc_parent(entry->var);
13592+ entry->mem_ctx = ralloc_parent(entry->var);
13593
13594- entry->components = talloc_array(mem_ctx,
13595+ entry->components = ralloc_array(mem_ctx,
13596 ir_variable *,
13597 type->length);
13598
13599 for (unsigned int i = 0; i < entry->var->type->length; i++) {
13600- const char *name = talloc_asprintf(mem_ctx, "%s_%s",
13601+ const char *name = ralloc_asprintf(mem_ctx, "%s_%s",
13602 entry->var->name,
13603 type->fields.structure[i].name);
13604
13605@@ -355,7 +355,7 @@ do_structure_splitting(exec_list *instructions)
13606 ir_structure_splitting_visitor split(&refs.variable_list);
13607 visit_list_elements(&split, instructions);
13608
13609- talloc_free(mem_ctx);
13610+ ralloc_free(mem_ctx);
13611
13612 return true;
13613 }
13614diff --git a/src/glsl/ralloc.c b/src/glsl/ralloc.c
13615new file mode 100644
13616index 0000000..f7edff6
13617--- /dev/null
13618+++ b/src/glsl/ralloc.c
13619@@ -0,0 +1,442 @@
13620+/*
13621+ * Copyright © 2010 Intel Corporation
13622+ *
13623+ * Permission is hereby granted, free of charge, to any person obtaining a
13624+ * copy of this software and associated documentation files (the "Software"),
13625+ * to deal in the Software without restriction, including without limitation
13626+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13627+ * and/or sell copies of the Software, and to permit persons to whom the
13628+ * Software is furnished to do so, subject to the following conditions:
13629+ *
13630+ * The above copyright notice and this permission notice (including the next
13631+ * paragraph) shall be included in all copies or substantial portions of the
13632+ * Software.
13633+ *
13634+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13635+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13636+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
13637+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
13638+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
13639+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
13640+ * DEALINGS IN THE SOFTWARE.
13641+ */
13642+
13643+#include <assert.h>
13644+#include <stdlib.h>
13645+#include <stdarg.h>
13646+#include <stdio.h>
13647+#include <string.h>
13648+#include <stdint.h>
13649+
13650+#include "ralloc.h"
13651+
13652+#ifdef __GNUC__
13653+#define likely(x) __builtin_expect(!!(x),1)
13654+#define unlikely(x) __builtin_expect(!!(x),0)
13655+#else
13656+#define likely(x) !!(x)
13657+#define unlikely(x) !!(x)
13658+#endif
13659+
13660+#define CANARY 0x5A1106
13661+
13662+struct ralloc_header
13663+{
13664+ /* A canary value used to determine whether a pointer is ralloc'd. */
13665+ unsigned canary;
13666+
13667+ struct ralloc_header *parent;
13668+
13669+ /* The first child (head of a linked list) */
13670+ struct ralloc_header *child;
13671+
13672+ /* Linked list of siblings */
13673+ struct ralloc_header *prev;
13674+ struct ralloc_header *next;
13675+
13676+ void (*destructor)(void *);
13677+};
13678+
13679+typedef struct ralloc_header ralloc_header;
13680+
13681+static void unlink_block(ralloc_header *info);
13682+static void unsafe_free(ralloc_header *info);
13683+
13684+static ralloc_header *
13685+get_header(const void *ptr)
13686+{
13687+ ralloc_header *info = (ralloc_header *) (((char *) ptr) -
13688+ sizeof(ralloc_header));
13689+ assert(info->canary == CANARY);
13690+ return info;
13691+}
13692+
13693+#define PTR_FROM_HEADER(info) (((char *) info) + sizeof(ralloc_header))
13694+
13695+static void
13696+add_child(ralloc_header *parent, ralloc_header *info)
13697+{
13698+ if (parent != NULL) {
13699+ info->parent = parent;
13700+ info->next = parent->child;
13701+ parent->child = info;
13702+
13703+ if (info->next != NULL)
13704+ info->next->prev = info;
13705+ }
13706+}
13707+
13708+void *
13709+ralloc_context(const void *ctx)
13710+{
13711+ return ralloc_size(ctx, 0);
13712+}
13713+
13714+void *
13715+ralloc_size(const void *ctx, size_t size)
13716+{
13717+ void *block = calloc(1, size + sizeof(ralloc_header));
13718+
13719+ ralloc_header *info = (ralloc_header *) block;
13720+ ralloc_header *parent = ctx != NULL ? get_header(ctx) : NULL;
13721+
13722+ add_child(parent, info);
13723+
13724+ info->canary = CANARY;
13725+
13726+ return PTR_FROM_HEADER(info);
13727+}
13728+
13729+void *
13730+rzalloc_size(const void *ctx, size_t size)
13731+{
13732+ void *ptr = ralloc_size(ctx, size);
13733+ if (likely(ptr != NULL))
13734+ memset(ptr, 0, size);
13735+ return ptr;
13736+}
13737+
13738+/* helper function - assumes ptr != NULL */
13739+static void *
13740+resize(void *ptr, size_t size)
13741+{
13742+ ralloc_header *child, *old, *info;
13743+
13744+ old = get_header(ptr);
13745+ info = realloc(old, size + sizeof(ralloc_header));
13746+
13747+ if (info == NULL)
13748+ return NULL;
13749+
13750+ /* Update parent and sibling's links to the reallocated node. */
13751+ if (info != old && info->parent != NULL) {
13752+ if (info->parent->child == old)
13753+ info->parent->child = info;
13754+
13755+ if (info->prev != NULL)
13756+ info->prev->next = info;
13757+
13758+ if (info->next != NULL)
13759+ info->next->prev = info;
13760+ }
13761+
13762+ /* Update child->parent links for all children */
13763+ for (child = info->child; child != NULL; child = child->next)
13764+ child->parent = info;
13765+
13766+ return PTR_FROM_HEADER(info);
13767+}
13768+
13769+void *
13770+reralloc_size(const void *ctx, void *ptr, size_t size)
13771+{
13772+ if (unlikely(ptr == NULL))
13773+ return ralloc_size(ctx, size);
13774+
13775+ assert(ralloc_parent(ptr) == ctx);
13776+ return resize(ptr, size);
13777+}
13778+
13779+void *
13780+ralloc_array_size(const void *ctx, size_t size, unsigned count)
13781+{
13782+ if (count > SIZE_MAX/size)
13783+ return NULL;
13784+
13785+ return ralloc_size(ctx, size * count);
13786+}
13787+
13788+void *
13789+rzalloc_array_size(const void *ctx, size_t size, unsigned count)
13790+{
13791+ if (count > SIZE_MAX/size)
13792+ return NULL;
13793+
13794+ return rzalloc_size(ctx, size * count);
13795+}
13796+
13797+void *
13798+reralloc_array_size(const void *ctx, void *ptr, size_t size, unsigned count)
13799+{
13800+ if (count > SIZE_MAX/size)
13801+ return NULL;
13802+
13803+ return reralloc_size(ctx, ptr, size * count);
13804+}
13805+
13806+void
13807+ralloc_free(void *ptr)
13808+{
13809+ ralloc_header *info;
13810+
13811+ if (ptr == NULL)
13812+ return;
13813+
13814+ info = get_header(ptr);
13815+ unlink_block(info);
13816+ unsafe_free(info);
13817+}
13818+
13819+static void
13820+unlink_block(ralloc_header *info)
13821+{
13822+ /* Unlink from parent & siblings */
13823+ if (info->parent != NULL) {
13824+ if (info->parent->child == info)
13825+ info->parent->child = info->next;
13826+
13827+ if (info->prev != NULL)
13828+ info->prev->next = info->next;
13829+
13830+ if (info->next != NULL)
13831+ info->next->prev = info->prev;
13832+ }
13833+ info->parent = NULL;
13834+ info->prev = NULL;
13835+ info->next = NULL;
13836+}
13837+
13838+static void
13839+unsafe_free(ralloc_header *info)
13840+{
13841+ /* Recursively free any children...don't waste time unlinking them. */
13842+ ralloc_header *temp;
13843+ while (info->child != NULL) {
13844+ temp = info->child;
13845+ info->child = temp->next;
13846+ unsafe_free(temp);
13847+ }
13848+
13849+ /* Free the block itself. Call the destructor first, if any. */
13850+ if (info->destructor != NULL)
13851+ info->destructor(PTR_FROM_HEADER(info));
13852+
13853+ free(info);
13854+}
13855+
13856+void
13857+ralloc_steal(const void *new_ctx, void *ptr)
13858+{
13859+ ralloc_header *info, *parent;
13860+
13861+ if (unlikely(ptr == NULL))
13862+ return;
13863+
13864+ info = get_header(ptr);
13865+ parent = get_header(new_ctx);
13866+
13867+ unlink_block(info);
13868+
13869+ add_child(parent, info);
13870+}
13871+
13872+void *
13873+ralloc_parent(const void *ptr)
13874+{
13875+ ralloc_header *info;
13876+
13877+ if (unlikely(ptr == NULL))
13878+ return NULL;
13879+
13880+ info = get_header(ptr);
13881+ return PTR_FROM_HEADER(info->parent);
13882+}
13883+
13884+static void *autofree_context = NULL;
13885+
13886+static void
13887+autofree(void)
13888+{
13889+ ralloc_free(autofree_context);
13890+}
13891+
13892+void *
13893+ralloc_autofree_context(void)
13894+{
13895+ if (unlikely(autofree_context == NULL)) {
13896+ autofree_context = ralloc_context(NULL);
13897+ atexit(autofree);
13898+ }
13899+ return autofree_context;
13900+}
13901+
13902+void
13903+ralloc_set_destructor(const void *ptr, void(*destructor)(void *))
13904+{
13905+ ralloc_header *info = get_header(ptr);
13906+ info->destructor = destructor;
13907+}
13908+
13909+char *
13910+ralloc_strdup(const void *ctx, const char *str)
13911+{
13912+ size_t n;
13913+ char *ptr;
13914+
13915+ if (unlikely(str == NULL))
13916+ return NULL;
13917+
13918+ n = strlen(str);
13919+ ptr = ralloc_array(ctx, char, n + 1);
13920+ memcpy(ptr, str, n);
13921+ ptr[n] = '\0';
13922+ return ptr;
13923+}
13924+
13925+char *
13926+ralloc_strndup(const void *ctx, const char *str, size_t max)
13927+{
13928+ size_t n;
13929+ char *ptr;
13930+
13931+ if (unlikely(str == NULL))
13932+ return NULL;
13933+
13934+ n = strlen(str);
13935+ if (n > max)
13936+ n = max;
13937+
13938+ ptr = ralloc_array(ctx, char, n + 1);
13939+ memcpy(ptr, str, n);
13940+ ptr[n] = '\0';
13941+ return ptr;
13942+}
13943+
13944+/* helper routine for strcat/strncat - n is the exact amount to copy */
13945+static bool
13946+cat(char **dest, const char *str, size_t n)
13947+{
13948+ char *both;
13949+ size_t existing_length;
13950+ assert(dest != NULL && *dest != NULL);
13951+
13952+ existing_length = strlen(*dest);
13953+ both = resize(*dest, existing_length + n + 1);
13954+ if (unlikely(both == NULL))
13955+ return false;
13956+
13957+ memcpy(both + existing_length, str, n);
13958+ both[existing_length + n] = '\0';
13959+
13960+ *dest = both;
13961+ return true;
13962+}
13963+
13964+
13965+bool
13966+ralloc_strcat(char **dest, const char *str)
13967+{
13968+ return cat(dest, str, strlen(str));
13969+}
13970+
13971+bool
13972+ralloc_strncat(char **dest, const char *str, size_t n)
13973+{
13974+ /* Clamp n to the string length */
13975+ size_t str_length = strlen(str);
13976+ if (str_length < n)
13977+ n = str_length;
13978+
13979+ return cat(dest, str, n);
13980+}
13981+
13982+char *
13983+ralloc_asprintf(const void *ctx, const char *fmt, ...)
13984+{
13985+ char *ptr;
13986+ va_list args;
13987+ va_start(args, fmt);
13988+ ptr = ralloc_vasprintf(ctx, fmt, args);
13989+ va_end(args);
13990+ return ptr;
13991+}
13992+
13993+/* Return the length of the string that would be generated by a printf-style
13994+ * format and argument list, not including the \0 byte.
13995+ */
13996+static size_t
13997+printf_length(const char *fmt, va_list untouched_args)
13998+{
13999+ int size;
14000+ char junk;
14001+
14002+ /* Make a copy of the va_list so the original caller can still use it */
14003+ va_list args;
14004+ va_copy(args, untouched_args);
14005+
14006+ size = vsnprintf(&junk, 1, fmt, args);
14007+ assert(size >= 0);
14008+
14009+ va_end(args);
14010+
14011+ return size;
14012+}
14013+
14014+char *
14015+ralloc_vasprintf(const void *ctx, const char *fmt, va_list args)
14016+{
14017+ size_t size = printf_length(fmt, args) + 1;
14018+
14019+ char *ptr = ralloc_size(ctx, size);
14020+ if (ptr != NULL)
14021+ vsnprintf(ptr, size, fmt, args);
14022+
14023+ return ptr;
14024+}
14025+
14026+bool
14027+ralloc_asprintf_append(char **str, const char *fmt, ...)
14028+{
14029+ bool success;
14030+ va_list args;
14031+ va_start(args, fmt);
14032+ success = ralloc_vasprintf_append(str, fmt, args);
14033+ va_end(args);
14034+ return success;
14035+}
14036+
14037+bool
14038+ralloc_vasprintf_append(char **str, const char *fmt, va_list args)
14039+{
14040+ size_t existing_length, new_length;
14041+ char *ptr;
14042+
14043+ assert(str != NULL);
14044+
14045+ if (unlikely(*str == NULL)) {
14046+ // Assuming a NULL context is probably bad, but it's expected behavior.
14047+ *str = ralloc_vasprintf(NULL, fmt, args);
14048+ return true;
14049+ }
14050+
14051+ existing_length = strlen(*str);
14052+ new_length = printf_length(fmt, args);
14053+
14054+ ptr = resize(*str, existing_length + new_length + 1);
14055+ if (unlikely(ptr == NULL))
14056+ return false;
14057+
14058+ vsnprintf(ptr + existing_length, new_length + 1, fmt, args);
14059+ *str = ptr;
14060+ return true;
14061+}
14062diff --git a/src/glsl/ralloc.h b/src/glsl/ralloc.h
14063new file mode 100644
14064index 0000000..d533815
14065--- /dev/null
14066+++ b/src/glsl/ralloc.h
14067@@ -0,0 +1,345 @@
14068+/*
14069+ * Copyright © 2010 Intel Corporation
14070+ *
14071+ * Permission is hereby granted, free of charge, to any person obtaining a
14072+ * copy of this software and associated documentation files (the "Software"),
14073+ * to deal in the Software without restriction, including without limitation
14074+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
14075+ * and/or sell copies of the Software, and to permit persons to whom the
14076+ * Software is furnished to do so, subject to the following conditions:
14077+ *
14078+ * The above copyright notice and this permission notice (including the next
14079+ * paragraph) shall be included in all copies or substantial portions of the
14080+ * Software.
14081+ *
14082+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14083+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14084+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
14085+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14086+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
14087+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
14088+ * DEALINGS IN THE SOFTWARE.
14089+ */
14090+
14091+/**
14092+ * \file ralloc.h
14093+ *
14094+ * ralloc: a recursive memory allocator
14095+ *
14096+ * The ralloc memory allocator creates a hierarchy of allocated
14097+ * objects. Every allocation is in reference to some parent, and
14098+ * every allocated object can in turn be used as the parent of a
14099+ * subsequent allocation. This allows for extremely convenient
14100+ * discarding of an entire tree/sub-tree of allocations by calling
14101+ * ralloc_free on any particular object to free it and all of its
14102+ * children.
14103+ *
14104+ * The conceptual working of ralloc was directly inspired by Andrew
14105+ * Tridgell's talloc, but ralloc is an independent implementation
14106+ * released under the MIT license and tuned for Mesa.
14107+ *
14108+ * The talloc implementation is available under the GNU Lesser
14109+ * General Public License (GNU LGPL), version 3 or later. It is
14110+ * more sophisticated than ralloc in that it includes reference
14111+ * counting and debugging features. See: http://talloc.samba.org/
14112+ */
14113+
14114+#ifndef RALLOC_H
14115+#define RALLOC_H
14116+
14117+#ifdef __cplusplus
14118+extern "C" {
14119+#endif
14120+
14121+#include <stddef.h>
14122+#include <stdarg.h>
14123+#include <stdbool.h>
14124+
14125+/**
14126+ * \def ralloc(ctx, type)
14127+ * Allocate a new object chained off of the given context.
14128+ *
14129+ * This is equivalent to:
14130+ * \code
14131+ * ((type *) ralloc_size(ctx, sizeof(type))
14132+ * \endcode
14133+ */
14134+#define ralloc(ctx, type) ((type *) ralloc_size(ctx, sizeof(type)))
14135+
14136+/**
14137+ * \def rzalloc(ctx, type)
14138+ * Allocate a new object out of the given context and initialize it to zero.
14139+ *
14140+ * This is equivalent to:
14141+ * \code
14142+ * ((type *) rzalloc_size(ctx, sizeof(type))
14143+ * \endcode
14144+ */
14145+#define rzalloc(ctx, type) ((type *) rzalloc_size(ctx, sizeof(type)))
14146+
14147+/**
14148+ * Allocate a new ralloc context.
14149+ *
14150+ * While any ralloc'd pointer can be used as a context, sometimes it is useful
14151+ * to simply allocate a context with no associated memory.
14152+ *
14153+ * It is equivalent to:
14154+ * \code
14155+ * ((type *) ralloc_size(ctx, 0)
14156+ * \endcode
14157+ */
14158+void *ralloc_context(const void *ctx);
14159+
14160+/**
14161+ * Allocate memory chained off of the given context.
14162+ *
14163+ * This is the core allocation routine which is used by all others. It
14164+ * simply allocates storage for \p size bytes and returns the pointer,
14165+ * similar to \c malloc.
14166+ */
14167+void *ralloc_size(const void *ctx, size_t size);
14168+
14169+/**
14170+ * Allocate zero-initialized memory chained off of the given context.
14171+ *
14172+ * This is similar to \c calloc with a size of 1.
14173+ */
14174+void *rzalloc_size(const void *ctx, size_t size);
14175+
14176+/**
14177+ * Resize a piece of ralloc-managed memory, preserving data.
14178+ *
14179+ * Similar to \c realloc. Unlike C89, passing 0 for \p size does not free the
14180+ * memory. Instead, it resizes it to a 0-byte ralloc context, just like
14181+ * calling ralloc_size(ctx, 0). This is different from talloc.
14182+ *
14183+ * \param ctx The context to use for new allocation. If \p ptr != NULL,
14184+ * it must be the same as ralloc_parent(\p ptr).
14185+ * \param ptr Pointer to the memory to be resized. May be NULL.
14186+ * \param size The amount of memory to allocate, in bytes.
14187+ */
14188+void *reralloc_size(const void *ctx, void *ptr, size_t size);
14189+
14190+/// \defgroup array Array Allocators @{
14191+
14192+/**
14193+ * \def ralloc_array(ctx, type, count)
14194+ * Allocate an array of objects chained off the given context.
14195+ *
14196+ * Similar to \c calloc, but does not initialize the memory to zero.
14197+ *
14198+ * More than a convenience function, this also checks for integer overflow when
14199+ * multiplying \c sizeof(type) and \p count. This is necessary for security.
14200+ *
14201+ * This is equivalent to:
14202+ * \code
14203+ * ((type *) ralloc_array_size(ctx, sizeof(type), count)
14204+ * \endcode
14205+ */
14206+#define ralloc_array(ctx, type, count) \
14207+ ((type *) ralloc_array_size(ctx, sizeof(type), count))
14208+
14209+/**
14210+ * \def rzalloc_array(ctx, type, count)
14211+ * Allocate a zero-initialized array chained off the given context.
14212+ *
14213+ * Similar to \c calloc.
14214+ *
14215+ * More than a convenience function, this also checks for integer overflow when
14216+ * multiplying \c sizeof(type) and \p count. This is necessary for security.
14217+ *
14218+ * This is equivalent to:
14219+ * \code
14220+ * ((type *) rzalloc_array_size(ctx, sizeof(type), count)
14221+ * \endcode
14222+ */
14223+#define rzalloc_array(ctx, type, count) \
14224+ ((type *) rzalloc_array_size(ctx, sizeof(type), count))
14225+
14226+/**
14227+ * \def reralloc(ctx, ptr, type, count)
14228+ * Resize a ralloc-managed array, preserving data.
14229+ *
14230+ * Similar to \c realloc. Unlike C89, passing 0 for \p size does not free the
14231+ * memory. Instead, it resizes it to a 0-byte ralloc context, just like
14232+ * calling ralloc_size(ctx, 0). This is different from talloc.
14233+ *
14234+ * More than a convenience function, this also checks for integer overflow when
14235+ * multiplying \c sizeof(type) and \p count. This is necessary for security.
14236+ *
14237+ * \param ctx The context to use for new allocation. If \p ptr != NULL,
14238+ * it must be the same as ralloc_parent(\p ptr).
14239+ * \param ptr Pointer to the array to be resized. May be NULL.
14240+ * \param type The element type.
14241+ * \param count The number of elements to allocate.
14242+ */
14243+#define reralloc(ctx, ptr, type, count) \
14244+ ((type *) reralloc_array_size(ctx, ptr, sizeof(type), count))
14245+
14246+/**
14247+ * Allocate memory for an array chained off the given context.
14248+ *
14249+ * Similar to \c calloc, but does not initialize the memory to zero.
14250+ *
14251+ * More than a convenience function, this also checks for integer overflow when
14252+ * multiplying \p size and \p count. This is necessary for security.
14253+ */
14254+void *ralloc_array_size(const void *ctx, size_t size, unsigned count);
14255+
14256+/**
14257+ * Allocate a zero-initialized array chained off the given context.
14258+ *
14259+ * Similar to \c calloc.
14260+ *
14261+ * More than a convenience function, this also checks for integer overflow when
14262+ * multiplying \p size and \p count. This is necessary for security.
14263+ */
14264+void *rzalloc_array_size(const void *ctx, size_t size, unsigned count);
14265+
14266+/**
14267+ * Resize a ralloc-managed array, preserving data.
14268+ *
14269+ * Similar to \c realloc. Unlike C89, passing 0 for \p size does not free the
14270+ * memory. Instead, it resizes it to a 0-byte ralloc context, just like
14271+ * calling ralloc_size(ctx, 0). This is different from talloc.
14272+ *
14273+ * More than a convenience function, this also checks for integer overflow when
14274+ * multiplying \c sizeof(type) and \p count. This is necessary for security.
14275+ *
14276+ * \param ctx The context to use for new allocation. If \p ptr != NULL,
14277+ * it must be the same as ralloc_parent(\p ptr).
14278+ * \param ptr Pointer to the array to be resized. May be NULL.
14279+ * \param size The size of an individual element.
14280+ * \param count The number of elements to allocate.
14281+ *
14282+ * \return True unless allocation failed.
14283+ */
14284+void *reralloc_array_size(const void *ctx, void *ptr, size_t size,
14285+ unsigned count);
14286+/// @}
14287+
14288+/**
14289+ * Free a piece of ralloc-managed memory.
14290+ *
14291+ * This will also free the memory of any children allocated this context.
14292+ */
14293+void ralloc_free(void *ptr);
14294+
14295+/**
14296+ * "Steal" memory from one context, changing it to another.
14297+ *
14298+ * This changes \p ptr's context to \p new_ctx. This is quite useful if
14299+ * memory is allocated out of a temporary context.
14300+ */
14301+void ralloc_steal(const void *new_ctx, void *ptr);
14302+
14303+/**
14304+ * Return the given pointer's ralloc context.
14305+ */
14306+void *ralloc_parent(const void *ptr);
14307+
14308+/**
14309+ * Return a context whose memory will be automatically freed at program exit.
14310+ *
14311+ * The first call to this function creates a context and registers a handler
14312+ * to free it using \c atexit. This may cause trouble if used in a library
14313+ * loaded with \c dlopen.
14314+ */
14315+void *ralloc_autofree_context(void);
14316+
14317+/**
14318+ * Set a callback to occur just before an object is freed.
14319+ */
14320+void ralloc_set_destructor(const void *ptr, void(*destructor)(void *));
14321+
14322+/// \defgroup array String Functions @{
14323+/**
14324+ * Duplicate a string, allocating the memory from the given context.
14325+ */
14326+char *ralloc_strdup(const void *ctx, const char *str);
14327+
14328+/**
14329+ * Duplicate a string, allocating the memory from the given context.
14330+ *
14331+ * Like \c strndup, at most \p n characters are copied. If \p str is longer
14332+ * than \p n characters, \p n are copied, and a termining \c '\0' byte is added.
14333+ */
14334+char *ralloc_strndup(const void *ctx, const char *str, size_t n);
14335+
14336+/**
14337+ * Concatenate two strings, allocating the necessary space.
14338+ *
14339+ * This appends \p str to \p *dest, similar to \c strcat, using ralloc_resize
14340+ * to expand \p *dest to the appropriate size. \p dest will be updated to the
14341+ * new pointer unless allocation fails.
14342+ *
14343+ * The result will always be null-terminated.
14344+ *
14345+ * \return True unless allocation failed.
14346+ */
14347+bool ralloc_strcat(char **dest, const char *str);
14348+
14349+/**
14350+ * Concatenate two strings, allocating the necessary space.
14351+ *
14352+ * This appends at most \p n bytes of \p str to \p *dest, using ralloc_resize
14353+ * to expand \p *dest to the appropriate size. \p dest will be updated to the
14354+ * new pointer unless allocation fails.
14355+ *
14356+ * The result will always be null-terminated; \p str does not need to be null
14357+ * terminated if it is longer than \p n.
14358+ *
14359+ * \return True unless allocation failed.
14360+ */
14361+bool ralloc_strncat(char **dest, const char *str, size_t n);
14362+
14363+/**
14364+ * Print to a string.
14365+ *
14366+ * This is analogous to \c sprintf, but allocates enough space (using \p ctx
14367+ * as the context) for the resulting string.
14368+ *
14369+ * \return The newly allocated string.
14370+ */
14371+char *ralloc_asprintf (const void *ctx, const char *fmt, ...);
14372+
14373+/**
14374+ * Print to a string, given a va_list.
14375+ *
14376+ * This is analogous to \c vsprintf, but allocates enough space (using \p ctx
14377+ * as the context) for the resulting string.
14378+ *
14379+ * \return The newly allocated string.
14380+ */
14381+char *ralloc_vasprintf(const void *ctx, const char *fmt, va_list args);
14382+
14383+/**
14384+ * Append formatted text to the supplied string.
14385+ *
14386+ * \sa ralloc_asprintf
14387+ * \sa ralloc_strcat
14388+ *
14389+ * \p str will be updated to the new pointer unless allocation fails.
14390+ *
14391+ * \return True unless allocation failed.
14392+ */
14393+bool ralloc_asprintf_append (char **str, const char *fmt, ...);
14394+
14395+/**
14396+ * Append formatted text to the supplied string, given a va_list.
14397+ *
14398+ * \sa ralloc_vasprintf
14399+ * \sa ralloc_strcat
14400+ *
14401+ * \p str will be updated to the new pointer unless allocation fails.
14402+ *
14403+ * \return True unless allocation failed.
14404+ */
14405+bool ralloc_vasprintf_append(char **str, const char *fmt, va_list args);
14406+/// @}
14407+
14408+#ifdef __cplusplus
14409+} /* end of extern "C" */
14410+#endif
14411+
14412+#endif
14413diff --git a/src/glsl/s_expression.cpp b/src/glsl/s_expression.cpp
14414index e420cd6..7c45fb8 100644
14415--- a/src/glsl/s_expression.cpp
14416+++ b/src/glsl/s_expression.cpp
14417@@ -30,7 +30,7 @@
14418
14419 s_symbol::s_symbol(const char *tmp, size_t n)
14420 {
14421- this->str = talloc_strndup (this, tmp, n);
14422+ this->str = ralloc_strndup (this, tmp, n);
14423 assert(this->str != NULL);
14424 }
14425
14426diff --git a/src/glsl/s_expression.h b/src/glsl/s_expression.h
14427index 29d800e..37f1d04 100644
14428--- a/src/glsl/s_expression.h
14429+++ b/src/glsl/s_expression.h
14430@@ -51,7 +51,7 @@ public:
14431 * Read an S-Expression from the given string.
14432 * Advances the supplied pointer to just after the expression read.
14433 *
14434- * Any allocation will be performed with 'ctx' as the talloc owner.
14435+ * Any allocation will be performed with 'ctx' as the ralloc owner.
14436 */
14437 static s_expression *read_expression(void *ctx, const char *&src);
14438
14439diff --git a/src/mesa/Makefile b/src/mesa/Makefile
14440index 8b0756b..c41c38c 100644
14441--- a/src/mesa/Makefile
14442+++ b/src/mesa/Makefile
14443@@ -34,9 +34,9 @@ ES1_CPPFLAGS := -DFEATURE_ES1=1 $(DEFINES)
14444 ES2_CPPFLAGS := -DFEATURE_ES2=1 $(DEFINES)
14445
14446 # append include dirs
14447-MESA_CPPFLAGS += $(INCLUDE_DIRS) $(TALLOC_CFLAGS)
14448-ES1_CPPFLAGS += -I$(TOP)/src/mapi/es1api $(INCLUDE_DIRS) $(TALLOC_CFLAGS)
14449-ES2_CPPFLAGS += -I$(TOP)/src/mapi/es2api $(INCLUDE_DIRS) $(TALLOC_CFLAGS)
14450+MESA_CPPFLAGS += $(INCLUDE_DIRS)
14451+ES1_CPPFLAGS += -I$(TOP)/src/mapi/es1api $(INCLUDE_DIRS)
14452+ES2_CPPFLAGS += -I$(TOP)/src/mapi/es2api $(INCLUDE_DIRS)
14453
14454 # tidy compiler flags
14455 CFLAGS := $(filter-out $(DEFINES), $(CFLAGS))
14456diff --git a/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp b/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp
14457index 35bea68..8574169 100644
14458--- a/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp
14459+++ b/src/mesa/drivers/dri/i965/brw_cubemap_normalize.cpp
14460@@ -51,7 +51,7 @@ brw_cubemap_normalize_visitor::visit_leave(ir_texture *ir)
14461 if (ir->sampler->type->sampler_dimensionality != GLSL_SAMPLER_DIM_CUBE)
14462 return visit_continue;
14463
14464- void *mem_ctx = talloc_parent(ir);
14465+ void *mem_ctx = ralloc_parent(ir);
14466
14467 ir_variable *var = new(mem_ctx) ir_variable(ir->coordinate->type,
14468 "coordinate", ir_var_auto);
14469diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
14470index 22e6e2e..f74fe03 100644
14471--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
14472+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
14473@@ -41,7 +41,6 @@ extern "C" {
14474 #include "brw_context.h"
14475 #include "brw_eu.h"
14476 #include "brw_wm.h"
14477-#include "talloc.h"
14478 }
14479 #include "brw_fs.h"
14480 #include "../glsl/glsl_types.h"
14481@@ -55,7 +54,7 @@ brw_new_shader(struct gl_context *ctx, GLuint name, GLuint type)
14482 {
14483 struct brw_shader *shader;
14484
14485- shader = talloc_zero(NULL, struct brw_shader);
14486+ shader = rzalloc(NULL, struct brw_shader);
14487 if (shader) {
14488 shader->base.Type = type;
14489 shader->base.Name = name;
14490@@ -69,7 +68,7 @@ struct gl_shader_program *
14491 brw_new_shader_program(struct gl_context *ctx, GLuint name)
14492 {
14493 struct brw_shader_program *prog;
14494- prog = talloc_zero(NULL, struct brw_shader_program);
14495+ prog = rzalloc(NULL, struct brw_shader_program);
14496 if (prog) {
14497 prog->base.Name = name;
14498 _mesa_init_shader_program(ctx, &prog->base);
14499@@ -95,11 +94,11 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
14500 struct brw_shader *shader =
14501 (struct brw_shader *)prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
14502 if (shader != NULL) {
14503- void *mem_ctx = talloc_new(NULL);
14504+ void *mem_ctx = ralloc_context(NULL);
14505 bool progress;
14506
14507 if (shader->ir)
14508- talloc_free(shader->ir);
14509+ ralloc_free(shader->ir);
14510 shader->ir = new(shader) exec_list;
14511 clone_ir_list(mem_ctx, shader->ir, shader->base.ir);
14512
14513@@ -149,7 +148,7 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
14514 validate_ir_tree(shader->ir);
14515
14516 reparent_ir(shader->ir, shader->ir);
14517- talloc_free(mem_ctx);
14518+ ralloc_free(mem_ctx);
14519 }
14520
14521 if (!_mesa_ir_link_shader(ctx, prog))
14522@@ -236,8 +235,8 @@ fs_visitor::virtual_grf_alloc(int size)
14523 virtual_grf_array_size = 16;
14524 else
14525 virtual_grf_array_size *= 2;
14526- virtual_grf_sizes = talloc_realloc(mem_ctx, virtual_grf_sizes,
14527- int, virtual_grf_array_size);
14528+ virtual_grf_sizes = reralloc(mem_ctx, virtual_grf_sizes, int,
14529+ virtual_grf_array_size);
14530
14531 /* This slot is always unused. */
14532 virtual_grf_sizes[0] = 0;
14533@@ -315,7 +314,6 @@ int
14534 fs_visitor::setup_uniform_values(int loc, const glsl_type *type)
14535 {
14536 unsigned int offset = 0;
14537- float *vec_values;
14538
14539 if (type->is_matrix()) {
14540 const glsl_type *column = glsl_type::get_instance(GLSL_TYPE_FLOAT,
14541@@ -334,7 +332,6 @@ fs_visitor::setup_uniform_values(int loc, const glsl_type *type)
14542 case GLSL_TYPE_UINT:
14543 case GLSL_TYPE_INT:
14544 case GLSL_TYPE_BOOL:
14545- vec_values = fp->Base.Parameters->ParameterValues[loc];
14546 for (unsigned int i = 0; i < type->vector_elements; i++) {
14547 unsigned int param = c->prog_data.nr_params++;
14548
14549@@ -358,8 +355,8 @@ fs_visitor::setup_uniform_values(int loc, const glsl_type *type)
14550 c->prog_data.param_convert[param] = PARAM_NO_CONVERT;
14551 break;
14552 }
14553-
14554- c->prog_data.param[param] = &vec_values[i];
14555+ this->param_index[param] = loc;
14556+ this->param_offset[param] = i;
14557 }
14558 return 1;
14559
14560@@ -430,7 +427,6 @@ fs_visitor::setup_builtin_uniform_values(ir_variable *ir)
14561 */
14562 int index = _mesa_add_state_reference(this->fp->Base.Parameters,
14563 (gl_state_index *)tokens);
14564- float *vec_values = this->fp->Base.Parameters->ParameterValues[index];
14565
14566 /* Add each of the unique swizzles of the element as a
14567 * parameter. This'll end up matching the expected layout of
14568@@ -445,7 +441,9 @@ fs_visitor::setup_builtin_uniform_values(ir_variable *ir)
14569
14570 c->prog_data.param_convert[c->prog_data.nr_params] =
14571 PARAM_NO_CONVERT;
14572- c->prog_data.param[c->prog_data.nr_params++] = &vec_values[swiz];
14573+ this->param_index[c->prog_data.nr_params] = index;
14574+ this->param_offset[c->prog_data.nr_params] = swiz;
14575+ c->prog_data.nr_params++;
14576 }
14577 }
14578 }
14579@@ -534,25 +532,40 @@ fs_visitor::emit_general_interpolation(ir_variable *ir)
14580 continue;
14581 }
14582
14583- for (unsigned int c = 0; c < type->vector_elements; c++) {
14584- struct brw_reg interp = interp_reg(location, c);
14585- emit(fs_inst(FS_OPCODE_LINTERP,
14586- attr,
14587- this->delta_x,
14588- this->delta_y,
14589- fs_reg(interp)));
14590- attr.reg_offset++;
14591- }
14592-
14593- if (intel->gen < 6) {
14594- attr.reg_offset -= type->vector_elements;
14595+ if (c->key.flat_shade && (location == FRAG_ATTRIB_COL0 ||
14596+ location == FRAG_ATTRIB_COL1)) {
14597+ /* Constant interpolation (flat shading) case. The SF has
14598+ * handed us defined values in only the constant offset
14599+ * field of the setup reg.
14600+ */
14601 for (unsigned int c = 0; c < type->vector_elements; c++) {
14602- emit(fs_inst(BRW_OPCODE_MUL,
14603- attr,
14604+ struct brw_reg interp = interp_reg(location, c);
14605+ interp = suboffset(interp, 3);
14606+ emit(fs_inst(FS_OPCODE_CINTERP, attr, fs_reg(interp)));
14607+ attr.reg_offset++;
14608+ }
14609+ } else {
14610+ /* Perspective interpolation case. */
14611+ for (unsigned int c = 0; c < type->vector_elements; c++) {
14612+ struct brw_reg interp = interp_reg(location, c);
14613+ emit(fs_inst(FS_OPCODE_LINTERP,
14614 attr,
14615- this->pixel_w));
14616+ this->delta_x,
14617+ this->delta_y,
14618+ fs_reg(interp)));
14619 attr.reg_offset++;
14620 }
14621+
14622+ if (intel->gen < 6) {
14623+ attr.reg_offset -= type->vector_elements;
14624+ for (unsigned int c = 0; c < type->vector_elements; c++) {
14625+ emit(fs_inst(BRW_OPCODE_MUL,
14626+ attr,
14627+ attr,
14628+ this->pixel_w));
14629+ attr.reg_offset++;
14630+ }
14631+ }
14632 }
14633 location++;
14634 }
14635@@ -859,6 +872,7 @@ fs_visitor::visit(ir_expression *ir)
14636 break;
14637 case ir_unop_abs:
14638 op[0].abs = true;
14639+ op[0].negate = false;
14640 this->result = op[0];
14641 break;
14642 case ir_unop_sign:
14643@@ -1353,10 +1367,13 @@ fs_visitor::visit(ir_texture *ir)
14644 fs_reg scale_y = fs_reg(UNIFORM, c->prog_data.nr_params + 1);
14645 GLuint index = _mesa_add_state_reference(params,
14646 (gl_state_index *)tokens);
14647- float *vec_values = this->fp->Base.Parameters->ParameterValues[index];
14648
14649- c->prog_data.param[c->prog_data.nr_params++] = &vec_values[0];
14650- c->prog_data.param[c->prog_data.nr_params++] = &vec_values[1];
14651+ this->param_index[c->prog_data.nr_params] = index;
14652+ this->param_offset[c->prog_data.nr_params] = 0;
14653+ c->prog_data.nr_params++;
14654+ this->param_index[c->prog_data.nr_params] = index;
14655+ this->param_offset[c->prog_data.nr_params] = 1;
14656+ c->prog_data.nr_params++;
14657
14658 fs_reg dst = fs_reg(this, ir->coordinate->type);
14659 fs_reg src = coordinate;
14660@@ -2047,7 +2064,7 @@ fs_visitor::emit_fb_writes()
14661 }
14662
14663 for (int target = 0; target < c->key.nr_color_regions; target++) {
14664- this->current_annotation = talloc_asprintf(this->mem_ctx,
14665+ this->current_annotation = ralloc_asprintf(this->mem_ctx,
14666 "FB write target %d",
14667 target);
14668 if (this->frag_color || this->frag_data) {
14669@@ -2483,6 +2500,22 @@ fs_visitor::generate_pull_constant_load(fs_inst *inst, struct brw_reg dst)
14670 }
14671 }
14672
14673+/**
14674+ * To be called after the last _mesa_add_state_reference() call, to
14675+ * set up prog_data.param[] for assign_curb_setup() and
14676+ * setup_pull_constants().
14677+ */
14678+void
14679+fs_visitor::setup_paramvalues_refs()
14680+{
14681+ /* Set up the pointers to ParamValues now that that array is finalized. */
14682+ for (unsigned int i = 0; i < c->prog_data.nr_params; i++) {
14683+ c->prog_data.param[i] =
14684+ fp->Base.Parameters->ParameterValues[this->param_index[i]] +
14685+ this->param_offset[i];
14686+ }
14687+}
14688+
14689 void
14690 fs_visitor::assign_curb_setup()
14691 {
14692@@ -2556,12 +2589,15 @@ fs_visitor::assign_urb_setup()
14693 foreach_iter(exec_list_iterator, iter, this->instructions) {
14694 fs_inst *inst = (fs_inst *)iter.get();
14695
14696- if (inst->opcode != FS_OPCODE_LINTERP)
14697- continue;
14698-
14699- assert(inst->src[2].file == FIXED_HW_REG);
14700+ if (inst->opcode == FS_OPCODE_LINTERP) {
14701+ assert(inst->src[2].file == FIXED_HW_REG);
14702+ inst->src[2].fixed_hw_reg.nr += urb_start;
14703+ }
14704
14705- inst->src[2].fixed_hw_reg.nr += urb_start;
14706+ if (inst->opcode == FS_OPCODE_CINTERP) {
14707+ assert(inst->src[0].file == FIXED_HW_REG);
14708+ inst->src[0].fixed_hw_reg.nr += urb_start;
14709+ }
14710 }
14711
14712 this->first_non_payload_grf = urb_start + c->prog_data.urb_read_length;
14713@@ -2720,8 +2756,8 @@ void
14714 fs_visitor::calculate_live_intervals()
14715 {
14716 int num_vars = this->virtual_grf_next;
14717- int *def = talloc_array(mem_ctx, int, num_vars);
14718- int *use = talloc_array(mem_ctx, int, num_vars);
14719+ int *def = ralloc_array(mem_ctx, int, num_vars);
14720+ int *use = ralloc_array(mem_ctx, int, num_vars);
14721 int loop_depth = 0;
14722 int loop_start = 0;
14723 int bb_header_ip = 0;
14724@@ -2801,8 +2837,8 @@ fs_visitor::calculate_live_intervals()
14725 }
14726 }
14727
14728- talloc_free(this->virtual_grf_def);
14729- talloc_free(this->virtual_grf_use);
14730+ ralloc_free(this->virtual_grf_def);
14731+ ralloc_free(this->virtual_grf_use);
14732 this->virtual_grf_def = def;
14733 this->virtual_grf_use = use;
14734 }
14735@@ -3466,6 +3502,9 @@ fs_visitor::generate_code()
14736 case FS_OPCODE_COS:
14737 generate_math(inst, dst, src);
14738 break;
14739+ case FS_OPCODE_CINTERP:
14740+ brw_MOV(p, dst, src[0]);
14741+ break;
14742 case FS_OPCODE_LINTERP:
14743 generate_linterp(inst, dst, src);
14744 break;
14745@@ -3603,8 +3642,9 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c)
14746 v.emit_fb_writes();
14747
14748 v.split_virtual_grfs();
14749- v.setup_pull_constants();
14750
14751+ v.setup_paramvalues_refs();
14752+ v.setup_pull_constants();
14753 v.assign_curb_setup();
14754 v.assign_urb_setup();
14755
14756diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
14757index 00a0008..c4d4308 100644
14758--- a/src/mesa/drivers/dri/i965/brw_fs.h
14759+++ b/src/mesa/drivers/dri/i965/brw_fs.h
14760@@ -41,7 +41,6 @@ extern "C" {
14761 #include "brw_context.h"
14762 #include "brw_eu.h"
14763 #include "brw_wm.h"
14764-#include "talloc.h"
14765 }
14766 #include "../glsl/glsl_types.h"
14767 #include "../glsl/ir.h"
14768@@ -68,6 +67,7 @@ enum fs_opcodes {
14769 FS_OPCODE_COS,
14770 FS_OPCODE_DDX,
14771 FS_OPCODE_DDY,
14772+ FS_OPCODE_CINTERP,
14773 FS_OPCODE_LINTERP,
14774 FS_OPCODE_TEX,
14775 FS_OPCODE_TXB,
14776@@ -82,13 +82,13 @@ enum fs_opcodes {
14777
14778 class fs_reg {
14779 public:
14780- /* Callers of this talloc-based new need not call delete. It's
14781- * easier to just talloc_free 'ctx' (or any of its ancestors). */
14782+ /* Callers of this ralloc-based new need not call delete. It's
14783+ * easier to just ralloc_free 'ctx' (or any of its ancestors). */
14784 static void* operator new(size_t size, void *ctx)
14785 {
14786 void *node;
14787
14788- node = talloc_size(ctx, size);
14789+ node = ralloc_size(ctx, size);
14790 assert(node != NULL);
14791
14792 return node;
14793@@ -192,13 +192,13 @@ static const fs_reg reg_null_d(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_D);
14794
14795 class fs_inst : public exec_node {
14796 public:
14797- /* Callers of this talloc-based new need not call delete. It's
14798- * easier to just talloc_free 'ctx' (or any of its ancestors). */
14799+ /* Callers of this ralloc-based new need not call delete. It's
14800+ * easier to just ralloc_free 'ctx' (or any of its ancestors). */
14801 static void* operator new(size_t size, void *ctx)
14802 {
14803 void *node;
14804
14805- node = talloc_zero_size(ctx, size);
14806+ node = rzalloc_size(ctx, size);
14807 assert(node != NULL);
14808
14809 return node;
14810@@ -341,7 +341,7 @@ public:
14811 this->fp = brw->fragment_program;
14812 this->intel = &brw->intel;
14813 this->ctx = &intel->ctx;
14814- this->mem_ctx = talloc_new(NULL);
14815+ this->mem_ctx = ralloc_context(NULL);
14816 this->shader = shader;
14817 this->fail = false;
14818 this->variable_ht = hash_table_ctor(0,
14819@@ -384,7 +384,7 @@ public:
14820
14821 ~fs_visitor()
14822 {
14823- talloc_free(this->mem_ctx);
14824+ ralloc_free(this->mem_ctx);
14825 hash_table_dtor(this->variable_ht);
14826 }
14827
14828@@ -410,6 +410,7 @@ public:
14829 void visit(ir_function_signature *ir);
14830
14831 fs_inst *emit(fs_inst inst);
14832+ void setup_paramvalues_refs();
14833 void assign_curb_setup();
14834 void calculate_urb_setup();
14835 void assign_urb_setup();
14836@@ -474,6 +475,12 @@ public:
14837 void *mem_ctx;
14838 exec_list instructions;
14839
14840+ /* Delayed setup of c->prog_data.params[] due to realloc of
14841+ * ParamValues[] during compile.
14842+ */
14843+ int param_index[MAX_UNIFORMS * 4];
14844+ int param_offset[MAX_UNIFORMS * 4];
14845+
14846 int *virtual_grf_sizes;
14847 int virtual_grf_next;
14848 int virtual_grf_array_size;
14849diff --git a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
14850index 20bfa4c..7f3f528 100644
14851--- a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
14852+++ b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
14853@@ -141,7 +141,7 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
14854 return visit_continue;
14855
14856 if (!this->mem_ctx)
14857- this->mem_ctx = talloc_parent(ir);
14858+ this->mem_ctx = ralloc_parent(ir);
14859
14860 for (i = 0; i < expr->get_num_operands(); i++) {
14861 if (expr->operands[i]->type->is_vector()) {
14862diff --git a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
14863index bbb210c..37e9c89 100644
14864--- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
14865+++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
14866@@ -41,7 +41,6 @@ extern "C" {
14867 #include "brw_context.h"
14868 #include "brw_eu.h"
14869 #include "brw_wm.h"
14870-#include "talloc.h"
14871 }
14872 #include "brw_fs.h"
14873 #include "../glsl/glsl_types.h"
14874@@ -232,8 +231,8 @@ fs_visitor::assign_regs()
14875 }
14876
14877
14878- talloc_free(g);
14879- talloc_free(regs);
14880+ ralloc_free(g);
14881+ ralloc_free(regs);
14882
14883 return false;
14884 }
14885@@ -271,8 +270,8 @@ fs_visitor::assign_regs()
14886
14887 this->grf_used = last_grf + 1;
14888
14889- talloc_free(g);
14890- talloc_free(regs);
14891+ ralloc_free(g);
14892+ ralloc_free(regs);
14893
14894 return true;
14895 }
14896diff --git a/src/mesa/drivers/dri/i965/brw_fs_vector_splitting.cpp b/src/mesa/drivers/dri/i965/brw_fs_vector_splitting.cpp
14897index 2be6b08..530ffa2 100644
14898--- a/src/mesa/drivers/dri/i965/brw_fs_vector_splitting.cpp
14899+++ b/src/mesa/drivers/dri/i965/brw_fs_vector_splitting.cpp
14900@@ -69,7 +69,7 @@ public:
14901
14902 ir_variable *components[4];
14903
14904- /** talloc_parent(this->var) -- the shader's talloc context. */
14905+ /** ralloc_parent(this->var) -- the shader's ralloc context. */
14906 void *mem_ctx;
14907 };
14908
14909@@ -77,13 +77,13 @@ class ir_vector_reference_visitor : public ir_hierarchical_visitor {
14910 public:
14911 ir_vector_reference_visitor(void)
14912 {
14913- this->mem_ctx = talloc_new(NULL);
14914+ this->mem_ctx = ralloc_context(NULL);
14915 this->variable_list.make_empty();
14916 }
14917
14918 ~ir_vector_reference_visitor(void)
14919 {
14920- talloc_free(mem_ctx);
14921+ ralloc_free(mem_ctx);
14922 }
14923
14924 virtual ir_visitor_status visit(ir_variable *);
14925@@ -358,7 +358,7 @@ brw_do_vector_splitting(exec_list *instructions)
14926 if (refs.variable_list.is_empty())
14927 return false;
14928
14929- void *mem_ctx = talloc_new(NULL);
14930+ void *mem_ctx = ralloc_context(NULL);
14931
14932 /* Replace the decls of the vectors to be split with their split
14933 * components.
14934@@ -368,10 +368,10 @@ brw_do_vector_splitting(exec_list *instructions)
14935 const struct glsl_type *type;
14936 type = glsl_type::get_instance(entry->var->type->base_type, 1, 1);
14937
14938- entry->mem_ctx = talloc_parent(entry->var);
14939+ entry->mem_ctx = ralloc_parent(entry->var);
14940
14941 for (unsigned int i = 0; i < entry->var->type->vector_elements; i++) {
14942- const char *name = talloc_asprintf(mem_ctx, "%s_%c",
14943+ const char *name = ralloc_asprintf(mem_ctx, "%s_%c",
14944 entry->var->name,
14945 "xyzw"[i]);
14946
14947@@ -386,7 +386,7 @@ brw_do_vector_splitting(exec_list *instructions)
14948 ir_vector_splitting_visitor split(&refs.variable_list);
14949 visit_list_elements(&split, instructions);
14950
14951- talloc_free(mem_ctx);
14952+ ralloc_free(mem_ctx);
14953
14954 return true;
14955 }
14956diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c
14957index 94efa79..7d65332 100644
14958--- a/src/mesa/drivers/dri/i965/brw_program.c
14959+++ b/src/mesa/drivers/dri/i965/brw_program.c
14960@@ -36,7 +36,7 @@
14961 #include "program/program.h"
14962 #include "program/programopt.h"
14963 #include "tnl/tnl.h"
14964-#include "talloc.h"
14965+#include "../glsl/ralloc.h"
14966
14967 #include "brw_context.h"
14968 #include "brw_wm.h"
14969@@ -115,7 +115,7 @@ shader_error(struct gl_context *ctx, struct gl_program *prog, const char *msg)
14970 shader = _mesa_lookup_shader_program(ctx, prog->Id);
14971
14972 if (shader) {
14973- shader->InfoLog = talloc_strdup_append(shader->InfoLog, msg);
14974+ ralloc_strcat(&shader->InfoLog, msg);
14975 shader->LinkStatus = GL_FALSE;
14976 }
14977 }
14978diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c
14979index a64188a..0411ce0 100644
14980--- a/src/mesa/drivers/dri/i965/brw_vs_emit.c
14981+++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c
14982@@ -1426,11 +1426,10 @@ static struct brw_reg get_arg( struct brw_vs_compile *c,
14983 GET_SWZ(src->Swizzle, 1),
14984 GET_SWZ(src->Swizzle, 2),
14985 GET_SWZ(src->Swizzle, 3));
14986- }
14987
14988- /* Note this is ok for non-swizzle instructions:
14989- */
14990- reg.negate = src->Negate ? 1 : 0;
14991+ /* Note this is ok for non-swizzle ARB_vp instructions */
14992+ reg.negate = src->Negate ? 1 : 0;
14993+ }
14994
14995 return reg;
14996 }
14997@@ -1943,6 +1942,7 @@ void brw_vs_emit(struct brw_vs_compile *c )
14998
14999 switch (inst->Opcode) {
15000 case OPCODE_ABS:
15001+ args[0].negate = false;
15002 brw_MOV(p, dst, brw_abs(args[0]));
15003 break;
15004 case OPCODE_ADD:
15005diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c
15006index 7f3b99c..4d7d8a4 100644
15007--- a/src/mesa/drivers/dri/intel/intel_fbo.c
15008+++ b/src/mesa/drivers/dri/intel/intel_fbo.c
15009@@ -188,10 +188,15 @@ intel_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer
15010 DBG("Allocating %d x %d Intel RBO\n", width, height);
15011
15012 tiling = I915_TILING_NONE;
15013-
15014- /* Gen6 requires depth must be tiling */
15015- if (intel->gen >= 6 && rb->Format == MESA_FORMAT_S8_Z24)
15016- tiling = I915_TILING_Y;
15017+ if (intel->use_texture_tiling) {
15018+ GLenum base_format = _mesa_get_format_base_format(rb->Format);
15019+
15020+ if (intel->gen >= 4 && (base_format == GL_DEPTH_COMPONENT ||
15021+ base_format == GL_DEPTH_STENCIL))
15022+ tiling = I915_TILING_Y;
15023+ else
15024+ tiling = I915_TILING_X;
15025+ }
15026
15027 irb->region = intel_region_alloc(intel->intelScreen, tiling, cpp,
15028 width, height, GL_TRUE);
15029diff --git a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c
15030index e0d349b..1616306 100644
15031--- a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c
15032+++ b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c
15033@@ -124,7 +124,7 @@ void r3xx_compile_fragment_program(struct r300_fragment_program_compiler* c)
15034 /* This pass makes it easier for the scheduler to group TEX
15035 * instructions and reduces the chances of creating too
15036 * many texture indirections.*/
15037- {"register rename", 1, !is_r500 || opt, rc_rename_regs, NULL},
15038+ {"register rename", 1, !is_r500, rc_rename_regs, NULL},
15039 {"pair translate", 1, 1, rc_pair_translate, NULL},
15040 {"pair scheduling", 1, 1, rc_pair_schedule, NULL},
15041 {"register allocation", 1, opt, rc_pair_regalloc, NULL},
15042diff --git a/src/mesa/drivers/dri/r600/r700_assembler.c b/src/mesa/drivers/dri/r600/r700_assembler.c
15043index bee9c3b..024853c 100644
15044--- a/src/mesa/drivers/dri/r600/r700_assembler.c
15045+++ b/src/mesa/drivers/dri/r600/r700_assembler.c
15046@@ -481,6 +481,8 @@ unsigned int EG_GetNumOperands(GLuint opcode, GLuint nIsOp3)
15047 case EG_OP2_INST_FLT_TO_INT:
15048 case EG_OP2_INST_SIN:
15049 case EG_OP2_INST_COS:
15050+ case EG_OP2_INST_FLT_TO_INT_FLOOR:
15051+ case EG_OP2_INST_MOVA_INT:
15052 return 1;
15053
15054 default: radeon_error(
15055@@ -3297,23 +3299,76 @@ GLboolean assemble_ARL(r700_AssemblerBase *pAsm)
15056 return GL_FALSE;
15057 }
15058
15059- pAsm->D.dst.opcode = SQ_OP2_INST_MOVA_FLOOR;
15060- setaddrmode_PVSDST(&(pAsm->D.dst), ADDR_ABSOLUTE);
15061- pAsm->D.dst.rtype = DST_REG_TEMPORARY;
15062- pAsm->D.dst.reg = 0;
15063- pAsm->D.dst.writex = 0;
15064- pAsm->D.dst.writey = 0;
15065- pAsm->D.dst.writez = 0;
15066- pAsm->D.dst.writew = 0;
15067-
15068- if( GL_FALSE == assemble_src(pAsm, 0, -1) )
15069+ if(8 == pAsm->unAsic)
15070 {
15071- return GL_FALSE;
15072- }
15073+ /* Evergreen */
15074
15075- if( GL_FALSE == next_ins(pAsm) )
15076+ /* Float to Signed Integer Using FLOOR */
15077+ pAsm->D.dst.opcode = EG_OP2_INST_FLT_TO_INT_FLOOR;
15078+ setaddrmode_PVSDST(&(pAsm->D.dst), ADDR_ABSOLUTE);
15079+ pAsm->D.dst.rtype = DST_REG_TEMPORARY;
15080+ pAsm->D.dst.reg = 0;
15081+ pAsm->D.dst.writex = 0;
15082+ pAsm->D.dst.writey = 0;
15083+ pAsm->D.dst.writez = 0;
15084+ pAsm->D.dst.writew = 0;
15085+
15086+ if( GL_FALSE == assemble_src(pAsm, 0, -1) )
15087+ {
15088+ return GL_FALSE;
15089+ }
15090+
15091+ if( GL_FALSE == next_ins(pAsm) )
15092+ {
15093+ return GL_FALSE;
15094+ }
15095+
15096+ /* Copy Signed Integer To Integer in AR and GPR */
15097+ pAsm->D.dst.opcode = EG_OP2_INST_MOVA_INT;
15098+ setaddrmode_PVSDST(&(pAsm->D.dst), ADDR_ABSOLUTE);
15099+ pAsm->D.dst.rtype = DST_REG_TEMPORARY;
15100+ pAsm->D.dst.reg = 0;
15101+ pAsm->D.dst.writex = 0;
15102+ pAsm->D.dst.writey = 0;
15103+ pAsm->D.dst.writez = 0;
15104+ pAsm->D.dst.writew = 0;
15105+
15106+ if( GL_FALSE == assemble_src(pAsm, 0, -1) )
15107+ {
15108+ return GL_FALSE;
15109+ }
15110+
15111+ if( GL_FALSE == next_ins(pAsm) )
15112+ {
15113+ return GL_FALSE;
15114+ }
15115+ }
15116+ else
15117 {
15118- return GL_FALSE;
15119+ /* r6xx/r7xx */
15120+
15121+ /* Truncate floating-point to the nearest integer
15122+ in the range [-256, +255], and copy to AR and
15123+ to a GPR.
15124+ */
15125+ pAsm->D.dst.opcode = SQ_OP2_INST_MOVA_FLOOR;
15126+ setaddrmode_PVSDST(&(pAsm->D.dst), ADDR_ABSOLUTE);
15127+ pAsm->D.dst.rtype = DST_REG_TEMPORARY;
15128+ pAsm->D.dst.reg = 0;
15129+ pAsm->D.dst.writex = 0;
15130+ pAsm->D.dst.writey = 0;
15131+ pAsm->D.dst.writez = 0;
15132+ pAsm->D.dst.writew = 0;
15133+
15134+ if( GL_FALSE == assemble_src(pAsm, 0, -1) )
15135+ {
15136+ return GL_FALSE;
15137+ }
15138+
15139+ if( GL_FALSE == next_ins(pAsm) )
15140+ {
15141+ return GL_FALSE;
15142+ }
15143 }
15144
15145 return GL_TRUE;
15146diff --git a/src/mesa/drivers/osmesa/Makefile b/src/mesa/drivers/osmesa/Makefile
15147index 50dd452..39ab09a 100644
15148--- a/src/mesa/drivers/osmesa/Makefile
15149+++ b/src/mesa/drivers/osmesa/Makefile
15150@@ -40,7 +40,7 @@ $(TOP)/$(LIB_DIR)/$(OSMESA_LIB_NAME): $(OBJECTS) $(CORE_MESA)
15151 -major $(MESA_MAJOR) -minor $(MESA_MINOR) -patch $(MESA_TINY) \
15152 -install $(TOP)/$(LIB_DIR) -cplusplus $(MKLIB_OPTIONS) \
15153 -id $(INSTALL_LIB_DIR)/lib$(OSMESA_LIB).$(MESA_MAJOR).dylib \
15154- $(OSMESA_LIB_DEPS) $(OBJECTS) $(CORE_MESA) $(TALLOC_LIBS)
15155+ $(OSMESA_LIB_DEPS) $(OBJECTS) $(CORE_MESA)
15156
15157
15158
15159diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
15160index 96df58d..a84e545 100644
15161--- a/src/mesa/main/shaderapi.c
15162+++ b/src/mesa/main/shaderapi.c
15163@@ -46,7 +46,7 @@
15164 #include "program/program.h"
15165 #include "program/prog_parameter.h"
15166 #include "program/prog_uniform.h"
15167-#include "talloc.h"
15168+#include "ralloc.h"
15169 #include <stdbool.h>
15170
15171 /** Define this to enable shader substitution (see below) */
15172@@ -1134,9 +1134,9 @@ validate_program(struct gl_context *ctx, GLuint program)
15173 if (!shProg->Validated) {
15174 /* update info log */
15175 if (shProg->InfoLog) {
15176- talloc_free(shProg->InfoLog);
15177+ ralloc_free(shProg->InfoLog);
15178 }
15179- shProg->InfoLog = talloc_strdup(shProg, errMsg);
15180+ shProg->InfoLog = ralloc_strdup(shProg, errMsg);
15181 }
15182 }
15183
15184@@ -1814,7 +1814,7 @@ _mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string)
15185 #endif
15186 }
15187
15188- shProg->InfoLog = talloc_strdup_append(shProg->InfoLog, sh->InfoLog);
15189+ ralloc_strcat(&shProg->InfoLog, sh->InfoLog);
15190 }
15191
15192 delete_shader(ctx, shader);
15193diff --git a/src/mesa/main/shaderobj.c b/src/mesa/main/shaderobj.c
15194index 216bbce..82e5d87 100644
15195--- a/src/mesa/main/shaderobj.c
15196+++ b/src/mesa/main/shaderobj.c
15197@@ -36,7 +36,7 @@
15198 #include "program/program.h"
15199 #include "program/prog_parameter.h"
15200 #include "program/prog_uniform.h"
15201-#include "talloc.h"
15202+#include "ralloc.h"
15203
15204 /**********************************************************************/
15205 /*** Shader object functions ***/
15206@@ -103,7 +103,7 @@ _mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type)
15207 struct gl_shader *shader;
15208 assert(type == GL_FRAGMENT_SHADER || type == GL_VERTEX_SHADER ||
15209 type == GL_GEOMETRY_SHADER_ARB);
15210- shader = talloc_zero(NULL, struct gl_shader);
15211+ shader = rzalloc(NULL, struct gl_shader);
15212 if (shader) {
15213 shader->Type = type;
15214 shader->Name = name;
15215@@ -123,7 +123,7 @@ _mesa_delete_shader(struct gl_context *ctx, struct gl_shader *sh)
15216 if (sh->Source)
15217 free((void *) sh->Source);
15218 _mesa_reference_program(ctx, &sh->Program, NULL);
15219- talloc_free(sh);
15220+ ralloc_free(sh);
15221 }
15222
15223
15224@@ -250,7 +250,7 @@ static struct gl_shader_program *
15225 _mesa_new_shader_program(struct gl_context *ctx, GLuint name)
15226 {
15227 struct gl_shader_program *shProg;
15228- shProg = talloc_zero(NULL, struct gl_shader_program);
15229+ shProg = rzalloc(NULL, struct gl_shader_program);
15230 if (shProg) {
15231 shProg->Name = name;
15232 _mesa_init_shader_program(ctx, shProg);
15233@@ -314,7 +314,7 @@ _mesa_free_shader_program_data(struct gl_context *ctx,
15234 }
15235
15236 if (shProg->InfoLog) {
15237- talloc_free(shProg->InfoLog);
15238+ ralloc_free(shProg->InfoLog);
15239 shProg->InfoLog = NULL;
15240 }
15241
15242@@ -345,7 +345,7 @@ _mesa_delete_shader_program(struct gl_context *ctx, struct gl_shader_program *sh
15243 {
15244 _mesa_free_shader_program_data(ctx, shProg);
15245
15246- talloc_free(shProg);
15247+ ralloc_free(shProg);
15248 }
15249
15250
15251diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c
15252index d61856d..ea63dd0 100644
15253--- a/src/mesa/main/uniforms.c
15254+++ b/src/mesa/main/uniforms.c
15255@@ -511,7 +511,7 @@ get_uniform_rows_cols(const struct gl_program_parameter *p,
15256 *cols = p->Size;
15257 }
15258 else {
15259- *rows = p->Size / 4 + 1;
15260+ *rows = (p->Size + 3) / 4;
15261 if (p->Size % 4 == 0)
15262 *cols = 4;
15263 else
15264diff --git a/src/mesa/main/version.h b/src/mesa/main/version.h
15265index c726428..6e10c83 100644
15266--- a/src/mesa/main/version.h
15267+++ b/src/mesa/main/version.h
15268@@ -34,8 +34,8 @@ struct gl_context;
15269 /* Mesa version */
15270 #define MESA_MAJOR 7
15271 #define MESA_MINOR 10
15272-#define MESA_PATCH 0
15273-#define MESA_VERSION_STRING "7.10"
15274+#define MESA_PATCH 1
15275+#define MESA_VERSION_STRING "7.10.1-devel"
15276
15277 /* To make version comparison easy */
15278 #define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
15279diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
15280index c601ef6..6712a98 100644
15281--- a/src/mesa/program/ir_to_mesa.cpp
15282+++ b/src/mesa/program/ir_to_mesa.cpp
15283@@ -105,13 +105,13 @@ extern ir_to_mesa_src_reg ir_to_mesa_undef;
15284
15285 class ir_to_mesa_instruction : public exec_node {
15286 public:
15287- /* Callers of this talloc-based new need not call delete. It's
15288- * easier to just talloc_free 'ctx' (or any of its ancestors). */
15289+ /* Callers of this ralloc-based new need not call delete. It's
15290+ * easier to just ralloc_free 'ctx' (or any of its ancestors). */
15291 static void* operator new(size_t size, void *ctx)
15292 {
15293 void *node;
15294
15295- node = talloc_zero_size(ctx, size);
15296+ node = rzalloc_size(ctx, size);
15297 assert(node != NULL);
15298
15299 return node;
15300@@ -316,7 +316,7 @@ fail_link(struct gl_shader_program *prog, const char *fmt, ...)
15301 {
15302 va_list args;
15303 va_start(args, fmt);
15304- prog->InfoLog = talloc_vasprintf_append(prog->InfoLog, fmt, args);
15305+ ralloc_vasprintf_append(&prog->InfoLog, fmt, args);
15306 va_end(args);
15307
15308 prog->LinkStatus = GL_FALSE;
15309@@ -1542,7 +1542,7 @@ ir_to_mesa_visitor::visit(ir_dereference_array *ir)
15310 this->result, src_reg_for_float(element_size));
15311 }
15312
15313- src_reg.reladdr = talloc(mem_ctx, ir_to_mesa_src_reg);
15314+ src_reg.reladdr = ralloc(mem_ctx, ir_to_mesa_src_reg);
15315 memcpy(src_reg.reladdr, &index_reg, sizeof(index_reg));
15316 }
15317
15318@@ -1899,7 +1899,7 @@ ir_to_mesa_visitor::get_function_signature(ir_function_signature *sig)
15319 return entry;
15320 }
15321
15322- entry = talloc(mem_ctx, function_entry);
15323+ entry = ralloc(mem_ctx, function_entry);
15324 entry->sig = sig;
15325 entry->sig_id = this->next_signature_id++;
15326 entry->bgn_inst = NULL;
15327@@ -2236,12 +2236,12 @@ ir_to_mesa_visitor::ir_to_mesa_visitor()
15328 next_temp = 1;
15329 next_signature_id = 1;
15330 current_function = NULL;
15331- mem_ctx = talloc_new(NULL);
15332+ mem_ctx = ralloc_context(NULL);
15333 }
15334
15335 ir_to_mesa_visitor::~ir_to_mesa_visitor()
15336 {
15337- talloc_free(mem_ctx);
15338+ ralloc_free(mem_ctx);
15339 }
15340
15341 static struct prog_src_register
15342@@ -2290,8 +2290,8 @@ set_branchtargets(ir_to_mesa_visitor *v,
15343 }
15344 }
15345
15346- if_stack = talloc_zero_array(v->mem_ctx, int, if_count);
15347- loop_stack = talloc_zero_array(v->mem_ctx, int, loop_count);
15348+ if_stack = rzalloc_array(v->mem_ctx, int, if_count);
15349+ loop_stack = rzalloc_array(v->mem_ctx, int, loop_count);
15350
15351 for (i = 0; i < num_instructions; i++) {
15352 switch (mesa_instructions[i].Opcode) {
15353@@ -2434,7 +2434,7 @@ add_uniforms_to_parameters_list(struct gl_shader_program *shader_program,
15354 unsigned int next_sampler = 0, num_uniforms = 0;
15355 struct uniform_sort *sorted_uniforms;
15356
15357- sorted_uniforms = talloc_array(NULL, struct uniform_sort,
15358+ sorted_uniforms = ralloc_array(NULL, struct uniform_sort,
15359 shader_program->Uniforms->NumUniforms);
15360
15361 for (i = 0; i < shader_program->Uniforms->NumUniforms; i++) {
15362@@ -2513,7 +2513,7 @@ add_uniforms_to_parameters_list(struct gl_shader_program *shader_program,
15363 }
15364 }
15365
15366- talloc_free(sorted_uniforms);
15367+ ralloc_free(sorted_uniforms);
15368 }
15369
15370 static void
15371@@ -2529,7 +2529,7 @@ set_uniform_initializer(struct gl_context *ctx, void *mem_ctx,
15372
15373 for (unsigned int i = 0; i < type->length; i++) {
15374 const glsl_type *field_type = type->fields.structure[i].type;
15375- const char *field_name = talloc_asprintf(mem_ctx, "%s.%s", name,
15376+ const char *field_name = ralloc_asprintf(mem_ctx, "%s.%s", name,
15377 type->fields.structure[i].name);
15378 set_uniform_initializer(ctx, mem_ctx, shader_program, field_name,
15379 field_type, field_constant);
15380@@ -2560,7 +2560,7 @@ set_uniform_initializer(struct gl_context *ctx, void *mem_ctx,
15381 void *values;
15382
15383 if (element_type->base_type == GLSL_TYPE_BOOL) {
15384- int *conv = talloc_array(mem_ctx, int, element_type->components());
15385+ int *conv = ralloc_array(mem_ctx, int, element_type->components());
15386 for (unsigned int j = 0; j < element_type->components(); j++) {
15387 conv[j] = element->value.b[j];
15388 }
15389@@ -2606,14 +2606,14 @@ set_uniform_initializers(struct gl_context *ctx,
15390 continue;
15391
15392 if (!mem_ctx)
15393- mem_ctx = talloc_new(NULL);
15394+ mem_ctx = ralloc_context(NULL);
15395
15396 set_uniform_initializer(ctx, mem_ctx, shader_program, var->name,
15397 var->type, var->constant_value);
15398 }
15399 }
15400
15401- talloc_free(mem_ctx);
15402+ ralloc_free(mem_ctx);
15403 }
15404
15405
15406@@ -2712,7 +2712,7 @@ get_mesa_program(struct gl_context *ctx,
15407 mesa_instructions =
15408 (struct prog_instruction *)calloc(num_instructions,
15409 sizeof(*mesa_instructions));
15410- mesa_instruction_annotation = talloc_array(v.mem_ctx, ir_instruction *,
15411+ mesa_instruction_annotation = ralloc_array(v.mem_ctx, ir_instruction *,
15412 num_instructions);
15413
15414 /* Convert ir_mesa_instructions into prog_instructions.
15415@@ -2967,7 +2967,7 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader)
15416 _mesa_glsl_lexer_dtor(state);
15417 }
15418
15419- talloc_free(shader->ir);
15420+ ralloc_free(shader->ir);
15421 shader->ir = new(shader) exec_list;
15422 if (!state->error && !state->translation_unit.is_empty())
15423 _mesa_ast_to_hir(shader->ir, state);
15424@@ -3014,7 +3014,7 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader)
15425 /* Retain any live IR, but trash the rest. */
15426 reparent_ir(shader->ir, shader->ir);
15427
15428- talloc_free(state);
15429+ ralloc_free(state);
15430
15431 if (shader->CompileStatus) {
15432 if (!ctx->Driver.CompileShader(ctx, shader))
15433diff --git a/src/mesa/program/register_allocate.c b/src/mesa/program/register_allocate.c
15434index ada6e35..7698687 100644
15435--- a/src/mesa/program/register_allocate.c
15436+++ b/src/mesa/program/register_allocate.c
15437@@ -30,7 +30,7 @@
15438 * Graph-coloring register allocator.
15439 */
15440
15441-#include <talloc.h>
15442+#include <ralloc.h>
15443
15444 #include "main/imports.h"
15445 #include "main/macros.h"
15446@@ -93,12 +93,12 @@ ra_alloc_reg_set(unsigned int count)
15447 unsigned int i;
15448 struct ra_regs *regs;
15449
15450- regs = talloc_zero(NULL, struct ra_regs);
15451+ regs = rzalloc(NULL, struct ra_regs);
15452 regs->count = count;
15453- regs->regs = talloc_zero_array(regs, struct ra_reg, count);
15454+ regs->regs = rzalloc_array(regs, struct ra_reg, count);
15455
15456 for (i = 0; i < count; i++) {
15457- regs->regs[i].conflicts = talloc_zero_array(regs->regs, GLboolean, count);
15458+ regs->regs[i].conflicts = rzalloc_array(regs->regs, GLboolean, count);
15459 regs->regs[i].conflicts[i] = GL_TRUE;
15460 }
15461
15462@@ -117,14 +117,13 @@ ra_alloc_reg_class(struct ra_regs *regs)
15463 {
15464 struct ra_class *class;
15465
15466- regs->classes = talloc_realloc(regs, regs->classes,
15467- struct ra_class *,
15468- regs->class_count + 1);
15469+ regs->classes = reralloc(regs->regs, regs->classes, struct ra_class *,
15470+ regs->class_count + 1);
15471
15472- class = talloc_zero(regs, struct ra_class);
15473+ class = rzalloc(regs, struct ra_class);
15474 regs->classes[regs->class_count] = class;
15475
15476- class->regs = talloc_zero_array(class, GLboolean, regs->count);
15477+ class->regs = rzalloc_array(class, GLboolean, regs->count);
15478
15479 return regs->class_count++;
15480 }
15481@@ -148,7 +147,7 @@ ra_set_finalize(struct ra_regs *regs)
15482 unsigned int b, c;
15483
15484 for (b = 0; b < regs->class_count; b++) {
15485- regs->classes[b]->q = talloc_array(regs, unsigned int, regs->class_count);
15486+ regs->classes[b]->q = ralloc_array(regs, unsigned int, regs->class_count);
15487 }
15488
15489 /* Compute, for each class B and C, how many regs of B an
15490@@ -184,15 +183,15 @@ ra_alloc_interference_graph(struct ra_regs *regs, unsigned int count)
15491 struct ra_graph *g;
15492 unsigned int i;
15493
15494- g = talloc_zero(regs, struct ra_graph);
15495+ g = rzalloc(regs, struct ra_graph);
15496 g->regs = regs;
15497- g->nodes = talloc_zero_array(g, struct ra_node, count);
15498+ g->nodes = rzalloc_array(g, struct ra_node, count);
15499 g->count = count;
15500
15501- g->stack = talloc_zero_array(g, unsigned int, count);
15502+ g->stack = rzalloc_array(g, unsigned int, count);
15503
15504 for (i = 0; i < count; i++) {
15505- g->nodes[i].adjacency = talloc_zero_array(g, GLboolean, count);
15506+ g->nodes[i].adjacency = rzalloc_array(g, GLboolean, count);
15507 g->nodes[i].adjacency[i] = GL_TRUE;
15508 g->nodes[i].reg = ~0;
15509 }
15510diff --git a/src/mesa/program/sampler.cpp b/src/mesa/program/sampler.cpp
15511index 9a813c8..12c4a40 100644
15512--- a/src/mesa/program/sampler.cpp
15513+++ b/src/mesa/program/sampler.cpp
15514@@ -40,7 +40,7 @@ static void fail_link(struct gl_shader_program *prog, const char *fmt, ...)
15515 {
15516 va_list args;
15517 va_start(args, fmt);
15518- prog->InfoLog = talloc_vasprintf_append(prog->InfoLog, fmt, args);
15519+ ralloc_vasprintf_append(&prog->InfoLog, fmt, args);
15520 va_end(args);
15521
15522 prog->LinkStatus = GL_FALSE;
15523@@ -52,7 +52,7 @@ public:
15524 get_sampler_name(ir_dereference *last,
15525 struct gl_shader_program *shader_program)
15526 {
15527- this->mem_ctx = talloc_new(NULL);
15528+ this->mem_ctx = ralloc_context(NULL);
15529 this->shader_program = shader_program;
15530 this->name = NULL;
15531 this->offset = 0;
15532@@ -61,7 +61,7 @@ public:
15533
15534 ~get_sampler_name()
15535 {
15536- talloc_free(this->mem_ctx);
15537+ ralloc_free(this->mem_ctx);
15538 }
15539
15540 virtual ir_visitor_status visit(ir_dereference_variable *ir)
15541@@ -72,7 +72,7 @@ public:
15542
15543 virtual ir_visitor_status visit_leave(ir_dereference_record *ir)
15544 {
15545- this->name = talloc_asprintf(mem_ctx, "%s.%s", name, ir->field);
15546+ this->name = ralloc_asprintf(mem_ctx, "%s.%s", name, ir->field);
15547 return visit_continue;
15548 }
15549
15550@@ -91,16 +91,14 @@ public:
15551 * all that would work would be an unrolled loop counter that ends
15552 * up being constant above.
15553 */
15554- shader_program->InfoLog =
15555- talloc_asprintf_append(shader_program->InfoLog,
15556- "warning: Variable sampler array index "
15557- "unsupported.\nThis feature of the language "
15558- "was removed in GLSL 1.20 and is unlikely "
15559- "to be supported for 1.10 in Mesa.\n");
15560+ ralloc_strcat(&shader_program->InfoLog,
15561+ "warning: Variable sampler array index unsupported.\n"
15562+ "This feature of the language was removed in GLSL 1.20 "
15563+ "and is unlikely to be supported for 1.10 in Mesa.\n");
15564 i = 0;
15565 }
15566 if (ir != last) {
15567- this->name = talloc_asprintf(mem_ctx, "%s[%d]", name, i);
15568+ this->name = ralloc_asprintf(mem_ctx, "%s[%d]", name, i);
15569 } else {
15570 offset = i;
15571 }
diff --git a/meta/recipes-graphics/mesa/mesa-dri_7.10.bb b/meta/recipes-graphics/mesa/mesa-dri_7.10.2.bb
index 1865dd46b0..99d60664b9 100644
--- a/meta/recipes-graphics/mesa/mesa-dri_7.10.bb
+++ b/meta/recipes-graphics/mesa/mesa-dri_7.10.2.bb
@@ -8,14 +8,13 @@ LIB_DEPS = "libdrm virtual/libx11 libxext libxxf86vm libxdamage libxfixes expat
8 8
9DEPENDS = "${PROTO_DEPS} ${LIB_DEPS} makedepend-native" 9DEPENDS = "${PROTO_DEPS} ${LIB_DEPS} makedepend-native"
10 10
11PR = "r3" 11PR = "r0"
12 12
13SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \ 13SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \
14 file://talloc-removal.patch \
15 file://crossfix.patch" 14 file://crossfix.patch"
16 15
17SRC_URI[md5sum] = "33fb94eccc02cbb4d8d1365615e38e46" 16SRC_URI[md5sum] = "f5de82852f1243f42cc004039e10b771"
18SRC_URI[sha256sum] = "bcf28f43f39c28da271c0f5857fb32898d4ade3e035e80a0ceece1c2df6e0aca" 17SRC_URI[sha256sum] = "8ced2678ce11cf30804694a92ea3ca6b82f158ae8995bdc626c7e85aac71c7c1"
19 18
20# most of our targets do not have DRI so will use mesa-xlib 19# most of our targets do not have DRI so will use mesa-xlib
21DEFAULT_PREFERENCE = "-1" 20DEFAULT_PREFERENCE = "-1"
diff --git a/meta/recipes-graphics/mesa/mesa-xlib_7.10.bb b/meta/recipes-graphics/mesa/mesa-xlib_7.10.2.bb
index c8eb88fbf6..b77df2c666 100644
--- a/meta/recipes-graphics/mesa/mesa-xlib_7.10.bb
+++ b/meta/recipes-graphics/mesa/mesa-xlib_7.10.2.bb
@@ -1,11 +1,10 @@
1include mesa-common.inc 1include mesa-common.inc
2 2
3SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \ 3SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \
4 file://talloc-removal.patch \
5 " 4 "
6 5
7SRC_URI[md5sum] = "33fb94eccc02cbb4d8d1365615e38e46" 6SRC_URI[md5sum] = "f5de82852f1243f42cc004039e10b771"
8SRC_URI[sha256sum] = "bcf28f43f39c28da271c0f5857fb32898d4ade3e035e80a0ceece1c2df6e0aca" 7SRC_URI[sha256sum] = "8ced2678ce11cf30804694a92ea3ca6b82f158ae8995bdc626c7e85aac71c7c1"
9 8
10LIC_FILES_CHKSUM = "file://docs/license.html;md5=7a3373c039b6b925c427755a4f779c1d" 9LIC_FILES_CHKSUM = "file://docs/license.html;md5=7a3373c039b6b925c427755a4f779c1d"
11 10
@@ -15,6 +14,6 @@ LIB_DEPS = "virtual/libx11 libxext libxxf86vm libxdamage libxfixes libxml2-nativ
15DEPENDS = "${PROTO_DEPS} ${LIB_DEPS} makedepend-native" 14DEPENDS = "${PROTO_DEPS} ${LIB_DEPS} makedepend-native"
16 15
17PE = "1" 16PE = "1"
18PR = "r1" 17PR = "r0"
19 18
20EXTRA_OECONF += "--with-driver=xlib" 19EXTRA_OECONF += "--with-driver=xlib"