From: Nathan Sidwell <nathan@codesourcery.com>
To: Mike Stump <mikestump@comcast.net>
Cc: Mark Mitchell <mark@codesourcery.com>,
Michael Matz <matz@suse.de>,
Richard Guenther <richard.guenther@gmail.com>,
GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [gimple] assignments to volatile
Date: Mon, 28 Jun 2010 09:52:00 -0000 [thread overview]
Message-ID: <4C2852F4.6070809@codesourcery.com> (raw)
In-Reply-To: <E1CA7E86-EEE4-4EB7-8CAF-0FA59DD694DB@comcast.net>
On 06/25/10 19:14, Mike Stump wrote:
> I don't find any limitation in 5.17 to scalars or to objects of class type. If you examine the wording in 8.5.3 for example, a place that we all know does create temporaries:
I did not make the claim that the standard distinguished. I am make the claim
that we want simple, consistent and composable rules for accessing scalar device
registers.
As you brought it up, I stated what I thought of volatile structure semantics.
> In a = vob = c; stucts are treated the same. This is the case we were discussing. We can know that, because it appears on the 6th lines of this email.
The case of structs is what you have brought to the mix. The original
discussion was about scalars.
>> I think the behaviour of volatile structs in C++ is too ill-specified to meaningfully talk about when accesses to the members occur.
>
> Again, I disagree. We could embark upon what the standard says, but, let's just agree to not, unless someone wants to learn what it says, or someone wants to change the status quo behavior in a way that deviates from the standard.
If you do not want to discuss what the standard says, why did you bring it up?
This whole discussion is about discrepancies within the standards and between
them and desired semantics.
>> I think the goal should be to make accesses to volatile scalars, as used when poking at hardware, follow simple, composable, consistent rules.
>
> Yeah, the problem with that is implicit in that, is, I want to make the compiler agree to the ruleset I just invented because I like it, and if we do that, the semantics then change day by day, by the whim of the person doing the patch today, and the each implementor gets to choose a different rule, and the users don't benefit. The other possibility is to make it conform to the language standard, when reasonable. I think the later is the best option. No one has argued that they understand what the standard says and want to intentionally deviate from it, nor have they stated a good reason for doing that.
Could you rephrase that please, I cannot understand what you are claiming.
> So, could you please restate what you want to do. Do you want gcc to follow the language standard, or, would you rather ignore the standard and just invent some rules on the fly for gcc to follow?
I claim the C and C++ standards are both not clear and at odds semantics that
are necessary for hardware programming.
>> IMHO the current implemented behaviour is none of those.
>
> Concerning:
>
> Sometimes we re-read the assigned-to object, and sometimes we do not. For instance,
> return vobj = data;
> will cause a reread of vobj, IF data is not a constant.
>
> the proper solution is to make it always reread vobj. Simple and consistent, while matching the standard, no?
did you not read my original problem statement? You seem to be ignoring
associated issues that come with that interpretation, which I mentioned. Could
you clarify what you also claim the following expression-statements should reread?
vobj;
vobj = data;
expr, vobj = data;
They all have values.
nathan
--
Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery
next prev parent reply other threads:[~2010-06-28 7:44 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-21 12:44 Nathan Sidwell
2010-06-21 13:26 ` Richard Guenther
2010-06-21 13:55 ` Michael Matz
2010-06-21 14:07 ` Richard Guenther
2010-06-21 14:09 ` Nathan Sidwell
2010-06-21 14:17 ` Michael Matz
2010-06-21 14:19 ` Richard Guenther
2010-06-21 14:53 ` Michael Matz
2010-06-21 14:17 ` IainS
2010-06-21 14:24 ` Michael Matz
2010-06-21 14:50 ` Nathan Sidwell
2010-06-21 15:24 ` Michael Matz
2010-06-22 11:36 ` Dave Korn
2010-06-23 20:16 ` Mike Stump
2010-06-24 11:51 ` Michael Matz
2010-06-21 15:24 ` Nathan Sidwell
2010-06-21 15:46 ` Michael Matz
2010-06-22 15:37 ` Mark Mitchell
2010-06-22 15:37 ` Jakub Jelinek
2010-06-22 15:57 ` Paul Koning
2010-06-22 15:47 ` Michael Matz
2010-06-22 15:58 ` Mark Mitchell
2010-06-23 11:38 ` Nathan Sidwell
2010-06-23 14:05 ` Mark Mitchell
2010-06-23 14:06 ` Michael Matz
2010-06-23 16:00 ` Richard Guenther
2010-06-23 16:25 ` Paul Koning
2010-06-23 17:13 ` Mark Mitchell
2010-06-23 19:16 ` Mike Stump
2010-06-24 10:22 ` Mark Mitchell
2010-06-24 15:53 ` Mike Stump
2010-06-24 16:00 ` Mark Mitchell
2010-06-24 19:37 ` Mike Stump
2010-06-25 9:37 ` Nathan Sidwell
2010-06-25 19:06 ` Mike Stump
2010-06-25 21:33 ` Mark Mitchell
2010-06-26 9:35 ` Mike Stump
2010-06-26 10:18 ` Mark Mitchell
2010-06-26 12:18 ` Richard Guenther
2010-06-26 19:52 ` Michael Matz
2010-06-26 19:57 ` Mark Mitchell
2010-06-26 20:08 ` Michael Matz
2010-06-26 22:13 ` Mark Mitchell
2010-06-28 9:20 ` Nathan Sidwell
2010-06-28 9:27 ` Nathan Sidwell
2010-06-26 10:20 ` Richard Kenner
2010-06-28 9:52 ` Nathan Sidwell [this message]
2010-06-30 22:52 ` Mike Stump
2010-07-05 8:59 ` Nathan Sidwell
2010-07-09 5:27 ` Mike Stump
2010-07-09 7:22 ` Nathan Sidwell
2010-07-16 8:10 ` Nathan Sidwell
2010-07-16 15:20 ` Mark Mitchell
2010-07-19 8:41 ` Nathan Sidwell
2010-08-13 9:56 ` Nathan Sidwell
2010-08-18 15:32 ` Mark Mitchell
2010-08-18 16:18 ` Richard Guenther
2010-08-18 18:04 ` Mike Stump
2010-08-19 11:11 ` Nathan Sidwell
2010-08-20 4:22 ` Mark Mitchell
2010-08-20 16:59 ` Mike Stump
2010-08-20 18:00 ` H.J. Lu
2010-08-20 18:33 ` Nathan Sidwell
2010-06-25 9:20 ` Nathan Sidwell
2010-06-24 10:23 ` Nathan Sidwell
2010-06-24 17:05 ` Mike Stump
2010-06-24 17:29 ` Paul Koning
2010-06-25 9:26 ` Nathan Sidwell
2010-06-25 18:20 ` Mike Stump
2010-06-28 8:49 ` Nathan Sidwell
2010-07-01 1:02 ` Mike Stump
2010-07-05 9:02 ` Nathan Sidwell
2010-07-09 5:14 ` Mike Stump
2010-07-09 7:20 ` Nathan Sidwell
2010-06-22 15:56 ` Paul Koning
2010-06-22 12:08 ` Nathan Sidwell
2010-06-22 12:25 ` Richard Guenther
2010-06-22 13:12 ` Michael Matz
2010-06-22 13:54 ` Nathan Sidwell
2010-06-22 15:21 ` Michael Matz
2010-06-22 16:12 ` Joseph S. Myers
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=4C2852F4.6070809@codesourcery.com \
--to=nathan@codesourcery.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=mark@codesourcery.com \
--cc=matz@suse.de \
--cc=mikestump@comcast.net \
--cc=richard.guenther@gmail.com \
/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 read-only IMAP folder(s) and NNTP newsgroup(s).