glsl: Implement GLSL 1.30's literal integer range restrictions.
authorEric Anholt <eric@anholt.net>
Mon, 3 Oct 2011 23:59:01 +0000 (16:59 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 28 Oct 2011 19:03:03 +0000 (12:03 -0700)
commit687e4446bf5c5d3bc4a56ad4e9291a9cf2a2958c
treed9d6c84344e6523cd17504ca195a1a175bb56fee
parent974c66875e719051831e2bd874db4ba7fdaffa02
glsl: Implement GLSL 1.30's literal integer range restrictions.

From page 22 (28 of PDF) of GLSL 1.30 spec:
    It is an error to provide a literal integer whose magnitude is too
    large to store in a variable of matching signed or unsigned type.

    Unsigned integers have exactly 32 bits of precision.  Signed integers
    use 32 bits, including a sign bit, in two's complement form.

Fixes piglit int-literal-too-large-0[123].frag.

v2: Take care with INT_MIN, use stroull, and make it a function.

Reviewed-by: Paul Berry <stereotype441@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/glsl/glsl_lexer.ll