From: Geert bosch <bosch@gnat.com>
To: gcc@gcc.gnu.org
Subject: ICE outputting unaligned fp constant on powerpc-apple-darwin5.1
Date: Thu, 22 Nov 2001 03:40:00 -0000 [thread overview]
Message-ID: <EF52EEE2-E529-11D5-8EFA-00039344BF4A@gnat.com> (raw)
Compiler bootstraps fine, but fails with the following test case:
> struct s {
> char c;
> double d;
> };
>
> struct s t [] = { { 0, 0.0 } };
It hits an ICE in assemble_real, at varasm.c:2169:
> if (align < GET_MODE_ALIGNMENT (mode))
> abort ();
According to comments in darwin.h, Darwin word-aligns FP doubles
but doubleword-aligns 64-bit ints and increases natural record
alignment to doubleword if the first field is an FP double while
the FP fields remain word aligned.
GET_MODE_ALIGNMENT is defined as below in rtl.c, and will cause
the mode alignment for doubles to be 64 bits, which is wrong.
I wonder how this is supposed to work and how this should be fixed.
Should I write a new get_darwin_mode_alignment that returns
32 for double and calls get_mode_alignment otherwise,
or am I completely wrong here?
-Geert
> /* Return the alignment of MODE. This will be bounded by 1 and
> BIGGEST_ALIGNMENT. */
>
> unsigned int
> get_mode_alignment (mode)
> enum machine_mode mode;
> {
> unsigned int alignment = GET_MODE_UNIT_SIZE (mode);
> /* Extract the LSB of the size. */
^^^ shouldn't this be MSB (most significant bit)?
> alignment = alignment & -alignment;
> alignment *= BITS_PER_UNIT;
>
> alignment = MIN (BIGGEST_ALIGNMENT, MAX (1, alignment));
> return alignment;
> }
WARNING: multiple messages have this Message-ID
From: Geert bosch <bosch@gnat.com>
To: gcc@gcc.gnu.org
Subject: ICE outputting unaligned fp constant on powerpc-apple-darwin5.1
Date: Thu, 29 Nov 2001 16:33:00 -0000 [thread overview]
Message-ID: <EF52EEE2-E529-11D5-8EFA-00039344BF4A@gnat.com> (raw)
Message-ID: <20011129163300.ofZqneoDrkpsB6sQ0lKZSIb2gLP5pjclQPZ1b__2xhs@z> (raw)
Compiler bootstraps fine, but fails with the following test case:
> struct s {
> char c;
> double d;
> };
>
> struct s t [] = { { 0, 0.0 } };
It hits an ICE in assemble_real, at varasm.c:2169:
> if (align < GET_MODE_ALIGNMENT (mode))
> abort ();
According to comments in darwin.h, Darwin word-aligns FP doubles
but doubleword-aligns 64-bit ints and increases natural record
alignment to doubleword if the first field is an FP double while
the FP fields remain word aligned.
GET_MODE_ALIGNMENT is defined as below in rtl.c, and will cause
the mode alignment for doubles to be 64 bits, which is wrong.
I wonder how this is supposed to work and how this should be fixed.
Should I write a new get_darwin_mode_alignment that returns
32 for double and calls get_mode_alignment otherwise,
or am I completely wrong here?
-Geert
> /* Return the alignment of MODE. This will be bounded by 1 and
> BIGGEST_ALIGNMENT. */
>
> unsigned int
> get_mode_alignment (mode)
> enum machine_mode mode;
> {
> unsigned int alignment = GET_MODE_UNIT_SIZE (mode);
> /* Extract the LSB of the size. */
^^^ shouldn't this be MSB (most significant bit)?
> alignment = alignment & -alignment;
> alignment *= BITS_PER_UNIT;
>
> alignment = MIN (BIGGEST_ALIGNMENT, MAX (1, alignment));
> return alignment;
> }
next reply other threads:[~2001-11-30 0:33 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-22 3:40 Geert bosch [this message]
2001-11-22 4:18 ` Stan Shebs
2001-11-22 8:57 ` Phil Edwards
2001-11-29 17:58 ` Phil Edwards
2001-11-29 16:47 ` Stan Shebs
2001-11-29 16:33 ` Geert bosch
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=EF52EEE2-E529-11D5-8EFA-00039344BF4A@gnat.com \
--to=bosch@gnat.com \
--cc=gcc@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).