dblaikie added a comment.

In D67647#1674745 <https://reviews.llvm.org/D67647#1674745>, @comex wrote:

> Here's a new version of the patch that uses iterator ranges instead of 
> `ArrayRef`, to avoid adding new uses of `CallExpr::getArgs()` in case it has 
> to be removed in the future due to the strict aliasing issue.


Not related to the strict aliasing issue - just seemed like it'd be tidier than 
reconstructing ranges manually from getArgs and getNumArgs.

> To support this, the following additional changes are included:

I wasn't expecting it to involve all this work - but instead to change 
"arguments()" to return ArrayRef. Though perhaps you didn't go that route to 
allow future fixes to the strict aliasing (by having an adapting iterator - or 
perhaps arguments() already uses such an iterator that doesn't hit the strict 
aliasing issue?) needing to do even more cleaunp work?

> 
> 
> - Fix `CastIterator`'s use of `iterator_adaptor_base` so that `operator[]` 
> isn't broken.
> - Add an `operator[]` implementation to `iterator_range`.

I'm not sure that's appropriate - not all types with begin() and end() (even 
those with random access iterators) would have op[], so it doesn't seem 
appropriate to add it/depend on it?

> - Improve the existing `llvm::drop_begin` helper to assert that it doesn't go 
> out of bounds.  (The implementation would be a lot less ugly if we could use 
> C++17 features; oh well.)




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67647/new/

https://reviews.llvm.org/D67647



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to