aaron.ballman added inline comments.

================
Comment at: clang/lib/Sema/SemaOverload.cpp:9041-9044
+      // (allowing splatting the scalar to a vector).
+      for (unsigned Candidate = 0; Candidate < 2; ++Candidate) {
+        for (QualType Vec1Ty : CandidateTypes[Candidate].vector_types()) {
+          for (QualType Vec2Ty : CandidateTypes[Candidate].vector_types()) {
----------------
porglezomp wrote:
> aaron.ballman wrote:
> > I'm a bit confused -- the comment says this is to allow splatting the 
> > scalar to a vector, but... what is the scalar type in these loops?
> Right, so my goal here is to generate the two vector-operand overload 
> candidates so that overload resolution can pick one of those and then apply 
> the implicit scalar->vector conversion with the splat. I //think// this is 
> the correct approach (it's based on how the compound assignment operators 
> already handle this) but I need to improve my comments here.
> 
> Also, how do we like the loop here for trying both sides, as opposed to 
> duplicating the code? This is really acting as an `if left operand / else if 
> right operand` to avoid duplicating the code but I was worried writing it 
> that the loop obscures the intent. Maybe that's also just "make the comment 
> better" or maybe that part is clear enough.
> Right, so my goal here is to generate the two vector-operand overload 
> candidates so that overload resolution can pick one of those and then apply 
> the implicit scalar->vector conversion with the splat. I think this is the 
> correct approach (it's based on how the compound assignment operators already 
> handle this) but I need to improve my comments here.

Huh... that code looks equally as suspicious to me as well (for the same 
reason, it's looping over the same vector types twice). @fhahn authored that 
code, so perhaps he can educate me on what I'm missing.

> Also, how do we like the loop here for trying both sides, as opposed to 
> duplicating the code? This is really acting as an if left operand / else if 
> right operand to avoid duplicating the code but I was worried writing it that 
> the loop obscures the intent. Maybe that's also just "make the comment 
> better" or maybe that part is clear enough.

It too me a hot minute to figure out what the code was doing, but once I picked 
up on this being a way to avoid code duplication, I was happy enough with it. 
It might be slightly more clear to refactor to use a lambda for the actual 
logic and then you can do if left operand/else without duplication.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D151060

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

Reply via email to