<div class="gmail_quote">On 6 July 2011 15:39, Douglas Gregor <span dir="ltr"><<a href="mailto:dgregor@apple.com">dgregor@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div style="word-wrap:break-word"><div><div></div><div class="h5"><br><div><div>On Jul 6, 2011, at 1:08 PM, Nick Lewycky wrote:</div><br><blockquote type="cite">The attached patch fixes PR10233 and is also available for review on <a href="http://codereview.appspot.com/4634122/" target="_blank">http://codereview.appspot.com/4634122/</a> as well as being attached.<div>

<br></div><div>The problem is that codegen knows it doesn't need to emit the inline function when it first encounters it, then when it sees the redeclaration it sees no definition on it and ignores that. The fix works by double-checking on each redeclaration (in C99 mode without gnu inline semantics) that this isn't the first redecl of an inline method. If it is, then we remove it from DeferredDecls (it won't be in DeferredDeclsToEmit), and emit it immediately.</div>



<div><br></div><div>Please review!</div></blockquote><br></div></div></div><div>The added code in ASTContext.cpp and CodeGenModule.cpp is basically the same. How about abstracting this into a Decl or ASTContext routine "doesFunctionDeclatationForceExternallyVisibleDefinition()" (or something less long-winded)?</div>

</div></blockquote><div><br></div><div>Sure, sounds good. Updated patch attached.</div><div><br></div><div>Nick</div><div><br></div></div>