a.elovikov marked 3 inline comments as done.
a.elovikov added inline comments.


================
Comment at: clang/lib/Basic/Targets/X86.cpp:1071
+    assert(llvm::is_contained(Priorities, Priority) &&
+           "Priorites don't form consequtive range!");
+  }
----------------
erichkeane wrote:
> erichkeane wrote:
> > craig.topper wrote:
> > > erichkeane wrote:
> > > > If all you care about is whether they are a consecutive range, why not 
> > > > just use `std::is_sorted`?
> > > The Priorities array isn't sorted. It's just whatever order the 
> > > X86_FEATURE_COMPAT lists them.
> > > 
> > > The values need to be unique and in a contiguous range.
> > Then I'd suggest something like: `llvm::sort`, then `assert *(end - 1) - 
> > *begin == std::distance(begin, end) && llvm::adjacent_find` or something.
> > 
> > I definitely didn't get that point out of this odd for-loop and 
> > is_contained.  There is perhaps at trick with std::min and std::max too.  
> > Though, it looks like this is perhaps trying to prove that the range is 0 
> > to the the array size, right?  In that case, perhaps there is something 
> > easier.
> > 
> > Also a nit, it is `consecutive` in that case.
> Actually...
> 
>     std::array<unsigned, array_lengthof(Priorities) -1> HelperList;
>     std::iota(HelperList.begin(), HelperList.end());
>     std::is_permutation(HelperList.begin(), HelperList.end(),  
>             std::begin(Priorities), std::end(Priorities));
I thought about std::sort + std::iota + std::equal but wasn't sure how readable 
that would be with the extra helper object (range version isn't available in 
C++14) and hoped my version would be more compact.

Since it wasn't obvious what it does I shamelessly copied your suggestion (and 
learnt about std::is_permutation and array_lengthof when doing it).

Thanks!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D108151

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

Reply via email to