public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "dberlin at dberlin dot org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/30252] [4.2 regression] miscompilation of sigc++-2.0 based code with -fstrict-aliasing
Date: Tue, 05 Jun 2007 22:44:00 -0000	[thread overview]
Message-ID: <20070605224406.23157.qmail@sourceware.org> (raw)
In-Reply-To: <bug-30252-7958@http.gcc.gnu.org/bugzilla/>



------- Comment #40 from dberlin at gcc dot gnu dot org  2007-06-05 22:44 -------
Subject: Re:  [4.2 regression] miscompilation of sigc++-2.0 based code with
-fstrict-aliasing

On 5 Jun 2007 19:59:32 -0000, rguenther at suse dot de
<gcc-bugzilla@gcc.gnu.org> wrote:
>
>
> ------- Comment #39 from rguenther at suse dot de  2007-06-05 19:59 -------
> Subject: Re:  [4.2 regression] miscompilation of sigc++-2.0
>  based code with -fstrict-aliasing
>
> On Tue, 5 Jun 2007, dberlin at dberlin dot org wrote:
>
> > ------- Comment #38 from dberlin at gcc dot gnu dot org  2007-06-05 19:07 -------
> > Subject: Re:  [4.2 regression] miscompilation of sigc++-2.0 based code with
> > -fstrict-aliasing
> >
> > On 5 Jun 2007 18:24:54 -0000, matz at gcc dot gnu dot org
> > <gcc-bugzilla@gcc.gnu.org> wrote:
> > >
> > > Now, regarding where to fix it properly: if you say that solution_set_add()
> > > is not the right place (and I don't buy that yet, because something is wrong
> > > with it no matter what, e.g. looking for subfields starting from the things
> > > in the pt set, which themself might be subfields feels wrong)
> > You keep thinking the solver knows anything about types or structures
> > or fields or programming languages or fields.
> > It doesn't.
> > The only thing it knows is that constraint variable + 5 is some other
> > constraint variable.
>
> But there are cases there is no constraint variable for p + 5.  Like
> the problem with the empty bases that we take the address of but don't
> generate constraint variables for.  Or consider
>
> int p[2];
> void *q = p;
> int *p2;
> q = q + 1;
> q = q + 1;
> q = q + 1;
> q = q + 1;
> p2 = q;
> *p2 = 1;
>
> which is a valid way to store into p[1].  We obviously don't have
> constraint variables for q + 1 -- we have one for &p[0] and one
> for &p[1], but we cannot represent q + 1 exactly.

q_2 = q_1 + 1
q_3 = q_2 + 1
q_4 = q_3 + 1
q_5 = q_4 + 1
p2 = q_5

Will become the set of constraints
q_2 = q_1
q_2 = q_1 + 1
q_3 = q_2
q_3 = q_2 + 1
q_4 = q_3
q_4 = q_3 + 1
q_5 = q_4
q_5 = q_4 +1

Hmmm.
You are right, we should give up here and collapse the variable.
Sigh.

Well, we can always just make it give up on all direct pointer
arithmetic, rather than try to handle it at all :)

> Somehow it
> doesn't cause problems to "fall back" to &p[0] for &p[0] + 1B,
> but it would be nice to have some more confidence in that parts :)

TBQH, the only way i'll ever have confidence in these parts is if we
make it stop trying to come up with everything a pointer to a
structure could deref.
Note that this also prevents us from doing cool things.

In particular, because we say a pointer to struct p points to all it's
members, we can never simply propagate the object it does point to if
it points to a single object.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30252


  parent reply	other threads:[~2007-06-05 22:44 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-18 15:56 [Bug tree-optimization/30252] New: [4.2/4.3 " belyshev at depni dot sinp dot msu dot ru
2006-12-18 15:57 ` [Bug tree-optimization/30252] " belyshev at depni dot sinp dot msu dot ru
2006-12-18 18:24 ` pinskia at gcc dot gnu dot org
2006-12-18 19:04 ` pinskia at gcc dot gnu dot org
2006-12-19 11:11 ` [Bug tree-optimization/30252] [4.2 " belyshev at depni dot sinp dot msu dot ru
2006-12-27 16:18 ` rguenth at gcc dot gnu dot org
2006-12-27 20:19 ` belyshev at depni dot sinp dot msu dot ru
2007-02-19 20:52 ` mmitchel at gcc dot gnu dot org
2007-04-29  7:02 ` pinskia at gcc dot gnu dot org
2007-04-29  8:58 ` belyshev at depni dot sinp dot msu dot ru
2007-04-30  2:25 ` bangerth at dealii dot org
2007-04-30 14:16 ` pluto at agmk dot net
2007-04-30 14:29 ` pluto at agmk dot net
2007-04-30 14:43 ` bangerth at dealii dot org
2007-05-01  1:11 ` giovannibajo at libero dot it
2007-05-01  1:39 ` bangerth at math dot tamu dot edu
2007-05-01  7:59 ` pluto at agmk dot net
2007-05-01 12:35 ` rguenth at gcc dot gnu dot org
2007-05-01 13:01 ` rguenth at gcc dot gnu dot org
2007-05-01 13:05 ` [Bug c++/30252] " rguenth at gcc dot gnu dot org
2007-05-02 20:59 ` mmitchel at gcc dot gnu dot org
2007-05-13  0:43 ` ismail at pardus dot org dot tr
2007-05-13 10:34 ` rguenth at gcc dot gnu dot org
2007-05-13 12:02 ` rguenth at gcc dot gnu dot org
2007-05-14 19:04 ` dberlin at gcc dot gnu dot org
2007-05-14 21:26 ` mmitchel at gcc dot gnu dot org
2007-05-15  7:59 ` rguenth at gcc dot gnu dot org
2007-06-04 15:28 ` rguenth at gcc dot gnu dot org
2007-06-04 15:45 ` rguenth at gcc dot gnu dot org
2007-06-05  9:27 ` rguenth at gcc dot gnu dot org
2007-06-05 12:05 ` rguenth at gcc dot gnu dot org
2007-06-05 15:01 ` rguenth at gcc dot gnu dot org
2007-06-05 15:57 ` rguenth at gcc dot gnu dot org
2007-06-05 16:20 ` dberlin at dberlin dot org
2007-06-05 16:30 ` rguenther at suse dot de
2007-06-05 17:45 ` dberlin at dberlin dot org
2007-06-05 18:25 ` matz at gcc dot gnu dot org
2007-06-05 19:07 ` dberlin at dberlin dot org
2007-06-05 19:59 ` rguenther at suse dot de
2007-06-05 22:44 ` dberlin at dberlin dot org [this message]
2007-06-06  8:50 ` rguenther at suse dot de
2007-06-06 15:52 ` dberlin at dberlin dot org
2007-06-19  9:24 ` rguenth at gcc dot gnu dot org
2007-06-19  9:46 ` rguenth at gcc dot gnu dot org

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=20070605224406.23157.qmail@sourceware.org \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /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).