Re: r336716 - Revert r336590 "[libclang] evalute compound statement cursors before trying to evaluate"
Fixed in r350680. On Tue, 8 Jan 2019 at 15:24, Alex L wrote: > Looks like there was another leak I missed. I'm working on fixing it now. > Cheers, > Alex > > On Tue, 8 Jan 2019 at 14:38, Alex L wrote: > >> Thanks for reverting the commit! Unfortunately I missed the failure back >> then. >> I fixed the leak and recommitted the change in r350666. >> >> Cheers, >> Alex >> >> On Tue, 10 Jul 2018 at 12:53, Evgeniy Stepanov via cfe-commits < >> cfe-commits@lists.llvm.org> wrote: >> >>> Author: eugenis >>> Date: Tue Jul 10 12:49:07 2018 >>> New Revision: 336716 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=336716=rev >>> Log: >>> Revert r336590 "[libclang] evalute compound statement cursors before >>> trying to evaluate" >>> >>> New memory leaks in >>> LibclangParseTest_EvaluateChildExpression_Test::TestBody() >>> >>> Modified: >>> cfe/trunk/tools/libclang/CIndex.cpp >>> cfe/trunk/unittests/libclang/LibclangTest.cpp >>> >>> Modified: cfe/trunk/tools/libclang/CIndex.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=336716=336715=336716=diff >>> >>> == >>> --- cfe/trunk/tools/libclang/CIndex.cpp (original) >>> +++ cfe/trunk/tools/libclang/CIndex.cpp Tue Jul 10 12:49:07 2018 >>> @@ -3890,19 +3890,6 @@ static const ExprEvalResult* evaluateExp >>> } >>> >>> CXEvalResult clang_Cursor_Evaluate(CXCursor C) { >>> - if (clang_getCursorKind(C) == CXCursor_CompoundStmt) { >>> -const CompoundStmt *compoundStmt = >>> cast(getCursorStmt(C)); >>> -Expr *expr = nullptr; >>> -for (auto *bodyIterator : compoundStmt->body()) { >>> - if ((expr = dyn_cast(bodyIterator))) { >>> -break; >>> - } >>> -} >>> -if (expr) >>> - return const_cast( >>> - reinterpret_cast(evaluateExpr(expr, C))); >>> - } >>> - >>>const Decl *D = getCursorDecl(C); >>>if (D) { >>> const Expr *expr = nullptr; >>> @@ -3916,6 +3903,19 @@ CXEvalResult clang_Cursor_Evaluate(CXCur >>>evaluateExpr(const_cast(expr), C))); >>> return nullptr; >>>} >>> + >>> + const CompoundStmt *compoundStmt = >>> dyn_cast_or_null(getCursorStmt(C)); >>> + if (compoundStmt) { >>> +Expr *expr = nullptr; >>> +for (auto *bodyIterator : compoundStmt->body()) { >>> + if ((expr = dyn_cast(bodyIterator))) { >>> +break; >>> + } >>> +} >>> +if (expr) >>> + return const_cast( >>> + reinterpret_cast(evaluateExpr(expr, C))); >>> + } >>>return nullptr; >>> } >>> >>> >>> Modified: cfe/trunk/unittests/libclang/LibclangTest.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/libclang/LibclangTest.cpp?rev=336716=336715=336716=diff >>> >>> == >>> --- cfe/trunk/unittests/libclang/LibclangTest.cpp (original) >>> +++ cfe/trunk/unittests/libclang/LibclangTest.cpp Tue Jul 10 12:49:07 >>> 2018 >>> @@ -461,47 +461,6 @@ TEST_F(LibclangParseTest, AllSkippedRang >>>clang_disposeSourceRangeList(Ranges); >>> } >>> >>> -TEST_F(LibclangParseTest, EvaluateChildExpression) { >>> - std::string Main = "main.m"; >>> - WriteFile(Main, "#define kFOO @\"foo\"\n" >>> - "void foobar(void) {\n" >>> - " {kFOO;}\n" >>> - "}\n"); >>> - ClangTU = clang_parseTranslationUnit(Index, Main.c_str(), nullptr, 0, >>> nullptr, >>> - 0, TUFlags); >>> - >>> - CXCursor C = clang_getTranslationUnitCursor(ClangTU); >>> - clang_visitChildren( >>> - C, >>> - [](CXCursor cursor, CXCursor parent, >>> - CXClientData client_data) -> CXChildVisitResult { >>> -if (clang_getCursorKind(cursor) == CXCursor_FunctionDecl) { >>> - int numberedStmt = 0; >>> - clang_visitChildren( >>> - cursor, >>> - [](CXCursor cursor, CXCursor parent, >>> - CXClientData client_data) -> CXChildVisitResult { >>> -int = *((int *)client_data); >>> -if (clang_getCursorKind(cursor) == >>> CXCursor_CompoundStmt) { >>> - if (numberedStmt) { >>> -CXEvalResult RE = clang_Cursor_Evaluate(cursor); >>> -EXPECT_NE(RE, nullptr); >>> -EXPECT_EQ(clang_EvalResult_getKind(RE), >>> - CXEval_ObjCStrLiteral); >>> -return CXChildVisit_Break; >>> - } >>> - numberedStmt++; >>> -} >>> -return CXChildVisit_Recurse; >>> - }, >>> - ); >>> - EXPECT_EQ(numberedStmt, 1); >>> -} >>> -return CXChildVisit_Continue; >>> - }, >>> - nullptr); >>> -} >>> - >>> class LibclangReparseTest : public LibclangParseTest { >>> public: >>>void DisplayDiagnostics() { >>> >>> >>>
Re: r336716 - Revert r336590 "[libclang] evalute compound statement cursors before trying to evaluate"
Looks like there was another leak I missed. I'm working on fixing it now. Cheers, Alex On Tue, 8 Jan 2019 at 14:38, Alex L wrote: > Thanks for reverting the commit! Unfortunately I missed the failure back > then. > I fixed the leak and recommitted the change in r350666. > > Cheers, > Alex > > On Tue, 10 Jul 2018 at 12:53, Evgeniy Stepanov via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: eugenis >> Date: Tue Jul 10 12:49:07 2018 >> New Revision: 336716 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=336716=rev >> Log: >> Revert r336590 "[libclang] evalute compound statement cursors before >> trying to evaluate" >> >> New memory leaks in >> LibclangParseTest_EvaluateChildExpression_Test::TestBody() >> >> Modified: >> cfe/trunk/tools/libclang/CIndex.cpp >> cfe/trunk/unittests/libclang/LibclangTest.cpp >> >> Modified: cfe/trunk/tools/libclang/CIndex.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=336716=336715=336716=diff >> >> == >> --- cfe/trunk/tools/libclang/CIndex.cpp (original) >> +++ cfe/trunk/tools/libclang/CIndex.cpp Tue Jul 10 12:49:07 2018 >> @@ -3890,19 +3890,6 @@ static const ExprEvalResult* evaluateExp >> } >> >> CXEvalResult clang_Cursor_Evaluate(CXCursor C) { >> - if (clang_getCursorKind(C) == CXCursor_CompoundStmt) { >> -const CompoundStmt *compoundStmt = >> cast(getCursorStmt(C)); >> -Expr *expr = nullptr; >> -for (auto *bodyIterator : compoundStmt->body()) { >> - if ((expr = dyn_cast(bodyIterator))) { >> -break; >> - } >> -} >> -if (expr) >> - return const_cast( >> - reinterpret_cast(evaluateExpr(expr, C))); >> - } >> - >>const Decl *D = getCursorDecl(C); >>if (D) { >> const Expr *expr = nullptr; >> @@ -3916,6 +3903,19 @@ CXEvalResult clang_Cursor_Evaluate(CXCur >>evaluateExpr(const_cast(expr), C))); >> return nullptr; >>} >> + >> + const CompoundStmt *compoundStmt = >> dyn_cast_or_null(getCursorStmt(C)); >> + if (compoundStmt) { >> +Expr *expr = nullptr; >> +for (auto *bodyIterator : compoundStmt->body()) { >> + if ((expr = dyn_cast(bodyIterator))) { >> +break; >> + } >> +} >> +if (expr) >> + return const_cast( >> + reinterpret_cast(evaluateExpr(expr, C))); >> + } >>return nullptr; >> } >> >> >> Modified: cfe/trunk/unittests/libclang/LibclangTest.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/libclang/LibclangTest.cpp?rev=336716=336715=336716=diff >> >> == >> --- cfe/trunk/unittests/libclang/LibclangTest.cpp (original) >> +++ cfe/trunk/unittests/libclang/LibclangTest.cpp Tue Jul 10 12:49:07 2018 >> @@ -461,47 +461,6 @@ TEST_F(LibclangParseTest, AllSkippedRang >>clang_disposeSourceRangeList(Ranges); >> } >> >> -TEST_F(LibclangParseTest, EvaluateChildExpression) { >> - std::string Main = "main.m"; >> - WriteFile(Main, "#define kFOO @\"foo\"\n" >> - "void foobar(void) {\n" >> - " {kFOO;}\n" >> - "}\n"); >> - ClangTU = clang_parseTranslationUnit(Index, Main.c_str(), nullptr, 0, >> nullptr, >> - 0, TUFlags); >> - >> - CXCursor C = clang_getTranslationUnitCursor(ClangTU); >> - clang_visitChildren( >> - C, >> - [](CXCursor cursor, CXCursor parent, >> - CXClientData client_data) -> CXChildVisitResult { >> -if (clang_getCursorKind(cursor) == CXCursor_FunctionDecl) { >> - int numberedStmt = 0; >> - clang_visitChildren( >> - cursor, >> - [](CXCursor cursor, CXCursor parent, >> - CXClientData client_data) -> CXChildVisitResult { >> -int = *((int *)client_data); >> -if (clang_getCursorKind(cursor) == >> CXCursor_CompoundStmt) { >> - if (numberedStmt) { >> -CXEvalResult RE = clang_Cursor_Evaluate(cursor); >> -EXPECT_NE(RE, nullptr); >> -EXPECT_EQ(clang_EvalResult_getKind(RE), >> - CXEval_ObjCStrLiteral); >> -return CXChildVisit_Break; >> - } >> - numberedStmt++; >> -} >> -return CXChildVisit_Recurse; >> - }, >> - ); >> - EXPECT_EQ(numberedStmt, 1); >> -} >> -return CXChildVisit_Continue; >> - }, >> - nullptr); >> -} >> - >> class LibclangReparseTest : public LibclangParseTest { >> public: >>void DisplayDiagnostics() { >> >> >> ___ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > ___
Re: r336716 - Revert r336590 "[libclang] evalute compound statement cursors before trying to evaluate"
Thanks for reverting the commit! Unfortunately I missed the failure back then. I fixed the leak and recommitted the change in r350666. Cheers, Alex On Tue, 10 Jul 2018 at 12:53, Evgeniy Stepanov via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: eugenis > Date: Tue Jul 10 12:49:07 2018 > New Revision: 336716 > > URL: http://llvm.org/viewvc/llvm-project?rev=336716=rev > Log: > Revert r336590 "[libclang] evalute compound statement cursors before > trying to evaluate" > > New memory leaks in > LibclangParseTest_EvaluateChildExpression_Test::TestBody() > > Modified: > cfe/trunk/tools/libclang/CIndex.cpp > cfe/trunk/unittests/libclang/LibclangTest.cpp > > Modified: cfe/trunk/tools/libclang/CIndex.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=336716=336715=336716=diff > > == > --- cfe/trunk/tools/libclang/CIndex.cpp (original) > +++ cfe/trunk/tools/libclang/CIndex.cpp Tue Jul 10 12:49:07 2018 > @@ -3890,19 +3890,6 @@ static const ExprEvalResult* evaluateExp > } > > CXEvalResult clang_Cursor_Evaluate(CXCursor C) { > - if (clang_getCursorKind(C) == CXCursor_CompoundStmt) { > -const CompoundStmt *compoundStmt = > cast(getCursorStmt(C)); > -Expr *expr = nullptr; > -for (auto *bodyIterator : compoundStmt->body()) { > - if ((expr = dyn_cast(bodyIterator))) { > -break; > - } > -} > -if (expr) > - return const_cast( > - reinterpret_cast(evaluateExpr(expr, C))); > - } > - >const Decl *D = getCursorDecl(C); >if (D) { > const Expr *expr = nullptr; > @@ -3916,6 +3903,19 @@ CXEvalResult clang_Cursor_Evaluate(CXCur >evaluateExpr(const_cast(expr), C))); > return nullptr; >} > + > + const CompoundStmt *compoundStmt = > dyn_cast_or_null(getCursorStmt(C)); > + if (compoundStmt) { > +Expr *expr = nullptr; > +for (auto *bodyIterator : compoundStmt->body()) { > + if ((expr = dyn_cast(bodyIterator))) { > +break; > + } > +} > +if (expr) > + return const_cast( > + reinterpret_cast(evaluateExpr(expr, C))); > + } >return nullptr; > } > > > Modified: cfe/trunk/unittests/libclang/LibclangTest.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/libclang/LibclangTest.cpp?rev=336716=336715=336716=diff > > == > --- cfe/trunk/unittests/libclang/LibclangTest.cpp (original) > +++ cfe/trunk/unittests/libclang/LibclangTest.cpp Tue Jul 10 12:49:07 2018 > @@ -461,47 +461,6 @@ TEST_F(LibclangParseTest, AllSkippedRang >clang_disposeSourceRangeList(Ranges); > } > > -TEST_F(LibclangParseTest, EvaluateChildExpression) { > - std::string Main = "main.m"; > - WriteFile(Main, "#define kFOO @\"foo\"\n" > - "void foobar(void) {\n" > - " {kFOO;}\n" > - "}\n"); > - ClangTU = clang_parseTranslationUnit(Index, Main.c_str(), nullptr, 0, > nullptr, > - 0, TUFlags); > - > - CXCursor C = clang_getTranslationUnitCursor(ClangTU); > - clang_visitChildren( > - C, > - [](CXCursor cursor, CXCursor parent, > - CXClientData client_data) -> CXChildVisitResult { > -if (clang_getCursorKind(cursor) == CXCursor_FunctionDecl) { > - int numberedStmt = 0; > - clang_visitChildren( > - cursor, > - [](CXCursor cursor, CXCursor parent, > - CXClientData client_data) -> CXChildVisitResult { > -int = *((int *)client_data); > -if (clang_getCursorKind(cursor) == CXCursor_CompoundStmt) > { > - if (numberedStmt) { > -CXEvalResult RE = clang_Cursor_Evaluate(cursor); > -EXPECT_NE(RE, nullptr); > -EXPECT_EQ(clang_EvalResult_getKind(RE), > - CXEval_ObjCStrLiteral); > -return CXChildVisit_Break; > - } > - numberedStmt++; > -} > -return CXChildVisit_Recurse; > - }, > - ); > - EXPECT_EQ(numberedStmt, 1); > -} > -return CXChildVisit_Continue; > - }, > - nullptr); > -} > - > class LibclangReparseTest : public LibclangParseTest { > public: >void DisplayDiagnostics() { > > > ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r336716 - Revert r336590 "[libclang] evalute compound statement cursors before trying to evaluate"
Author: eugenis Date: Tue Jul 10 12:49:07 2018 New Revision: 336716 URL: http://llvm.org/viewvc/llvm-project?rev=336716=rev Log: Revert r336590 "[libclang] evalute compound statement cursors before trying to evaluate" New memory leaks in LibclangParseTest_EvaluateChildExpression_Test::TestBody() Modified: cfe/trunk/tools/libclang/CIndex.cpp cfe/trunk/unittests/libclang/LibclangTest.cpp Modified: cfe/trunk/tools/libclang/CIndex.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=336716=336715=336716=diff == --- cfe/trunk/tools/libclang/CIndex.cpp (original) +++ cfe/trunk/tools/libclang/CIndex.cpp Tue Jul 10 12:49:07 2018 @@ -3890,19 +3890,6 @@ static const ExprEvalResult* evaluateExp } CXEvalResult clang_Cursor_Evaluate(CXCursor C) { - if (clang_getCursorKind(C) == CXCursor_CompoundStmt) { -const CompoundStmt *compoundStmt = cast(getCursorStmt(C)); -Expr *expr = nullptr; -for (auto *bodyIterator : compoundStmt->body()) { - if ((expr = dyn_cast(bodyIterator))) { -break; - } -} -if (expr) - return const_cast( - reinterpret_cast(evaluateExpr(expr, C))); - } - const Decl *D = getCursorDecl(C); if (D) { const Expr *expr = nullptr; @@ -3916,6 +3903,19 @@ CXEvalResult clang_Cursor_Evaluate(CXCur evaluateExpr(const_cast(expr), C))); return nullptr; } + + const CompoundStmt *compoundStmt = dyn_cast_or_null(getCursorStmt(C)); + if (compoundStmt) { +Expr *expr = nullptr; +for (auto *bodyIterator : compoundStmt->body()) { + if ((expr = dyn_cast(bodyIterator))) { +break; + } +} +if (expr) + return const_cast( + reinterpret_cast(evaluateExpr(expr, C))); + } return nullptr; } Modified: cfe/trunk/unittests/libclang/LibclangTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/libclang/LibclangTest.cpp?rev=336716=336715=336716=diff == --- cfe/trunk/unittests/libclang/LibclangTest.cpp (original) +++ cfe/trunk/unittests/libclang/LibclangTest.cpp Tue Jul 10 12:49:07 2018 @@ -461,47 +461,6 @@ TEST_F(LibclangParseTest, AllSkippedRang clang_disposeSourceRangeList(Ranges); } -TEST_F(LibclangParseTest, EvaluateChildExpression) { - std::string Main = "main.m"; - WriteFile(Main, "#define kFOO @\"foo\"\n" - "void foobar(void) {\n" - " {kFOO;}\n" - "}\n"); - ClangTU = clang_parseTranslationUnit(Index, Main.c_str(), nullptr, 0, nullptr, - 0, TUFlags); - - CXCursor C = clang_getTranslationUnitCursor(ClangTU); - clang_visitChildren( - C, - [](CXCursor cursor, CXCursor parent, - CXClientData client_data) -> CXChildVisitResult { -if (clang_getCursorKind(cursor) == CXCursor_FunctionDecl) { - int numberedStmt = 0; - clang_visitChildren( - cursor, - [](CXCursor cursor, CXCursor parent, - CXClientData client_data) -> CXChildVisitResult { -int = *((int *)client_data); -if (clang_getCursorKind(cursor) == CXCursor_CompoundStmt) { - if (numberedStmt) { -CXEvalResult RE = clang_Cursor_Evaluate(cursor); -EXPECT_NE(RE, nullptr); -EXPECT_EQ(clang_EvalResult_getKind(RE), - CXEval_ObjCStrLiteral); -return CXChildVisit_Break; - } - numberedStmt++; -} -return CXChildVisit_Recurse; - }, - ); - EXPECT_EQ(numberedStmt, 1); -} -return CXChildVisit_Continue; - }, - nullptr); -} - class LibclangReparseTest : public LibclangParseTest { public: void DisplayDiagnostics() { ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits