philip.pfaffe added a comment. IMO passing void* as an opaque ID along with the name is fine. Passing the PassConcept by reference would degrade layering, since it lives in IR, not in Passes like the rest of this. Repository: rL LLVM https://reviews.llvm.org/D47858