[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