[Mesa-dev] [PATCH v2] compiler/glsl: invalidate float suffixes for glsl 1.10

Lars Hamre chemecse at gmail.com
Tue Mar 29 02:11:45 UTC 2016


That sounds good to me, I will submit a v3 with those edits.

On Mon, Mar 28, 2016 at 9:19 PM, Kenneth Graunke <kenneth at whitecape.org>
wrote:

> On Monday, March 28, 2016 8:16:17 PM PDT Lars Hamre wrote:
> > NOTE: someone with access will need to commit this patch after the
> >       review process
> >
> > Invalidates float suffixes for glsl 1.10
> >
> > Fixes the following piglit tests:
> >
> tests/spec/glsl-1.10/compiler/literals/invalid-float-suffix-capital-f.vert
> > tests/spec/glsl-1.10/compiler/literals/invalid-float-suffix-f.vert`
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81585
> >
> > Signed-off-by: Lars Hamre <chemecse at gmail.com>
> > Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>
> >
> > ---
> >  src/compiler/glsl/glsl_lexer.ll | 13 +++++++++++--
> >  1 file changed, 11 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/compiler/glsl/glsl_lexer.ll b/src/compiler/glsl/
> glsl_lexer.ll
> > index 1f12265..0980f4f 100644
> > --- a/src/compiler/glsl/glsl_lexer.ll
> > +++ b/src/compiler/glsl/glsl_lexer.ll
> > @@ -472,8 +472,17 @@ layout           {
> >  \.[0-9]+([eE][+-]?[0-9]+)?[fF]?              |
> >  [0-9]+\.([eE][+-]?[0-9]+)?[fF]?              |
> >  [0-9]+[eE][+-]?[0-9]+[fF]?           {
> > -                         yylval->real = _mesa_strtof(yytext, NULL);
> > -                         return FLOATCONSTANT;
> > +                         struct _mesa_glsl_parse_state *state = yyextra;
> > +                         char suffix = yytext[strlen(yytext) - 1];
> > +                         if (!state->is_version(120, 0) &&
> > +                             (suffix == 'f' || suffix == 'F')) {
> > +                             _mesa_glsl_error(yylloc, state,
> > +                                              "Float suffixes are
> invalid in GLSL
> 1.10");
> > +                             return ERROR_TOK;
> > +                         } else {
> > +                             yylval->real = _mesa_strtof(yytext, NULL);
> > +                             return FLOATCONSTANT;
> > +                         }
>
> Hi Lars,
>
> Good catch!  Would it also work to do:
>
>                     if (!state->is_version(120, 0) &&
>                         (suffix == 'f' || suffix == 'F')) {
>                         _mesa_glsl_error(yylloc, state,
>                                          "Float suffixes are invalid in
> GLSL 1.10");
>             }
>                     yylval->real = _mesa_strtof(yytext, NULL);
>                     return FLOATCONSTANT;
>
> In other words, raise the error and fail the compile, but parse the
> float literal as intended.  I think returning ERROR_TOK is likely to
> make the parser hit bison-generated "Expected <SOME TOKENS>, got <SOME
> OTHER TOKENS>" errors that are pretty cryptic.  Parsing the number in
> the obvious manner would let the compile proceed normally, so we don't
> get cascading errors that might be confusing.
>
> That patch would get a:
> Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
>
> >                       }
> >
> >  [0-9]+\.[0-9]+([eE][+-]?[0-9]+)?(lf|LF)      |
> > --
> > 2.5.5
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160328/accad604/attachment-0001.html>


More information about the mesa-dev mailing list