[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cfe-commits
Subject:    Re: r242973 - Downgrade error about adding 'dllimport' to used free function to warning (PR24215)
From:       Richard Smith <richard () metafoo ! co ! uk>
Date:       2015-07-27 20:23:47
Message-ID: CAOfiQqkO65fBL=HBQwqGTOaYpaV4ne2UGL+LDJKfsMyDp4P5EA () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Approved.

On Mon, Jul 27, 2015 at 1:20 PM, Hans Wennborg <hans@chromium.org> wrote:

> Ping?
> 
> On Thu, Jul 23, 2015 at 4:45 PM, Hans Wennborg <hans@chromium.org> wrote:
> > This isn't fixing a regression, but would be nice to have in 3.7 I think.
> > 
> > Richard, is this OK for merging?
> > 
> > On Wed, Jul 22, 2015 at 4:54 PM, Hans Wennborg <hans@hanshq.net> wrote:
> > > Author: hans
> > > Date: Wed Jul 22 18:54:51 2015
> > > New Revision: 242973
> > > 
> > > URL: http://llvm.org/viewvc/llvm-project?rev=242973&view=rev
> > > Log:
> > > Downgrade error about adding 'dllimport' to used free function to
> warning (PR24215)
> > > 
> > > The code will still work as it can reference the function via its thunk.
> > > 
> > > Modified:
> > > cfe/trunk/lib/Sema/SemaDecl.cpp
> > > cfe/trunk/test/Sema/dllimport.c
> > > 
> > > Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
> > > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=242973&r1=242972&r2=242973&view=diff
> 
> > > 
> ==============================================================================
> > > --- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
> > > +++ cfe/trunk/lib/Sema/SemaDecl.cpp Wed Jul 22 18:54:51 2015
> > > @@ -5368,10 +5368,9 @@ static void checkDLLAttributeRedeclarati
> > > bool AddsAttr = !(OldImportAttr || OldExportAttr) && HasNewAttr;
> > > 
> > > if (AddsAttr && !IsSpecialization && !OldDecl->isImplicit()) {
> > > -    // If the declaration hasn't been used yet, allow with a warning
> for
> > > -    // free functions and global variables.
> > > +    // Allow with a warning for free functions and global variables.
> > > bool JustWarn = false;
> > > -    if (!OldDecl->isUsed() && !OldDecl->isCXXClassMember()) {
> > > +    if (!OldDecl->isCXXClassMember()) {
> > > auto *VD = dyn_cast<VarDecl>(OldDecl);
> > > if (VD && !VD->getDescribedVarTemplate())
> > > JustWarn = true;
> > > @@ -5380,6 +5379,13 @@ static void checkDLLAttributeRedeclarati
> > > JustWarn = true;
> > > }
> > > 
> > > +    // We cannot change a declaration that's been used because IR has
> already
> > > +    // been emitted. Dllimported functions will still work though
> (modulo
> > > +    // address equality) as they can use the thunk.
> > > +    if (OldDecl->isUsed())
> > > +      if (!isa<FunctionDecl>(OldDecl) || !NewImportAttr)
> > > +        JustWarn = false;
> > > +
> > > unsigned DiagID = JustWarn ? diag::warn_attribute_dll_redeclaration
> > > > diag::err_attribute_dll_redeclaration;
> > > S.Diag(NewDecl->getLocation(), DiagID)
> > > 
> > > Modified: cfe/trunk/test/Sema/dllimport.c
> > > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/dllimport.c?rev=242973&r1=242972&r2=242973&view=diff
> 
> > > 
> ==============================================================================
> > > --- cfe/trunk/test/Sema/dllimport.c (original)
> > > +++ cfe/trunk/test/Sema/dllimport.c Wed Jul 22 18:54:51 2015
> > > @@ -143,7 +143,7 @@ __declspec(dllimport) void redecl3(); //
> > > 
> > > void redecl4(); // expected-note{{previous
> declaration is here}}
> > > void useRedecl4() { redecl4(); }
> > > -__declspec(dllimport) void redecl4(); // expected-error{{redeclaration
> of 'redecl4' cannot add 'dllimport' attribute}}
> > > +__declspec(dllimport) void redecl4(); //
> expected-warning{{redeclaration of 'redecl4' should not add 'dllimport'
> attribute}}
> > > 
> > > // Allow with a warning if the decl hasn't been used yet.
> > > void redecl5(); // expected-note{{previous
> declaration is here}}
> > > 
> > > 
> > > _______________________________________________
> > > cfe-commits mailing list
> > > cfe-commits@cs.uiuc.edu
> > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 


