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 15:34:00 PST 2019
Fixed in r350680.
On Tue, 8 Jan 2019 at 15:24, Alex L <arphaman at gmail.com> 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 <arphaman at gmail.com> 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 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/7b79d7f8/attachment-0001.html>
More information about the cfe-commits
mailing list