<div dir="ltr">Last problem:<div><br></div><div><div style="font-family:arial,sans-serif;font-size:13px"><div class="im"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div><div><br></div><div><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_extra">2. In Sema/SemaExpr.cpp, ActOnCallExpr():</div><div>I admit that I'm not very thorough about this one...</div>
<div>But here the CheckPlaceholderExpr() call does solve the follwing problem.</div><div>=== Code Start ===</div><div><div>// If compiled with -ggdb, clang will crash and saying something about</div><div>// "unexpected builtin-type" in some CG code.</div>
<div><br></div><div>struct S2 {</div><div><span style="white-space:pre-wrap">       </span>template <class T></div><div><span style="white-space:pre-wrap"> </span>void f(T t) {}</div><div>};</div><div><br></div><div>template <class T></div>
<div>struct S</div><div>{</div><div><span style="white-space:pre-wrap">   </span>__declspec(property(get=GetV)) int V;</div><div><span style="white-space:pre-wrap">    </span>int GetV() { return 123; }</div><div><span style="white-space:pre-wrap">       </span>void f() { S2 s2; s2.f(V); }</div>
<div>};</div><div><br></div><div>int main() {</div><div><span style="white-space:pre-wrap">     </span>S<int> s;</div><div><span style="white-space:pre-wrap">  </span>s.f();</div><div>}</div></div><div>=== Code End ===</div>
</div></div></blockquote><div><br></div></div>Ah, I think the problem here is that overload resolution and especially</div><div>template argument deduction aren't lowering out placeholder types.  Please</div><div>hoist this loop out of the C++ block (for obscure reasons; just trust me)</div>
<div>and check:</div><div>  hasPlaceholderType(BuiltinType::PseudoObject)</div><div>instead of checking for a particular expression kind.</div><div><br></div><div>And please add this as a test case. :)</div></div></blockquote>
</div></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style>This change leads to a test failure:</div><div style>test/SemaObjc/property-user-setter.m, Line 88:</div><div style>void g(int); // expected-note {{passing argument to parameter here}}<br>
</div><div style>this note is no longer printed.</div><div style>If it's fine, wen can just remove the expected-note comment, but I don't know if it's appropriate.</div><div style><br></div><div style>However, patch attached.</div>
<div class="im" style="font-family:arial,sans-serif;font-size:13px"></div></div></div>