[Issue 20629] New: atomicStore does not compile for struct using -m64
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Mar 3 10:51:27 UTC 2020
https://issues.dlang.org/show_bug.cgi?id=20629
Issue ID: 20629
Summary: atomicStore does not compile for struct using -m64
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P1
Component: druntime
Assignee: nobody at puremagic.com
Reporter: moonlightsentinel at disroot.org
The following code fails to compile with -m64 but passes with -m32:
atomics.d:
-------------------------------------
import core.atomic : atomicStore;
void main()
{
static struct Struct
{
uint a, b;
}
shared Struct s1 = Struct(1, 2);
atomicStore(s1, Struct(3, 4));
assert(cast(uint) s1.a == 3);
assert(cast(uint) s1.b == 4);
}
-------------------------------------
Compiler output:
-------------------------------------
core\internal\atomic.d(231): Error: template
core.internal.atomic.atomicExchange cannot deduce function from argument types
!(cast(MemoryOrder)5, false)(Struct*, Struct), candidates are:
core\internal\atomic.d(289): atomicExchange(MemoryOrder order =
MemoryOrder.seq, bool result = true, T)(T* dest, T value)
with order = order,
result = false,
T = Struct
must satisfy one of the following constraints:
is(T : ulong)
is(T == class)
is(T == interface)
is(T U : U*)
core\atomic.d(127): Error: template instance
core.internal.atomic.atomicStore!(cast(MemoryOrder)5, Struct) error
instantiating
core\atomic.d(142): instantiated from here:
atomicStore!(cast(MemoryOrder)5, Struct, Struct)
.\atomics.d(12): instantiated from here:
atomicStore!(cast(MemoryOrder)5, Struct, Struct)
-------------------------------------
Reduced from https://forum.dlang.org/post/hyapjxbgluhnqeipgozp@forum.dlang.org.
--
More information about the Digitalmars-d-bugs
mailing list