Bug 13646 – static darray & pointer initializers always allocated in shared(global) memory rather than in TLS

Status
RESOLVED
Resolution
DUPLICATE
Severity
critical
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2014-10-22T08:29:16Z
Last change time
2017-08-22T13:40:48Z
Assigned to
No Owner
Creator
floating.point
See also
https://issues.dlang.org/show_bug.cgi?id=17604

Comments

Comment #0 by floating.point — 2014-10-22T08:29:16Z
import std.stdio, std.parallelism; int[] buf = [1]; // int* buf = [1]; void main(){ writeln("tls var addr = ", &buf,", ptr = ", buf.ptr, ", value = ", buf[0]," in main before"); auto task = task!fun(); task.executeInNewThread(); task.yieldForce(); writeln("tls var addr = ", &buf,", ptr = ", buf.ptr, ", value = ", buf[0]," in main after"); } void fun () { writeln("tls var addr = ", &buf,", ptr = ", buf.ptr, ", value = ", buf[0]," in child before"); buf[0] = 2; writeln("tls var addr = ", &buf,", ptr = ", buf.ptr, ", value = ", buf[0]," in child after"); } produce output: tls var addr = 1B21A0, ptr = 425080, value = 1 in main before tls var addr = 1C93E8, ptr = 425080, value = 1 in child before tls var addr = 1C93E8, ptr = 425080, value = 2 in child after tls var addr = 1B21A0, ptr = 425080, value = 2 in main after where 2 independent variables points to same global data
Comment #1 by dfj1esp02 — 2017-08-22T13:40:48Z
*** This issue has been marked as a duplicate of issue 2947 ***