forked from OSchip/llvm-project
[Polly] Refabricating IsOutermostParallel() from Integer Set Libarary(ISL) to take the C++ wrapper
Polly use algorithms from the Integer Set Library (isl), which is a library written in C and which is incompatible with the rest of the LLVM as it is written in C++. Changes made: * Refabricating IsOutermostParallel() to take C++ bindings instead of reference-counting in C isl lib. * Addition of manage_copy() to be used as reference for C objects instead of IsOutermostParallel() Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D97751
This commit is contained in:
parent
f7e675b3da
commit
50e34497ac
|
@ -145,7 +145,7 @@ public:
|
|||
static bool isParallel(__isl_keep isl_ast_node *Node);
|
||||
|
||||
/// Is this loop an outermost parallel loop?
|
||||
static bool isOutermostParallel(__isl_keep isl_ast_node *Node);
|
||||
static bool isOutermostParallel(const isl::ast_node &Node);
|
||||
|
||||
/// Is this loop an innermost parallel loop?
|
||||
static bool isInnermostParallel(const isl::ast_node &Node);
|
||||
|
|
|
@ -186,7 +186,7 @@ static isl_printer *cbPrintFor(__isl_take isl_printer *Printer,
|
|||
|
||||
if (IslAstInfo::isExecutedInParallel(Node))
|
||||
Printer = printLine(Printer, OmpPragmaStr);
|
||||
else if (IslAstInfo::isOutermostParallel(Node))
|
||||
else if (IslAstInfo::isOutermostParallel(isl::manage_copy(Node)))
|
||||
Printer = printLine(Printer, KnownParallelStr + BrokenReductionsStr);
|
||||
|
||||
isl_pw_aff_free(DD);
|
||||
|
@ -483,7 +483,7 @@ static void walkAstForStatistics(__isl_keep isl_ast_node *Ast) {
|
|||
NumParallel++;
|
||||
if (IslAstInfo::isInnermostParallel(isl::manage_copy(Node)))
|
||||
NumInnermostParallel++;
|
||||
if (IslAstInfo::isOutermostParallel(Node))
|
||||
if (IslAstInfo::isOutermostParallel(isl::manage_copy(Node)))
|
||||
NumOutermostParallel++;
|
||||
if (IslAstInfo::isReductionParallel(Node))
|
||||
NumReductionParallel++;
|
||||
|
@ -602,7 +602,7 @@ bool IslAstInfo::isInnermost(__isl_keep isl_ast_node *Node) {
|
|||
|
||||
bool IslAstInfo::isParallel(__isl_keep isl_ast_node *Node) {
|
||||
return IslAstInfo::isInnermostParallel(isl::manage_copy(Node)) ||
|
||||
IslAstInfo::isOutermostParallel(Node);
|
||||
IslAstInfo::isOutermostParallel(isl::manage_copy(Node));
|
||||
}
|
||||
|
||||
bool IslAstInfo::isInnermostParallel(const isl::ast_node &Node) {
|
||||
|
@ -610,8 +610,8 @@ bool IslAstInfo::isInnermostParallel(const isl::ast_node &Node) {
|
|||
return Payload && Payload->IsInnermostParallel;
|
||||
}
|
||||
|
||||
bool IslAstInfo::isOutermostParallel(__isl_keep isl_ast_node *Node) {
|
||||
IslAstUserPayload *Payload = getNodePayload(isl::manage_copy(Node));
|
||||
bool IslAstInfo::isOutermostParallel(const isl::ast_node &Node) {
|
||||
IslAstUserPayload *Payload = getNodePayload(Node);
|
||||
return Payload && Payload->IsOutermostParallel;
|
||||
}
|
||||
|
||||
|
@ -636,7 +636,8 @@ bool IslAstInfo::isExecutedInParallel(__isl_keep isl_ast_node *Node) {
|
|||
if (!PollyParallelForce && isInnermost(Node))
|
||||
return false;
|
||||
|
||||
return isOutermostParallel(Node) && !isReductionParallel(Node);
|
||||
return isOutermostParallel(isl::manage_copy(Node)) &&
|
||||
!isReductionParallel(Node);
|
||||
}
|
||||
|
||||
__isl_give isl_union_map *
|
||||
|
|
Loading…
Reference in New Issue