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