<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Feb 19, 2014 at 12:52 PM, suyog sarda <span dir="ltr"><<a href="mailto:sardask01@gmail.com" target="_blank">sardask01@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Thanks Richard for the review. Even i felt that cv qualifier checking and setting is not suitable (though the standard 13.1/3 is specifically related to CV qualifiers). Earlier i was checking CV qualifiers and setting type, which obviously failed for function templates. And i agree to your point that if the parameter is not dependent then set the type as in instantiated function. <br>
<br></div>In that case, do we still need to check if the parameters are CV qualified alongwith checking if parameter is dependent? I am attaching a patch where we do not check if the parameters are CV qualified but only checks if it is not dependent and then set the type. This patch works for the test case in the bug with no regression. Also, if we are not checking CV qualifiers and just checking only dependent type then is it feasible to put comment regarding standard 13.1/3? How should comment look if above patch is fine.<br>
</div></div></div></div></blockquote><div><br></div><div>The approach in the patch looks OK. I don't think referencing 13.1/3 is worthwhile: it's reasonable to expect that anyone reading the Clang source knows that parameter declarations in function redeclarations can differ in top-level cv-qualifiers. What's worth pointing out here is (1) that we need the type to match the pattern we're instantiating, and (2) that we don't need to do this for dependent types because those shouldn't differ in cv-qualifiers (with a FIXME that we currently allow dependent types with different cv-qualifeirs to be treated as redeclarations).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div></div>Also, i am pasting test case from the bug itself. Please let me know which file to put it in. I cannot think of a negative test case for this bug.<br>
<br></div>Your help is greatly appreciated.<br><br></div>Test case :<div class=""><br>
<br><pre><i>struct B
{
void f(const int);
};
void B::f(int x)
{
x = 0;
}
void f()
{
B b;
b.f(0);
}</i></pre></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><div class="gmail_quote"></div></div></div></div></blockquote><div>This testcase doesn't look right: you need to use a template to trigger the issue.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><div class="gmail_quote">On Wed, Feb 19, 2014 at 12:26 AM, Richard Smith <span dir="ltr"><<a href="mailto:metafoo@gmail.com" target="_blank">metafoo@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This patch needs testcases.<div><br></div><div><div>Also, the way in which you're updating the type of the parameter doesn't look correct -- there's no reason to think that the qualifiers will be local.</div>
</div>
<div><br></div><div>We discussed cases like this at the WG21 meeting in Issaquah last week, and decided that cv-stripping should *not* be applied to dependent parameter types when determining whether two function templates are redeclarations. Therefore:</div>
<div><br></div><div> template<typename T> void f(T);</div><div> template<typename T> void f(const T);</div><div><br></div><div>... are not redeclarations (because, for instance, they have different parameter types when T = int[]).</div>
<div><br></div><div>That makes this problem easier to fix: if the parameter type within PatternDecl is not dependent, set the type of the parameter in the instantiated function to that type. Otherwise, leave it alone, since we already know it will match.</div>
<div><div>
<br><div>On Tue Feb 18 2014 at 6:02:55 AM, suyog sarda <<a href="mailto:sardask01@gmail.com" target="_blank">sardask01@gmail.com</a>> wrote:</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Gentle Ping !! Please help in reviewing the patch for bug 18275.</div><div dir="ltr"><br><div><br clear="all"><br>-- <br>With regards,<br>Suyog Sarda<br>
</div></div></blockquote>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>With regards,<br>Suyog Sarda<br>
</div>
</div></div></blockquote></div><br></div></div>