[Issue 21109] New: Possibly wrong codegen when using enum arrays
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Aug 4 04:15:01 UTC 2020
https://issues.dlang.org/show_bug.cgi?id=21109
Issue ID: 21109
Summary: Possibly wrong codegen when using enum arrays
Product: D
Version: D2
Hardware: All
OS: Mac OS X
Status: NEW
Severity: critical
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: andrej.mitrovich at gmail.com
-----
import std.algorithm;
import std.stdio;
struct S
{
int i;
int[] arr;
}
void main ()
{
enum q1 = [
S(2, [0, 0]),
];
enum q2 = [
S(2, [0, 0]),
];
enum q3 = [
S(2, [1, 1]),
];
foreach (idx; 0 .. 10) // 10 iterations
{
const unique_count = [q1, q2, q3].sort.uniq.count;
writefln("Uniques: %s", unique_count);
}
}
-----
This produces:
```
$ dmd -run test.d
> Uniques: 2
Uniques: 2
Uniques: 2
Uniques: 2
Uniques: 2
Uniques: 3
Uniques: 2
Uniques: 2
Uniques: 2
Uniques: 2
```
Notice how in one run the number of uniques was 3!
If I change `enum` to `auto` the bug goes away.
--
More information about the Digitalmars-d-bugs
mailing list