[DeLICM] Export Known and Written to DeLICMTests. NFC.
This will allow unittesting of new functionality based on Known and Written. llvm-svn: 300211
This commit is contained in:
parent
a2acc11949
commit
72f3922534
|
@ -33,9 +33,11 @@ llvm::Pass *createDeLICMPass();
|
|||
///
|
||||
/// Used by unittesting.
|
||||
bool isConflicting(isl::union_set ExistingOccupied,
|
||||
isl::union_set ExistingUnused, isl::union_set ExistingWrites,
|
||||
isl::union_set ExistingUnused, isl::union_map ExistingKnown,
|
||||
isl::union_map ExistingWrites,
|
||||
isl::union_set ProposedOccupied,
|
||||
isl::union_set ProposedUnused, isl::union_set ProposedWrites,
|
||||
isl::union_set ProposedUnused, isl::union_map ProposedKnown,
|
||||
isl::union_map ProposedWrites,
|
||||
llvm::raw_ostream *OS = nullptr, unsigned Indent = 0);
|
||||
} // namespace polly
|
||||
|
||||
|
|
|
@ -536,6 +536,14 @@ public:
|
|||
checkConsistency();
|
||||
}
|
||||
|
||||
/// Create a new object with the given members.
|
||||
Knowledge(isl::union_set Occupied, isl::union_set Unused,
|
||||
isl::union_map Known, isl::union_map Written)
|
||||
: Occupied(std::move(Occupied)), Unused(std::move(Unused)),
|
||||
Known(std::move(Known)), Written(std::move(Written)) {
|
||||
checkConsistency();
|
||||
}
|
||||
|
||||
/// Return whether this object was not default-constructed.
|
||||
bool isUsable() const { return (Occupied || Unused) && Known && Written; }
|
||||
|
||||
|
@ -1806,17 +1814,16 @@ INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass)
|
|||
INITIALIZE_PASS_END(DeLICM, "polly-delicm", "Polly - DeLICM/DePRE", false,
|
||||
false)
|
||||
|
||||
bool polly::isConflicting(isl::union_set ExistingOccupied,
|
||||
isl::union_set ExistingUnused,
|
||||
isl::union_set ExistingWrites,
|
||||
isl::union_set ProposedOccupied,
|
||||
isl::union_set ProposedUnused,
|
||||
isl::union_set ProposedWrites, llvm::raw_ostream *OS,
|
||||
unsigned Indent) {
|
||||
bool polly::isConflicting(
|
||||
isl::union_set ExistingOccupied, isl::union_set ExistingUnused,
|
||||
isl::union_map ExistingKnown, isl::union_map ExistingWrites,
|
||||
isl::union_set ProposedOccupied, isl::union_set ProposedUnused,
|
||||
isl::union_map ProposedKnown, isl::union_map ProposedWrites,
|
||||
llvm::raw_ostream *OS, unsigned Indent) {
|
||||
Knowledge Existing(std::move(ExistingOccupied), std::move(ExistingUnused),
|
||||
std::move(ExistingWrites));
|
||||
std::move(ExistingKnown), std::move(ExistingWrites));
|
||||
Knowledge Proposed(std::move(ProposedOccupied), std::move(ProposedUnused),
|
||||
std::move(ProposedWrites));
|
||||
std::move(ProposedKnown), std::move(ProposedWrites));
|
||||
|
||||
return Knowledge::isConflicting(Existing, Proposed, OS, Indent);
|
||||
}
|
||||
|
|
|
@ -109,21 +109,30 @@ bool checkIsConflictingNonsymmetric(KnowledgeStr Existing,
|
|||
completeLifetime(Universe, ExistingOccupied, ExistingUnused);
|
||||
completeLifetime(Universe, ProposedOccupied, ProposedUnused);
|
||||
|
||||
auto Result =
|
||||
isConflicting(ExistingOccupied, ExistingUnused, ExistingWritten,
|
||||
ProposedOccupied, ProposedUnused, ProposedWritten);
|
||||
auto ParamSpace = isl::manage(isl_union_set_get_space(Universe.keep()));
|
||||
auto EmptyUnionMap = isl::union_map::empty(ParamSpace);
|
||||
auto ExistingWrittenMap =
|
||||
isl::manage(isl_union_map_from_domain(ExistingWritten.copy()));
|
||||
auto ProposedWrittenMap =
|
||||
isl::manage(isl_union_map_from_domain(ProposedWritten.copy()));
|
||||
auto Result = isConflicting(
|
||||
ExistingOccupied, ExistingUnused, EmptyUnionMap, ExistingWrittenMap,
|
||||
ProposedOccupied, ProposedUnused, EmptyUnionMap, ProposedWrittenMap);
|
||||
|
||||
// isConflicting does not require ExistingOccupied nor ProposedUnused and are
|
||||
// implicitly assumed to be the remainder elements. Test the implicitness as
|
||||
// well.
|
||||
EXPECT_EQ(Result,
|
||||
isConflicting(ExistingOccupied, ExistingUnused, ExistingWritten,
|
||||
ProposedOccupied, {}, ProposedWritten));
|
||||
isConflicting(ExistingOccupied, ExistingUnused, EmptyUnionMap,
|
||||
ExistingWrittenMap, ProposedOccupied, {},
|
||||
EmptyUnionMap, ProposedWrittenMap));
|
||||
EXPECT_EQ(Result,
|
||||
isConflicting({}, ExistingUnused, ExistingWritten, ProposedOccupied,
|
||||
ProposedUnused, ProposedWritten));
|
||||
EXPECT_EQ(Result, isConflicting({}, ExistingUnused, ExistingWritten,
|
||||
ProposedOccupied, {}, ProposedWritten));
|
||||
isConflicting({}, ExistingUnused, EmptyUnionMap, ExistingWrittenMap,
|
||||
ProposedOccupied, ProposedUnused, EmptyUnionMap,
|
||||
ProposedWrittenMap));
|
||||
EXPECT_EQ(Result, isConflicting({}, ExistingUnused, EmptyUnionMap,
|
||||
ExistingWrittenMap, ProposedOccupied, {},
|
||||
EmptyUnionMap, ProposedWrittenMap));
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue