[PATCH] D49609: [isl] Typesafe user pointers
Siddharth via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 20 11:49:18 PDT 2018
bollu added a comment.
Looks good, I haven't looked too much into how `Any` works, which I will.
================
Comment at: lib/Analysis/ScopInfo.cpp:1210
+ auto *SAI = NewArrayId.get_user<ScopArrayInfo *>();
assert(SAI && "Must set a ScopArrayInfo");
----------------
I believe this assert can be removed?
================
Comment at: lib/Analysis/ScopInfo.cpp:2082
auto *Id = isl_set_get_dim_id(AssumptionCtx, isl_dim_param, u);
- auto *Param = static_cast<const SCEV *>(isl_id_get_user(Id));
- isl_id_free(Id);
+ auto *Param = isl::manage(Id).get_user<const SCEV *>();
----------------
`const auto *Param`?
================
Comment at: lib/CodeGen/IslNodeBuilder.cpp:295
isl::id Id = Set.get_tuple_id();
- auto *Stmt = static_cast<const ScopStmt *>(Id.get_user());
+ auto *Stmt = Id.get_user<const ScopStmt *>();
return addReferencesFromStmt(Stmt, UserPtr);
----------------
`const auto *`?
================
Comment at: lib/CodeGen/IslNodeBuilder.cpp:1051
if (!IDToValue.count(Id)) {
- auto *ParamSCEV = (const SCEV *)isl_id_get_user(Id);
+ auto *ParamSCEV = isl::manage_copy(Id).get_user<const SCEV *>();
Value *V = nullptr;
----------------
`const auto *`?
================
Comment at: lib/External/isl/include/isl/isl-noexceptions.h:6986
+ T *User = llvm::any_cast<T>(Any);
+ assert(User && "Tried to fetch wrong user type from isl_id");
+ return *User;
----------------
I don't know if I like an `assert` here. I wish there was someway to enforce this? Is the cost way to high to actually have an `if + report_fatal_error`?
Repository:
rPLO Polly
https://reviews.llvm.org/D49609
More information about the llvm-commits
mailing list