From: Jamie Lokier <egcs@tantalophile.demon.co.uk>
To: mark@codesourcery.com
Cc: ak@muc.de, toon@moene.indiv.nluug.nl, law@cygnus.com,
jbuck@Synopsys.COM, torvalds@transmeta.com, craig@jcb-sc.com,
davem@redhat.com, chip@perlsupport.com, egcs@egcs.cygnus.com
Subject: Re: Linux and aliasing?
Date: Wed, 30 Jun 1999 15:43:00 -0000 [thread overview]
Message-ID: <19990607113526.A17782@pcep-jamie.cern.ch> (raw)
Message-ID: <19990630154300.oefb8dl5yM_JLoJNI_IUsuDVzQj5OAlVbBHldSCNlHY@z> (raw)
In-Reply-To: <19990605165713D.mitchell@codesourcery.com>
PgGGmark@codesourcery.com wrote:
> Jamie> *(foo*)(void*)(&x)
>
> I intended this to be covered by my proposal. This would officially
> be a "funny cast", and considered able to alias anything, provided
> that x is a variable of an expression of the form a->b or a.b.
Why the restriction on x?
Things I've seen around, that are outside your proposal:
- accessing an integer/float as a struct, to access individual parts.
- vice versa to generate hash values / do vector operations.
- accessing an integer array as different size integers for fast
vector operatings (e.g. image processing).
Image processing is a particular pain. As are optimised implementations
of strlen, strcpy, memcpy etc.
We could just tell people their code will work if the pointed-to entity
happens to be a struct member. We could tell them to use a union like
they're supposed to.
But simply fixing a vector processing kernel to use unions won't
guarantee correct code: all the callers must be changed to use the union
representation too, because the image processing ops may get inlined.
Hence the special char * exception so things like memcpy work I suppose.
> Jamie> I bet there's still a fair bit of that around. In the
> Jamie> modern world we've got *reinterpret_cast<foo*>(&x), which
> Jamie> is presumably treated specially w.r.t. aliases.
>
> No, it does not. The use of reinterpret_cast does not exempt a
> standard-conforming program from the rules about using an lvalue of
> the wrong type to access storage.
I meant more along the lines of "what GCC does" than "what the standard
says" on this. I realise this gives undefined behaviour standard-wise.
Presumably reinterpret_cast this equivalent to one of your "funny casts"?
have nice day,
-- Jamie
next prev parent reply other threads:[~1999-06-30 15:43 UTC|newest]
Thread overview: 218+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-06-03 10:23 Chip Salzenberg
1999-06-03 10:37 ` mark
1999-06-03 11:26 ` David S. Miller
1999-06-03 12:03 ` mark
1999-06-03 12:25 ` David S. Miller
1999-06-03 20:06 ` craig
1999-06-03 23:03 ` Linus Torvalds
1999-06-03 23:45 ` mark
1999-06-04 0:04 ` Linus Torvalds
1999-06-04 1:08 ` Branko Cibej
1999-06-30 15:43 ` Branko Cibej
1999-06-04 1:24 ` Joe Buck
1999-06-04 1:50 ` Linus Torvalds
1999-06-04 5:46 ` craig
1999-06-04 7:22 ` burley (was Re: Linux and aliasing?) Mark Hahn
1999-06-04 8:16 ` craig
1999-06-30 15:43 ` craig
1999-06-30 15:43 ` Mark Hahn
1999-06-04 8:35 ` Linux and aliasing? Linus Torvalds
1999-06-04 10:04 ` Joe Buck
1999-06-04 10:22 ` Jeffrey A Law
1999-06-04 10:31 ` Joe Buck
1999-06-04 10:53 ` Jeffrey A Law
1999-06-30 15:43 ` Jeffrey A Law
1999-06-30 15:43 ` Joe Buck
1999-07-11 10:55 ` Jeffrey A Law
1999-07-31 23:33 ` Jeffrey A Law
1999-06-04 11:11 ` Toon Moene
1999-06-04 12:20 ` Jeffrey A Law
1999-06-05 5:45 ` Toon Moene
1999-06-05 6:23 ` Andi Kleen
1999-06-05 10:32 ` Toon Moene
1999-06-05 13:26 ` Jamie Lokier
1999-06-05 19:35 ` Linus Torvalds
1999-06-06 1:18 ` Martin v. Loewis
1999-06-06 10:46 ` Linus Torvalds
1999-06-30 15:43 ` Linus Torvalds
1999-06-06 17:56 ` Jason Merrill
1999-06-06 19:24 ` Tim Hollebeek
1999-06-30 15:43 ` Tim Hollebeek
1999-06-06 22:23 ` Jeffrey A Law
1999-06-30 15:43 ` Jeffrey A Law
[not found] ` <199906070645.IAA00615@mira.isdn.cs.tu-berlin.de>
1999-06-07 2:14 ` Jason Merrill
1999-06-07 8:02 ` mark
1999-06-07 8:41 ` David S. Miller
1999-06-07 9:24 ` Jeffrey A Law
1999-06-07 9:29 ` David S. Miller
1999-06-30 15:43 ` David S. Miller
1999-06-30 15:43 ` Jeffrey A Law
1999-06-07 9:32 ` Joe Buck
1999-06-30 15:43 ` Joe Buck
1999-06-30 15:43 ` David S. Miller
1999-06-30 15:43 ` mark
1999-06-07 13:11 ` Jeffrey A Law
1999-06-30 15:43 ` Jeffrey A Law
1999-06-30 15:43 ` Jason Merrill
1999-06-30 15:43 ` Jason Merrill
1999-06-30 15:43 ` Martin v. Loewis
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` Jamie Lokier
1999-06-05 18:48 ` Linus Torvalds
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` Toon Moene
1999-06-05 10:37 ` mark
1999-06-05 11:09 ` David S. Miller
1999-06-05 12:11 ` Toon Moene
1999-06-05 12:21 ` David S. Miller
1999-06-05 16:51 ` mark
1999-06-30 15:43 ` mark
1999-06-30 15:43 ` David S. Miller
1999-06-30 15:43 ` Toon Moene
1999-06-07 6:01 ` Joern Rennecke
1999-06-30 15:43 ` Joern Rennecke
1999-06-30 15:43 ` David S. Miller
1999-06-05 11:35 ` Andi Kleen
1999-06-30 15:43 ` Andi Kleen
1999-06-05 12:41 ` Jamie Lokier
1999-06-05 14:43 ` Martin v. Loewis
1999-06-30 15:43 ` Martin v. Loewis
1999-06-05 16:53 ` mark
1999-06-07 2:36 ` Jamie Lokier [this message]
1999-06-07 8:04 ` mark
1999-06-30 15:43 ` mark
1999-06-30 15:43 ` Jamie Lokier
1999-06-30 15:43 ` mark
1999-06-30 15:43 ` Jamie Lokier
1999-06-30 15:43 ` mark
1999-06-30 15:43 ` Andi Kleen
1999-06-06 23:12 ` f77 vs type based alias analysis Jeffrey A Law
1999-06-30 15:43 ` Jeffrey A Law
1999-06-06 23:20 ` Linux and aliasing? Jeffrey A Law
1999-06-30 15:43 ` Jeffrey A Law
1999-06-30 15:43 ` Toon Moene
1999-06-30 15:43 ` Jeffrey A Law
1999-06-05 4:05 ` Andi Kleen
1999-06-30 15:43 ` Andi Kleen
1999-06-30 15:43 ` Toon Moene
1999-06-30 15:43 ` Jeffrey A Law
1999-06-04 11:49 ` Linus Torvalds
1999-06-04 13:03 ` Gabriel Dos_Reis
1999-06-04 13:13 ` Joe Buck
1999-06-30 15:43 ` Joe Buck
1999-06-30 15:43 ` Gabriel Dos_Reis
1999-06-30 15:43 ` Linus Torvalds
1999-06-04 12:59 ` Alexandre Oliva
1999-06-04 13:29 ` Joe Buck
1999-06-04 13:39 ` Alexandre Oliva
1999-06-30 15:43 ` Alexandre Oliva
1999-06-30 15:43 ` Joe Buck
1999-06-30 15:43 ` Alexandre Oliva
1999-06-30 15:43 ` Joe Buck
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` craig
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` Joe Buck
1999-06-04 5:47 ` craig
1999-06-30 15:43 ` craig
1999-06-04 7:11 ` mark
1999-06-04 8:38 ` Linus Torvalds
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` mark
1999-06-04 8:41 ` Tim Hollebeek
1999-06-04 8:53 ` Jeffrey A Law
1999-06-30 15:43 ` Jeffrey A Law
1999-06-30 15:43 ` Tim Hollebeek
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` mark
1999-06-04 5:47 ` craig
1999-06-04 8:17 ` Linus Torvalds
1999-06-04 8:49 ` craig
1999-06-04 8:57 ` Linus Torvalds
1999-06-04 9:02 ` Jean-Pierre Radley
1999-06-30 15:43 ` Jean-Pierre Radley
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` craig
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` craig
1999-06-04 8:39 ` Tim Hollebeek
1999-06-04 8:55 ` Linus Torvalds
1999-06-04 15:20 ` Richard Henderson
1999-06-05 9:50 ` Linus Torvalds
1999-06-05 11:00 ` mark
1999-06-06 10:30 ` Linus Torvalds
1999-06-06 10:44 ` mark
1999-06-06 14:17 ` Linus Torvalds
1999-06-06 17:41 ` mark
1999-06-07 8:58 ` Linus Torvalds
1999-06-07 9:18 ` mark
1999-06-07 9:29 ` Linus Torvalds
1999-06-07 9:38 ` Tim Hollebeek
1999-06-07 10:05 ` Jamie Lokier
1999-06-30 15:43 ` Jamie Lokier
1999-06-07 10:44 ` Linus Torvalds
1999-06-07 11:22 ` Jeffrey A Law
1999-06-08 1:34 ` Nick Ing-Simmons
1999-06-08 1:48 ` Jeffrey A Law
1999-06-30 15:43 ` Jeffrey A Law
1999-06-30 15:43 ` Nick Ing-Simmons
1999-06-30 15:43 ` Jeffrey A Law
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` Tim Hollebeek
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` mark
1999-06-07 13:34 ` Jamie Lokier
1999-06-30 15:43 ` Jamie Lokier
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` mark
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` mark
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` mark
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` Richard Henderson
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` Tim Hollebeek
1999-06-04 15:02 ` Richard Henderson
1999-06-04 16:50 ` Bernd Schmidt
1999-06-30 15:43 ` Bernd Schmidt
1999-06-05 9:35 ` Linus Torvalds
1999-06-05 13:34 ` Richard Henderson
1999-06-05 18:40 ` Linus Torvalds
1999-06-30 15:43 ` Linus Torvalds
1999-06-05 21:38 ` Jakub Jelinek
1999-06-30 15:43 ` Jakub Jelinek
1999-06-30 15:43 ` Richard Henderson
1999-06-30 15:43 ` Linus Torvalds
1999-06-30 15:43 ` Richard Henderson
1999-06-30 15:43 ` Linus Torvalds
1999-06-03 23:53 ` Martin v. Loewis
1999-06-30 15:43 ` Martin v. Loewis
[not found] ` <v04205101b37d700fbf8d@[192.168.1.254]>
1999-06-04 7:01 ` craig
1999-06-30 15:43 ` craig
1999-06-30 15:43 ` craig
1999-06-30 15:43 ` David S. Miller
1999-06-03 13:31 ` Andi Kleen
1999-06-30 15:43 ` Andi Kleen
1999-06-30 15:43 ` mark
1999-06-30 15:43 ` David S. Miller
1999-06-03 12:02 ` Andi Kleen
1999-06-03 15:38 ` Martin v. Loewis
1999-06-30 15:43 ` Martin v. Loewis
1999-06-30 15:43 ` Andi Kleen
1999-06-30 15:43 ` mark
1999-06-30 15:43 ` Chip Salzenberg
1999-06-04 11:54 Mike Stump
1999-06-04 12:13 ` Jeffrey A Law
1999-06-04 13:25 ` Sylvain Pion
1999-06-04 13:32 ` Jeffrey A Law
1999-06-30 15:43 ` Jeffrey A Law
1999-06-30 15:43 ` Sylvain Pion
1999-06-30 15:43 ` Jeffrey A Law
1999-06-30 15:43 ` Mike Stump
1999-06-06 15:08 Ross Harvey
1999-06-06 15:46 ` Linus Torvalds
1999-06-30 15:43 ` Linus Torvalds
1999-06-06 17:29 ` David S. Miller
1999-06-30 15:43 ` David S. Miller
1999-06-30 15:43 ` Ross Harvey
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=19990607113526.A17782@pcep-jamie.cern.ch \
--to=egcs@tantalophile.demon.co.uk \
--cc=ak@muc.de \
--cc=chip@perlsupport.com \
--cc=craig@jcb-sc.com \
--cc=davem@redhat.com \
--cc=egcs@egcs.cygnus.com \
--cc=jbuck@Synopsys.COM \
--cc=law@cygnus.com \
--cc=mark@codesourcery.com \
--cc=toon@moene.indiv.nluug.nl \
--cc=torvalds@transmeta.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).