public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org,
Subject: RE: c++/8543: bus error with 2 word alignments
Date: Mon, 25 Nov 2002 14:55:00 -0000	[thread overview]
Message-ID: <20021119143610.11011.qmail@sources.redhat.com> (raw)

The following reply was made to PR c++/8543; it has been noted by GNATS.

From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: gcc-gnats@gcc.gnu.org
Cc:  
Subject: RE: c++/8543: bus error with 2 word alignments
Date: Tue, 19 Nov 2002 08:38:31 -0600 (CST)

 ---------- Forwarded message ----------
 Date: Tue, 19 Nov 2002 09:35:42 +0100
 From: Massimo Ravasi <massimo.ravasi@epfl.ch>
 To: bangerth@dealii.org
 Subject: RE: c++/8543: bus error with 2 word alignments
 
 
 
 
 > -----Original Message-----
 > From: bangerth@dealii.org [mailto:bangerth@dealii.org] 
 > Sent: Monday, 18 November 2002 19:12 
 > To: gcc-bugs@gcc.gnu.org; gcc-prs@gcc.gnu.org; ravasi; 
 > nobody@gcc.gnu.org
 > Subject: Re: c++/8543: bus error with 2 word alignments
 > 
 > 
 > Synopsis: bus error with 2 word alignments
 > 
 > State-Changed-From-To: open->analyzed
 > State-Changed-By: bangerth
 > State-Changed-When: Mon Nov 18 10:11:12 2002
 > State-Changed-Why:
 >     I can confirm this. However, from my limited understanding,
 >     what you do is not legal. You try something like
 >       long long i;
 >       long long *p = (long long *)((char*)&i + 4);
 >       *p = 0;
 >     As far as I can tell, trying to play games with pointers
 >     and not obeying to the alignment rules of the types they
 >     point to is invoking undefined behavior, and a bus error
 >     is undefined behavior.
 >     
 >     That you get varying results with various flags and other
 >     parts of code is to be expected then (after all, a working
 >     program is a valid interpretation of "undefined behavior").
 
 Thank you for you answer,
 
 my problem is that I have to deal with long long data which are not
 guaranteed to be aligned at a 8-byte aligned (but that are guaranteed to
 be aligned at a 4-byte address... At least. It's an array of bytes where
 data are stored in a proprietary format)
 My doubt was if this had to be considered a compiler bug or not, given
 the non deterministic behavior of the compiled code in the different
 cases.
 
 In any case, comparing long long type to double type, both of them being
 8 byte long, I think that an option for long longs like the following
 one for doubles could be useful in some cases... At least in mine ;-)
 
      -munaligned-doubles
          Assume that doubles have 8 byte alignment.  This is the
          default.
 
          With -munaligned-doubles, GCC assumes that doubles have
          8 byte alignment only if they are contained in another
          type, or if they have an absolute address.  Otherwise,
          it assumes they have 4 byte alignment.  Specifying this
          option avoids some rare compatibility problems with code
          generated by other compilers.  It is not the default
          because it results in a performance loss, especially for
          floating point code.
 
 
 By the way, is there a reason why such an option is available for SPARC
 architectures only? That is, what kind of behavior should I expect, or
 shouldn't I expect, when facing the same problem on another
 architecture?
 
 
 
 
 Bye,
 	Massimo
 


             reply	other threads:[~2002-11-19 14:36 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-25 14:55 Wolfgang Bangerth [this message]
  -- strict thread matches above, loose matches on Subject: below --
2003-01-23 15:05 nathan
2002-11-25 15:46 Wolfgang Bangerth
2002-11-25 15:36 Wolfgang Bangerth
2002-11-23  0:30 bangerth
2002-11-19 13:36 massimo.ravasi

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=20021119143610.11011.qmail@sources.redhat.com \
    --to=bangerth@ticam.utexas.edu \
    --cc=gcc-prs@gcc.gnu.org \
    --cc=nobody@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).