From: Andi Kleen <ak@muc.de>
To: toon@moene.indiv.nluug.nl (Toon Moene)
Cc: egcs@egcs.cygnus.com, torvalds@transmeta.com, law@cygnus.com
Subject: Re: Linux and aliasing?
Date: Sat, 05 Jun 1999 04:05:00 -0000 [thread overview]
Message-ID: <m3bteu6h5q.fsf@fred.muc.de> (raw)
In-Reply-To: <375814C8.85CA17C9@moene.indiv.nluug.nl>
toon@moene.indiv.nluug.nl (Toon Moene) writes:
> Jeffrey A Law wrote:
>
> > Mark Mitchell wrote:
>
> > > Either
> > > 1. Leave it as it is (the Linux kernel will need -fno-strict-aliasing).
>
> > This is my strong preference.
> >
> > I see no need to make conforming, portable code run slower.
>
> Exactly. Remember that a standard is a contract between producer and
> (end-)user, in our case: between compiler writer and C programmer.
>
> "We won't optimize your constructs away as long as you program
> according to said standard"
Erm, there seem to be some misunderstandings about the C standard in
this discussion.
My C9x draft says:
6.2.6.1
[#5] Certain object representations need not represent a
value of the object type. If the stored value of an object
has such a representation and is accessed by an lvalue
expression that does not have character type, the behavior
is undefined. If such a representation is produced by a
side effect that modifies all or any part of the object by
an lvalue expression that does not have character type, the
behavior is undefined.37) Such a representation is called a
trap representation.
Now it says undefined behaviour is:
3.18
[#1] undefined behavior
behavior, upon use of a nonportable or erroneous program
construct, of erroneous data, or of indeterminately valued
objects, for which this International Standard imposes no
requirements
So it imposes no requirements on what to do when it happen. This means gcc
is free to do what it wants. This includes unreasonable things, or reasonable
things. I think turning alias analysis off in this case is reasonable, and
of course fully standards compliant. Also the argument "that will slow
down legal programs" is non sense, because there are no strictly conforming
programs which can do this.
-Andi
P.S.: Toon, this is not Fortran ;)
--
This is like TV. I don't like TV.
WARNING: multiple messages have this Message-ID
From: Andi Kleen <ak@muc.de>
To: toon@moene.indiv.nluug.nl (Toon Moene)
Cc: egcs@egcs.cygnus.com, torvalds@transmeta.com, law@cygnus.com
Subject: Re: Linux and aliasing?
Date: Wed, 30 Jun 1999 15:43:00 -0000 [thread overview]
Message-ID: <m3bteu6h5q.fsf@fred.muc.de> (raw)
Message-ID: <19990630154300.bsXS0R7s_rmyNw7lmyXPGS42Y5WC8aJ_ZkJ7xdRw-OM@z> (raw)
In-Reply-To: <375814C8.85CA17C9@moene.indiv.nluug.nl>
toon@moene.indiv.nluug.nl (Toon Moene) writes:
> Jeffrey A Law wrote:
>
> > Mark Mitchell wrote:
>
> > > Either
> > > 1. Leave it as it is (the Linux kernel will need -fno-strict-aliasing).
>
> > This is my strong preference.
> >
> > I see no need to make conforming, portable code run slower.
>
> Exactly. Remember that a standard is a contract between producer and
> (end-)user, in our case: between compiler writer and C programmer.
>
> "We won't optimize your constructs away as long as you program
> according to said standard"
Erm, there seem to be some misunderstandings about the C standard in
this discussion.
My C9x draft says:
6.2.6.1
[#5] Certain object representations need not represent a
value of the object type. If the stored value of an object
has such a representation and is accessed by an lvalue
expression that does not have character type, the behavior
is undefined. If such a representation is produced by a
side effect that modifies all or any part of the object by
an lvalue expression that does not have character type, the
behavior is undefined.37) Such a representation is called a
trap representation.
Now it says undefined behaviour is:
3.18
[#1] undefined behavior
behavior, upon use of a nonportable or erroneous program
construct, of erroneous data, or of indeterminately valued
objects, for which this International Standard imposes no
requirements
So it imposes no requirements on what to do when it happen. This means gcc
is free to do what it wants. This includes unreasonable things, or reasonable
things. I think turning alias analysis off in this case is reasonable, and
of course fully standards compliant. Also the argument "that will slow
down legal programs" is non sense, because there are no strictly conforming
programs which can do this.
-Andi
P.S.: Toon, this is not Fortran ;)
--
This is like TV. I don't like TV.
next prev parent reply other threads:[~1999-06-05 4:05 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
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 [this message]
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=m3bteu6h5q.fsf@fred.muc.de \
--to=ak@muc.de \
--cc=egcs@egcs.cygnus.com \
--cc=law@cygnus.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).