<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, May 29, 2014 at 5:57 PM, Nico Rieck <span dir="ltr"><<a href="mailto:nico.rieck@gmail.com" target="_blank">nico.rieck@gmail.com</a>></span> wrote:<br>
<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 class="">On 29.05.2014 23:25, Richard Smith wrote:<br>

> I find it a bit weird that we care in CodeGen whether a dllimport function<br>
> is marked as 'inline'. I would expect that either Sema should detect the<br>
> attribute has no effect and discard it, or it should keep it (and in the<br>
> latter case, CodeGen should respect it and not care whether the function is<br>
> marked 'inline'). Is there some reason that doesn't work?<br>
<br>
</div>The first patch is bit backwards and unnecessarily complex. MSVC emits<br>
non-imported specializations with ODR linkage.<br>
<br>
So a simpler way to deal with this would be to just do what this mail's<br>
subject says and make such a specialization implictly inline which<br>
resolves correctly to available_externally without doing anything<br>
further. New patch attached.</blockquote><div><br></div><div>Whether this is correct or not depends on the answer to my other question, that you snipped from your reply:</div><div><br></div><div>"what linkage would MSVC give to an explicit specialization of a function template under normal circumstances (no dllimport/dllexport attributes)? Does it treat them as mergeable, like an inline function, or as a strong definition?"<br>
</div></div></div></div>