[Attachment #5 (text/html)]

<div dir="ltr">Approved.</div><div class="gmail_extra"><br><div \
class="gmail_quote">On Mon, Jul 27, 2015 at 1:20 PM, Hans Wennborg <span \
dir="ltr">&lt;<a href="mailto:hans@chromium.org" \
target="_blank">hans@chromium.org</a>&gt;</span> wrote:<br><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex">Ping?<br> <div class="HOEnZb"><div class="h5"><br>
On Thu, Jul 23, 2015 at 4:45 PM, Hans Wennborg &lt;<a \
href="mailto:hans@chromium.org">hans@chromium.org</a>&gt; wrote:<br> &gt; This \
isn&#39;t fixing a regression, but would be nice to have in 3.7 I think.<br> &gt;<br>
&gt; Richard, is this OK for merging?<br>
&gt;<br>
&gt; On Wed, Jul 22, 2015 at 4:54 PM, Hans Wennborg &lt;<a \
href="mailto:hans@hanshq.net">hans@hanshq.net</a>&gt; wrote:<br> &gt;&gt; Author: \
hans<br> &gt;&gt; Date: Wed Jul 22 18:54:51 2015<br>
&gt;&gt; New Revision: 242973<br>
&gt;&gt;<br>
&gt;&gt; URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_vi \
ewvc_llvm-2Dproject-3Frev-3D242973-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BS \
qEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=kQMZtvZnXRRrmXVTHjtGa0i053uCso6JKNjGBZI3k9k&s=z1fEg42O4WxMv-U1EGJBv0JB1L1bLJfGb64T7BPvojw&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=242973&amp;view=rev</a><br>
 &gt;&gt; Log:<br>
&gt;&gt; Downgrade error about adding &#39;dllimport&#39; to used free function to \
warning (PR24215)<br> &gt;&gt;<br>
&gt;&gt; The code will still work as it can reference the function via its thunk.<br>
&gt;&gt;<br>
&gt;&gt; Modified:<br>
&gt;&gt;        cfe/trunk/lib/Sema/SemaDecl.cpp<br>
&gt;&gt;        cfe/trunk/test/Sema/dllimport.c<br>
&gt;&gt;<br>
&gt;&gt; Modified: cfe/trunk/lib/Sema/SemaDecl.cpp<br>
&gt;&gt; URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_vi \
ewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaDecl.cpp-3Frev-3D242973-26r1-3D242972-26r2- \
3D242973-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZIS \
M_ASROnREeq0cCxk&m=kQMZtvZnXRRrmXVTHjtGa0i053uCso6JKNjGBZI3k9k&s=9554DGay-mla4cM1QJITLgnI1rUGK9nOQj0epvG-M1o&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=242973&amp;r1=242972&amp;r2=242973&amp;view=diff</a><br>
 &gt;&gt; ==============================================================================<br>
 &gt;&gt; --- cfe/trunk/lib/Sema/SemaDecl.cpp (original)<br>
&gt;&gt; +++ cfe/trunk/lib/Sema/SemaDecl.cpp Wed Jul 22 18:54:51 2015<br>
&gt;&gt; @@ -5368,10 +5368,9 @@ static void checkDLLAttributeRedeclarati<br>
&gt;&gt;      bool AddsAttr = !(OldImportAttr || OldExportAttr) &amp;&amp; \
HasNewAttr;<br> &gt;&gt;<br>
&gt;&gt;      if (AddsAttr &amp;&amp; !IsSpecialization &amp;&amp; \
!OldDecl-&gt;isImplicit()) {<br> &gt;&gt; -      // If the declaration hasn&#39;t \
been used yet, allow with a warning for<br> &gt;&gt; -      // free functions and \
global variables.<br> &gt;&gt; +      // Allow with a warning for free functions and \
global variables.<br> &gt;&gt;         bool JustWarn = false;<br>
&gt;&gt; -      if (!OldDecl-&gt;isUsed() &amp;&amp; !OldDecl-&gt;isCXXClassMember()) \
{<br> &gt;&gt; +      if (!OldDecl-&gt;isCXXClassMember()) {<br>
&gt;&gt;            auto *VD = dyn_cast&lt;VarDecl&gt;(OldDecl);<br>
&gt;&gt;            if (VD &amp;&amp; !VD-&gt;getDescribedVarTemplate())<br>
&gt;&gt;               JustWarn = true;<br>
&gt;&gt; @@ -5380,6 +5379,13 @@ static void checkDLLAttributeRedeclarati<br>
&gt;&gt;               JustWarn = true;<br>
&gt;&gt;         }<br>
&gt;&gt;<br>
&gt;&gt; +      // We cannot change a declaration that&#39;s been used because IR has \
already<br> &gt;&gt; +      // been emitted. Dllimported functions will still work \
though (modulo<br> &gt;&gt; +      // address equality) as they can use the \
thunk.<br> &gt;&gt; +      if (OldDecl-&gt;isUsed())<br>
&gt;&gt; +         if (!isa&lt;FunctionDecl&gt;(OldDecl) || !NewImportAttr)<br>
&gt;&gt; +            JustWarn = false;<br>
&gt;&gt; +<br>
&gt;&gt;         unsigned DiagID = JustWarn ? \
diag::warn_attribute_dll_redeclaration<br> &gt;&gt;                                   \
: diag::err_attribute_dll_redeclaration;<br> &gt;&gt;         \
S.Diag(NewDecl-&gt;getLocation(), DiagID)<br> &gt;&gt;<br>
&gt;&gt; Modified: cfe/trunk/test/Sema/dllimport.c<br>
&gt;&gt; URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_vi \
ewvc_llvm-2Dproject_cfe_trunk_test_Sema_dllimport.c-3Frev-3D242973-26r1-3D242972-26r2- \
3D242973-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZIS \
M_ASROnREeq0cCxk&m=kQMZtvZnXRRrmXVTHjtGa0i053uCso6JKNjGBZI3k9k&s=S_kJRfnO9XfU9-BqEN5T7GAFhEdddTD2pL6OzWqYsVQ&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/dllimport.c?rev=242973&amp;r1=242972&amp;r2=242973&amp;view=diff</a><br>
 &gt;&gt; ==============================================================================<br>
 &gt;&gt; --- cfe/trunk/test/Sema/dllimport.c (original)<br>
&gt;&gt; +++ cfe/trunk/test/Sema/dllimport.c Wed Jul 22 18:54:51 2015<br>
&gt;&gt; @@ -143,7 +143,7 @@ __declspec(dllimport) void redecl3(); //<br>
&gt;&gt;<br>
&gt;&gt;                                    void redecl4(); // \
expected-note{{previous declaration is here}}<br> &gt;&gt;   void useRedecl4() { \
redecl4(); }<br> &gt;&gt; -__declspec(dllimport) void redecl4(); // \
expected-error{{redeclaration of &#39;redecl4&#39; cannot add &#39;dllimport&#39; \
attribute}}<br> &gt;&gt; +__declspec(dllimport) void redecl4(); // \
expected-warning{{redeclaration of &#39;redecl4&#39; should not add \
&#39;dllimport&#39; attribute}}<br> &gt;&gt;<br>
&gt;&gt;   // Allow with a warning if the decl hasn&#39;t been used yet.<br>
&gt;&gt;                                    void redecl5(); // \
expected-note{{previous declaration is here}}<br> &gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; cfe-commits mailing list<br>
&gt;&gt; <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
&gt;&gt; <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" \
rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
 </div></div></blockquote></div><br></div>



_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic