teemperor created this revision. teemperor added a reviewer: ribrdb. teemperor edited the summary of this revision.
`m_last_tok` isn't initialized anywhere before it's used the first time (most likely in the `GoParser::Rule::error` method), which causes most of the GoParser tests to fail with sanitizers enabled with errors like this: GoParser.cpp:52:21: runtime error: load of value <random value>, which is not a valid value for type 'GoLexer::TokenType' UndefinedBehaviorSanitizer: undefined-behavior GoParser.cpp:52:21 https://reviews.llvm.org/D42339 Files: source/Plugins/ExpressionParser/Go/GoParser.cpp Index: source/Plugins/ExpressionParser/Go/GoParser.cpp =================================================================== --- source/Plugins/ExpressionParser/Go/GoParser.cpp +++ source/Plugins/ExpressionParser/Go/GoParser.cpp @@ -67,7 +67,9 @@ size_t m_pos; }; -GoParser::GoParser(const char *src) : m_lexer(src), m_pos(0), m_failed(false) {} +GoParser::GoParser(const char *src) + : m_lexer(src), m_pos(0), m_last_tok(GoLexer::TOK_INVALID), + m_failed(false) {} GoASTStmt *GoParser::Statement() { Rule r("Statement", this);
Index: source/Plugins/ExpressionParser/Go/GoParser.cpp =================================================================== --- source/Plugins/ExpressionParser/Go/GoParser.cpp +++ source/Plugins/ExpressionParser/Go/GoParser.cpp @@ -67,7 +67,9 @@ size_t m_pos; }; -GoParser::GoParser(const char *src) : m_lexer(src), m_pos(0), m_failed(false) {} +GoParser::GoParser(const char *src) + : m_lexer(src), m_pos(0), m_last_tok(GoLexer::TOK_INVALID), + m_failed(false) {} GoASTStmt *GoParser::Statement() { Rule r("Statement", this);
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits