diff options
Diffstat (limited to 'mesalib/src/glsl')
-rw-r--r-- | mesalib/src/glsl/glcpp/glcpp-lex.l | 20 | ||||
-rw-r--r-- | mesalib/src/glsl/glcpp/glcpp-parse.y | 12 | ||||
-rw-r--r-- | mesalib/src/glsl/linker.cpp | 1 | ||||
-rw-r--r-- | mesalib/src/glsl/ralloc.c | 8 | ||||
-rw-r--r-- | mesalib/src/glsl/ralloc.h | 9 |
5 files changed, 27 insertions, 23 deletions
diff --git a/mesalib/src/glsl/glcpp/glcpp-lex.l b/mesalib/src/glsl/glcpp/glcpp-lex.l index 7ab58cb28..783c54549 100644 --- a/mesalib/src/glsl/glcpp/glcpp-lex.l +++ b/mesalib/src/glsl/glcpp/glcpp-lex.l @@ -67,7 +67,7 @@ void glcpp_set_column (int column_no , yyscan_t yyscanner); %option stack %option never-interactive -%x DONE COMMENT UNREACHABLE SKIP +%x DONE COMMENT UNREACHABLE SKIP DEFINE SPACE [[:space:]] NONSPACE [^[:space:]] @@ -184,14 +184,22 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? glcpp_error(yylloc, yyextra, "#error%s", p); } -{HASH}define{HSPACE}+/{IDENTIFIER}"(" { +{HASH}define{HSPACE}+ { yyextra->space_tokens = 0; - return HASH_DEFINE_FUNC; + yy_push_state(DEFINE, yyscanner); + return HASH_DEFINE; } -{HASH}define { - yyextra->space_tokens = 0; - return HASH_DEFINE_OBJ; +<DEFINE>{IDENTIFIER}/"(" { + yy_pop_state(yyscanner); + yylval->str = ralloc_strdup (yyextra, yytext); + return FUNC_IDENTIFIER; +} + +<DEFINE>{IDENTIFIER} { + yy_pop_state(yyscanner); + yylval->str = ralloc_strdup (yyextra, yytext); + return OBJ_IDENTIFIER; } {HASH}undef { diff --git a/mesalib/src/glsl/glcpp/glcpp-parse.y b/mesalib/src/glsl/glcpp/glcpp-parse.y index fb9bc588e..ffb48e330 100644 --- a/mesalib/src/glsl/glcpp/glcpp-parse.y +++ b/mesalib/src/glsl/glcpp/glcpp-parse.y @@ -160,10 +160,10 @@ add_builtin_define(glcpp_parser_t *parser, const char *name, int value); %lex-param {glcpp_parser_t *parser} %expect 0 -%token COMMA_FINAL DEFINED ELIF_EXPANDED HASH HASH_DEFINE_FUNC HASH_DEFINE_OBJ HASH_ELIF HASH_ELSE HASH_ENDIF HASH_IF HASH_IFDEF HASH_IFNDEF HASH_LINE HASH_UNDEF HASH_VERSION IDENTIFIER IF_EXPANDED INTEGER INTEGER_STRING LINE_EXPANDED NEWLINE OTHER PLACEHOLDER SPACE +%token COMMA_FINAL DEFINED ELIF_EXPANDED HASH HASH_DEFINE FUNC_IDENTIFIER OBJ_IDENTIFIER HASH_ELIF HASH_ELSE HASH_ENDIF HASH_IF HASH_IFDEF HASH_IFNDEF HASH_LINE HASH_UNDEF HASH_VERSION IDENTIFIER IF_EXPANDED INTEGER INTEGER_STRING LINE_EXPANDED NEWLINE OTHER PLACEHOLDER SPACE %token PASTE %type <ival> expression INTEGER operator SPACE integer_constant -%type <str> IDENTIFIER INTEGER_STRING OTHER +%type <str> IDENTIFIER FUNC_IDENTIFIER OBJ_IDENTIFIER INTEGER_STRING OTHER %type <string_list> identifier_list %type <token> preprocessing_token conditional_token %type <token_list> pp_tokens replacement_list text_line conditional_tokens @@ -227,13 +227,13 @@ expanded_line: ; control_line: - HASH_DEFINE_OBJ IDENTIFIER replacement_list NEWLINE { + HASH_DEFINE OBJ_IDENTIFIER replacement_list NEWLINE { _define_object_macro (parser, & @2, $2, $3); } -| HASH_DEFINE_FUNC IDENTIFIER '(' ')' replacement_list NEWLINE { +| HASH_DEFINE FUNC_IDENTIFIER '(' ')' replacement_list NEWLINE { _define_function_macro (parser, & @2, $2, NULL, $5); } -| HASH_DEFINE_FUNC IDENTIFIER '(' identifier_list ')' replacement_list NEWLINE { +| HASH_DEFINE FUNC_IDENTIFIER '(' identifier_list ')' replacement_list NEWLINE { _define_function_macro (parser, & @2, $2, $4, $6); } | HASH_UNDEF IDENTIFIER NEWLINE { @@ -1843,7 +1843,7 @@ glcpp_parser_lex (YYSTYPE *yylval, YYLTYPE *yylloc, glcpp_parser_t *parser) if (ret == NEWLINE) parser->in_control_line = 0; } - else if (ret == HASH_DEFINE_OBJ || ret == HASH_DEFINE_FUNC || + else if (ret == HASH_DEFINE || ret == HASH_UNDEF || ret == HASH_IF || ret == HASH_IFDEF || ret == HASH_IFNDEF || ret == HASH_ELIF || ret == HASH_ELSE || diff --git a/mesalib/src/glsl/linker.cpp b/mesalib/src/glsl/linker.cpp index 34ce13372..86371b5e6 100644 --- a/mesalib/src/glsl/linker.cpp +++ b/mesalib/src/glsl/linker.cpp @@ -882,6 +882,7 @@ move_non_declarations(exec_list *instructions, exec_node *last, assert(inst->as_assignment() || inst->as_call() + || inst->as_if() /* for initializers with the ?: operator */ || ((var != NULL) && (var->mode == ir_var_temporary))); if (make_copies) { diff --git a/mesalib/src/glsl/ralloc.c b/mesalib/src/glsl/ralloc.c index 3da09b559..59e71c48b 100644 --- a/mesalib/src/glsl/ralloc.c +++ b/mesalib/src/glsl/ralloc.c @@ -41,14 +41,6 @@ _CRTIMP int _vscprintf(const char *format, va_list argptr); #include "ralloc.h" -#ifdef __GNUC__ -#define likely(x) __builtin_expect(!!(x),1) -#define unlikely(x) __builtin_expect(!!(x),0) -#else -#define likely(x) !!(x) -#define unlikely(x) !!(x) -#endif - #ifndef va_copy #ifdef __va_copy #define va_copy(dest, src) __va_copy((dest), (src)) diff --git a/mesalib/src/glsl/ralloc.h b/mesalib/src/glsl/ralloc.h index 86306b1f5..67eb93833 100644 --- a/mesalib/src/glsl/ralloc.h +++ b/mesalib/src/glsl/ralloc.h @@ -54,6 +54,7 @@ extern "C" { #include <stddef.h> #include <stdarg.h> #include <stdbool.h> +#include "main/compiler.h" /** * \def ralloc(ctx, type) @@ -301,7 +302,7 @@ bool ralloc_strncat(char **dest, const char *str, size_t n); * * \return The newly allocated string. */ -char *ralloc_asprintf (const void *ctx, const char *fmt, ...); +char *ralloc_asprintf (const void *ctx, const char *fmt, ...) PRINTFLIKE(2, 3); /** * Print to a string, given a va_list. @@ -334,7 +335,8 @@ char *ralloc_vasprintf(const void *ctx, const char *fmt, va_list args); * \return True unless allocation failed. */ bool ralloc_asprintf_rewrite_tail(char **str, size_t *start, - const char *fmt, ...); + const char *fmt, ...) + PRINTFLIKE(3, 4); /** * Rewrite the tail of an existing string, starting at a given index. @@ -376,7 +378,8 @@ bool ralloc_vasprintf_rewrite_tail(char **str, size_t *start, const char *fmt, * * \return True unless allocation failed. */ -bool ralloc_asprintf_append (char **str, const char *fmt, ...); +bool ralloc_asprintf_append (char **str, const char *fmt, ...) + PRINTFLIKE(2, 3); /** * Append formatted text to the supplied string, given a va_list. |