From b8e792ee25e01ce1e9e4f3ed444f8e1ade8c992e Mon Sep 17 00:00:00 2001 From: Vladislav Egorov Date: Sun, 21 May 2017 22:49:15 +0200 Subject: glcpp: Avoid unnecessary strcmp() strcmp() is slow. Initiate comparison with "__LINE__" or "__FILE__" only if the identifier starts with '_', which is rare. Reviewed-by: Ian Romanick Reviewed-by: Timothy Arceri --- src/compiler/glsl/glcpp/glcpp-parse.y | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/compiler/glsl/glcpp/glcpp-parse.y b/src/compiler/glsl/glcpp/glcpp-parse.y index 5cb2a380605..fe211a0f0bd 100644 --- a/src/compiler/glsl/glcpp/glcpp-parse.y +++ b/src/compiler/glsl/glcpp/glcpp-parse.y @@ -1829,11 +1829,15 @@ _glcpp_parser_expand_node(glcpp_parser_t *parser, token_node_t *node, /* Special handling for __LINE__ and __FILE__, (not through * the hash table). */ - if (strcmp(identifier, "__LINE__") == 0) - return _token_list_create_with_one_integer(parser, node->token->location.first_line); - - if (strcmp(identifier, "__FILE__") == 0) - return _token_list_create_with_one_integer(parser, node->token->location.source); + if (*identifier == '_') { + if (strcmp(identifier, "__LINE__") == 0) + return _token_list_create_with_one_integer(parser, + node->token->location.first_line); + + if (strcmp(identifier, "__FILE__") == 0) + return _token_list_create_with_one_integer(parser, + node->token->location.source); + } /* Look up this identifier in the hash table. */ entry = _mesa_hash_table_search(parser->defines, identifier); -- cgit v1.2.3