[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