From: Josh Triplett <josh@joshtriplett.org>
To: Christopher Li <sparse@chrisli.org>
Cc: Linux-Sparse <linux-sparse@vger.kernel.org>,
Al Viro <viro@ftp.linux.org.uk>
Subject: Re: __attribute__((force)) should not be a storage class
Date: Sun, 2 Feb 2014 00:38:38 -0800 [thread overview]
Message-ID: <20140202083838.GA20284@leaf> (raw)
In-Reply-To: <CANeU7Qm1=8ks=Fu6LzjuAYxRqLPS3gssmD+uxNzDfN568Xxodw@mail.gmail.com>
On Sat, Feb 01, 2014 at 09:51:11PM -0800, Christopher Li wrote:
> On Sat, Feb 1, 2014 at 10:49 AM, Josh Triplett <josh@joshtriplett.org> wrote:
> > Commit 3829c4d8b097776e6b3472290a9fae08a705ab7a ("Don't mix storage
> > class bits with ctype->modifiers while parsing type") in 2009 separated
> > storage classes from modifiers; in the process, it changed
> > __attribute__((force)) from a modifier to a storage class. I don't
> > think it makes sense to have force as a storage class, for one critical
> > reason: storage classes are mutually exclusive.
>
> I am not convinced yet.
>
> The current usage case for attribute "force" is to silence the type
> mismatch during the type conversion. For variable declaration, there is
> not need to silence any mismatch because there is no type conversion.
>
> What you are purposing here is a new usage case. Do you want
> to silence every single type mismatch in every assignment to that
> variable? How about assignment from that variable?
I'd suggest that either it should have exactly the same behavior as it does
when applied to the type of a function argument (suppressing
Sparse-specific pointer qualifier mismatches on input), or it should be
prohibited entirely on standalone variable declarations. I'd be fine
with the latter, if you prefer.
> > $ cat /tmp/test.c
> > static __attribute__((force)) int *p;
> > static int q = *p;
>
> In this example, the attribute "force" is not needed.
> I think it compiles fine without forcing it. The "force" don't
> actually do any thing. So why do we want to support this?
This particular case was simply an unrelated test case which happened to
trigger the error about having multiple storage classes. The original
test case came from http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59850#c3
; I noticed the use of -Wno-decl, presumably to suppress the warnings
about the two variables not being static, so I marked them as static and
got the error that motivated this thread.
- Josh Triplett
next prev parent reply other threads:[~2014-02-02 8:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-01 18:49 __attribute__((force)) should not be a storage class Josh Triplett
2014-02-02 5:51 ` Christopher Li
2014-02-02 8:38 ` Josh Triplett [this message]
2014-02-27 21:00 ` Christopher Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140202083838.GA20284@leaf \
--to=josh@joshtriplett.org \
--cc=linux-sparse@vger.kernel.org \
--cc=sparse@chrisli.org \
--cc=viro@ftp.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).