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
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits