[Issue 3183] Spec of align attribute needs work
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Aug 31 04:57:29 PDT 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3183
--- Comment #2 from Stewart Gordon <smjg at iname.com> 2009-08-31 04:57:28 PDT ---
(In reply to comment #1)
> 2. There's always a companion C compiler, as D relies on the existence of the C
> runtime library.
So a prerequisite for writing a D compiler from scratch is to write a C
compiler first? Still, that doesn't answer my question beyond the first 7
words.
> 3. It's the way the companion C compiler aligns.
Still, that this may be absolute or relative depending on the companion C
compiler ought to be mentioned in the D spec at least to crack down on the user
confusion of which I have been a victim.
> 4. Unions members are all at offset 0. Unions are aligned according to the
> alignment of their largest field.
You mean aligned in a containing struct, or aligned absolutely _if_ the
implementation interprets alignment as absolute? Neither seems to be happening
in my test (1.046):
----------
align(1) struct Qwert {
byte b1;
align(1) struct {
byte b2;
union {
align (4) struct { int i; }
}
}
}
pragma(msg, "Qwert.alignof == " ~ Qwert.alignof.stringof);
pragma(msg, "Qwert.b1.alignof == " ~ Qwert.b1.alignof.stringof);
pragma(msg, "Qwert.b2.alignof == " ~ Qwert.b2.alignof.stringof);
pragma(msg, "Qwert.i.alignof == " ~ Qwert.i.alignof.stringof);
pragma(msg, "Qwert.b1.offsetof == " ~ Qwert.b1.offsetof.stringof);
pragma(msg, "Qwert.b2.offsetof == " ~ Qwert.b2.offsetof.stringof);
pragma(msg, "Qwert.i.offsetof == " ~ Qwert.i.offsetof.stringof);
----------
Qwert.alignof == 1u
Qwert.b1.alignof == 1u
Qwert.b2.alignof == 1u
Qwert.i.alignof == 4u
Qwert.b1.offsetof == 0u
Qwert.b2.offsetof == 1u
Qwert.i.offsetof == 2u
----------
But to both 4 and 5, I said "should", i.e. I was pondering over what's
desirable and whether the spec ought to be changed, not what the current spec
or behaviour is.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list