Bug 22955 – importC: wrong alignof for D struct with specified alignment

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2022-03-29T15:18:14Z
Last change time
2022-03-31T08:13:27Z
Keywords
ImportC, pull
Assigned to
No Owner
Creator
duser

Comments

Comment #0 by duser — 2022-03-29T15:18:14Z
using the "align (16) struct __uint128_t" struct from __builtins.di: _Static_assert( _Alignof(__uint128_t) == 16, "" ); // fail it gives the size of a pointer (4 or 8), same as if align() wasn't used it has the correct alignment in D: import __builtins; pragma(msg, __uint128_t.alignof); // 16 _Alignas() in C doesn't have the problem: struct S { _Alignas(16) unsigned long long a; unsigned long long b; }; _Static_assert( _Alignof(struct S) == 16, "this works" ); _Static_assert( sizeof(struct S) == 16, "this works" );
Comment #1 by dlang-bot — 2022-03-31T02:48:46Z
@WalterBright created dlang/dmd pull request #13930 "fix Issue 22955 - importC: wrong alignof for D struct with specified …" fixing this issue: - fix Issue 22955 - importC: wrong alignof for D struct with specified alignment https://github.com/dlang/dmd/pull/13930
Comment #2 by dlang-bot — 2022-03-31T08:13:27Z
dlang/dmd pull request #13930 "fix Issue 22955 - importC: wrong alignof for D struct with specified …" was merged into master: - c02a98152928993e42ad9356b1c27817846ad76c by Walter Bright: fix Issue 22955 - importC: wrong alignof for D struct with specified alignment https://github.com/dlang/dmd/pull/13930