[polly] r257904 - Do not check JSON alignment of scalar accesses
Michael Kruse via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 15 08:49:34 PST 2016
Author: meinersbur
Date: Fri Jan 15 10:49:33 2016
New Revision: 257904
URL: http://llvm.org/viewvc/llvm-project?rev=257904&view=rev
Log:
Do not check JSON alignment of scalar accesses
When importing a schedule, do not verify the load/store alignment of
scalar accesses. Scalar loads/store are always created newly in code
generation with no alignment restrictions. Previously, scalar alignment
was checked if the access instruction happened to be a LoadInst or
StoreInst, but only its array (MK_Array) access is relevant.
This will be implicitly unit-tested when the access instruction of a
value read can be nullptr.
Differential Revision: http://reviews.llvm.org/D15680
Modified:
polly/trunk/lib/Exchange/JSONExporter.cpp
Modified: polly/trunk/lib/Exchange/JSONExporter.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Exchange/JSONExporter.cpp?rev=257904&r1=257903&r2=257904&view=diff
==============================================================================
--- polly/trunk/lib/Exchange/JSONExporter.cpp (original)
+++ polly/trunk/lib/Exchange/JSONExporter.cpp Fri Jan 15 10:49:33 2016
@@ -304,33 +304,35 @@ bool JSONImporter::runOnScop(Scop &S) {
isl_id *OutId = isl_map_get_tuple_id(currentAccessMap, isl_dim_out);
newAccessMap = isl_map_set_tuple_id(newAccessMap, isl_dim_out, OutId);
- // We keep the old alignment, thus we cannot allow accesses to memory
- // locations that were not accessed before if the alignment of the access
- // is not the default alignment.
- bool SpecialAlignment = true;
- if (LoadInst *LoadI = dyn_cast<LoadInst>(MA->getAccessInstruction())) {
- SpecialAlignment =
- DL.getABITypeAlignment(LoadI->getType()) != LoadI->getAlignment();
- } else if (StoreInst *StoreI =
- dyn_cast<StoreInst>(MA->getAccessInstruction())) {
- SpecialAlignment =
- DL.getABITypeAlignment(StoreI->getValueOperand()->getType()) !=
- StoreI->getAlignment();
- }
+ if (MA->isArrayKind()) {
+ // We keep the old alignment, thus we cannot allow accesses to memory
+ // locations that were not accessed before if the alignment of the
+ // access is not the default alignment.
+ bool SpecialAlignment = true;
+ if (LoadInst *LoadI = dyn_cast<LoadInst>(MA->getAccessInstruction())) {
+ SpecialAlignment =
+ DL.getABITypeAlignment(LoadI->getType()) != LoadI->getAlignment();
+ } else if (StoreInst *StoreI =
+ dyn_cast<StoreInst>(MA->getAccessInstruction())) {
+ SpecialAlignment =
+ DL.getABITypeAlignment(StoreI->getValueOperand()->getType()) !=
+ StoreI->getAlignment();
+ }
- if (SpecialAlignment) {
- isl_set *newAccessSet = isl_map_range(isl_map_copy(newAccessMap));
- isl_set *currentAccessSet =
- isl_map_range(isl_map_copy(currentAccessMap));
- bool isSubset = isl_set_is_subset(newAccessSet, currentAccessSet);
- isl_set_free(newAccessSet);
- isl_set_free(currentAccessSet);
+ if (SpecialAlignment) {
+ isl_set *newAccessSet = isl_map_range(isl_map_copy(newAccessMap));
+ isl_set *currentAccessSet =
+ isl_map_range(isl_map_copy(currentAccessMap));
+ bool isSubset = isl_set_is_subset(newAccessSet, currentAccessSet);
+ isl_set_free(newAccessSet);
+ isl_set_free(currentAccessSet);
- if (!isSubset) {
- errs() << "JScop file changes the accessed memory\n";
- isl_map_free(currentAccessMap);
- isl_map_free(newAccessMap);
- return false;
+ if (!isSubset) {
+ errs() << "JScop file changes the accessed memory\n";
+ isl_map_free(currentAccessMap);
+ isl_map_free(newAccessMap);
+ return false;
+ }
}
}
More information about the llvm-commits
mailing list