r336716 - Revert r336590 "[libclang] evalute compound statement cursors before trying to evaluate"
Alex L via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 8 14:38:32 PST 2019
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 at 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&view=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&r1=336715&r2=336716&view=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<CompoundStmt>(getCursorStmt(C));
> - Expr *expr = nullptr;
> - for (auto *bodyIterator : compoundStmt->body()) {
> - if ((expr = dyn_cast<Expr>(bodyIterator))) {
> - break;
> - }
> - }
> - if (expr)
> - return const_cast<CXEvalResult>(
> - reinterpret_cast<const void *>(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 *>(expr), C)));
> return nullptr;
> }
> +
> + const CompoundStmt *compoundStmt =
> dyn_cast_or_null<CompoundStmt>(getCursorStmt(C));
> + if (compoundStmt) {
> + Expr *expr = nullptr;
> + for (auto *bodyIterator : compoundStmt->body()) {
> + if ((expr = dyn_cast<Expr>(bodyIterator))) {
> + break;
> + }
> + }
> + if (expr)
> + return const_cast<CXEvalResult>(
> + reinterpret_cast<const void *>(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&r1=336715&r2=336716&view=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 &numberedStmt = *((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;
> - },
> - &numberedStmt);
> - EXPECT_EQ(numberedStmt, 1);
> - }
> - return CXChildVisit_Continue;
> - },
> - nullptr);
> -}
> -
> class LibclangReparseTest : public LibclangParseTest {
> public:
> void DisplayDiagnostics() {
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190108/dbb15b48/attachment.html>
More information about the cfe-commits
mailing list