vsapsai added inline comments.

================
Comment at: clang/lib/CodeGen/CGCall.cpp:2321
+          ArgI.getCoerceToType() ==
+              ConvertType(isPromoted ? Ty : Arg->getType()) &&
           ArgI.getDirectOffset() == 0) {
----------------
ahatanak wrote:
> Maybe a comment explaining why different types are passed depending on the 
> value of isPromoted?
My reasoning was that for promoted arguments `emitArgumentDemotion` is 
responsible for bridging gaps between `Ty` and `Arg->getType()`, so it should 
be enough for `ArgI.getCoerceToType()` and `Ty` to match. But this explanation 
is woefully unsuitable for the comment.

After some more thinking I start doubting if some other s/Ty/Arg->getType()/ 
changes are entirely correct.


================
Comment at: clang/lib/CodeGen/CGCall.cpp:2469
         if (isPromoted)
           V = emitArgumentDemotion(*this, Arg, V);
         ArgVals.push_back(ParamValue::forDirect(V));
----------------
For example, here. If `V` is of type `Arg->getType()`, will 
`emitArgumentDemotion` do anything? Because there you have
```
if (value->getType() == varType) return value;
```

I'll keep digging and if meanwhile anybody has comments on this situation, I'll 
be glad to hear them.


https://reviews.llvm.org/D41311



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

Reply via email to