This is an archive of the discontinued LLVM Phabricator instance.

[Polly] Refactoring IsInnermostParallel() in ISL to take the C++ wrapper object. NFC
ClosedPublic

Authored by QwertycowMoo on Feb 24 2021, 4:36 PM.

Details

Summary

Currently, the IslAst library is a C library that would be incompatible with the rest of the LLVM because LLVM is written in C++.
I took one function, IsInnermostParallel(), and refactored it so that it would take the C++ wrapper object instead of using reference counters with the C ISL library. As well, all the references that use IsInnermostParallel() will use manage_copy() since they are still expecting the C object.

Diff Detail

Event Timeline

QwertycowMoo created this revision.Feb 24 2021, 4:36 PM
QwertycowMoo requested review of this revision.Feb 24 2021, 4:36 PM
Herald added a project: Restricted Project. · View Herald TranscriptFeb 24 2021, 4:36 PM
Meinersbur requested changes to this revision.Feb 25 2021, 9:23 AM

The pre-merge check failed. You can find the error in its log (Usually the pre-merge check directly adds the error into this review, don't know why this did not happen here):

[3036/3231] Building CXX object tools/polly/lib/CMakeFiles/obj.Polly.dir/CodeGen/IslNodeBuilder.cpp.o
FAILED: tools/polly/lib/CMakeFiles/obj.Polly.dir/CodeGen/IslNodeBuilder.cpp.o
CCACHE_CPP2=yes CCACHE_HASHDIR=yes /usr/bin/ccache /usr/bin/clang++ -DBUILD_EXAMPLES -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Itools/polly/lib -I/mnt/disks/ssd0/agent/llvm-project/polly/lib -Itools/polly/include -I/mnt/disks/ssd0/agent/llvm-project/polly/lib/External -I/mnt/disks/ssd0/agent/llvm-project/polly/lib/External/pet/include -I/mnt/disks/ssd0/agent/llvm-project/polly/lib/External/isl/include -Itools/polly/lib/External/isl/include -I/mnt/disks/ssd0/agent/llvm-project/polly/include -Iinclude -I/mnt/disks/ssd0/agent/llvm-project/llvm/include -gmlt -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fdiagnostics-color -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -O3   -fno-exceptions -fno-rtti -UNDEBUG -std=c++14 -MD -MT tools/polly/lib/CMakeFiles/obj.Polly.dir/CodeGen/IslNodeBuilder.cpp.o -MF tools/polly/lib/CMakeFiles/obj.Polly.dir/CodeGen/IslNodeBuilder.cpp.o.d -o tools/polly/lib/CMakeFiles/obj.Polly.dir/CodeGen/IslNodeBuilder.cpp.o -c /mnt/disks/ssd0/agent/llvm-project/polly/lib/CodeGen/IslNodeBuilder.cpp
/mnt/disks/ssd0/agent/llvm-project/polly/lib/CodeGen/IslNodeBuilder.cpp:765:49: error: reference to type 'const isl::ast_node' could not bind to an lvalue of type 'isl_ast_node *'
  if (Vector && IslAstInfo::isInnermostParallel(For) &&
                                                ^~~
/mnt/disks/ssd0/agent/llvm-project/polly/include/polly/CodeGen/IslAst.h:151:56: note: passing argument to parameter 'Node' here
  static bool isInnermostParallel(const isl::ast_node &Node);
                                                       ^
1 error generated.

I also applied this patch locally and the same error occurs with gcc as well as msvc. Did you maybe forget to git add IslNodeBuilder.cpp a change into the commit? Could you fix this and then update the diff of this Phabricator review?

This revision now requires changes to proceed.Feb 25 2021, 9:23 AM

Added IslNodeBuilder.cpp to the diff, required for build.
Just forgot it when creating the diff

Meinersbur accepted this revision.Feb 26 2021, 2:46 PM

LGTM, thanks!

Would you like me to push the commit to main?

This revision is now accepted and ready to land.Feb 26 2021, 2:46 PM

Great! Go ahead and commit then!