array literals and the read only segment
Johan Engelen via Digitalmars-d
digitalmars-d at puremagic.com
Mon Dec 12 12:32:01 PST 2016
On Monday, 12 December 2016 at 06:28:09 UTC, Shachar Shemesh
wrote:
>
> DMD 2.072.1 and ldc 2.070.2
>
> It's easy to verify. Just create a large array (1M) and check
> the segment sizes of the result.
For LDC, it depends whether the variables are defined inside a
function or not.
```
immutable ubyte[] array1 = [ 1, 2, 3, 4 ]; // ends up in data
section
immutable ubyte[] array2 = cast(immutable ubyte[]) x"01 02 03
04"; // not in data section
void foo()
{
// Both initializers are _not_ put in the data section.
immutable ubyte[] array1 = [ 1, 2, 3, 4 ];
immutable ubyte[] array2 = cast(immutable ubyte[]) x"01 02 03
04";
}
```
The module-scope variable's initializer ending up in the data
section is a bug I think, but I have not thought it through
enough.
-Johan
More information about the Digitalmars-d
mailing list