kuilpd wrote:

> > This is just moving stuff around so that seems fine. Though, I wonder, 
> > could we just pass e.g. an `ArrayRef<Decl*>` to `computeEnumBits()`? The 
> > LLDB pr you linked seems to have an `SmallVector<EnumConstantDecl*>`, so 
> > that should be possible (I think it does require a `reinterpret_cast` from 
> > a `const Decl**` to a `const EnumConstantDecl**`, but we already do that in 
> > other places in Clang iirc).
> 
> The reason I suggested the template initially was because in LLDB's case we 
> don't have the `EnumConstantDecl`s in a container. We only have an 
> `EnumDecl`. So the plan was to pass the `enumerators()` iterator into 
> `computeEnumBits`. But if you know of a good way to turn the range into a 
> container that we can pass as an `ArrayRef`, or some non-template way of 
> passing both an `iterator_range` and `ArrayRef` into `computeEnumBits`, 
> that'd be great!

Yeah, `enumerator()` returns 
`llvm::iterator_range<specific_decl_iterator<EnumConstantDecl>>`, and couldn't 
find a good way to convert this to an `ArrayRef`.
I guess I could make a `SmallVector<EnumConstantDecl*>` and put the copy of 
pointers there at the point of their creation 
([here](https://github.com/llvm/llvm-project/blob/b581ad411d6e178300732410dd8850cd34543ac3/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp#L2373)),
 since the function return a `EnumConstantDecl`, then discard it.


https://github.com/llvm/llvm-project/pull/126096
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to