digitalmars.D.bugs - [Issue 20128] New: Bug in optimization of zero right shift
- d-bugmail puremagic.com (36/36) Aug 13 2019 https://issues.dlang.org/show_bug.cgi?id=20128
https://issues.dlang.org/show_bug.cgi?id=20128 Issue ID: 20128 Summary: Bug in optimization of zero right shift Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: hos hos.ac The following code produces weird results: ---- import std.stdio; void main() { auto a = new long[4]; foreach (i; 0 .. 4) { a[i] = 1 << i; } writeln(a); auto b = new long[4]; foreach (i; 0 .. 4) { b[i] = (((1 >> i) & 1) ? -1 : +1) * a[i]; } writeln(b); } ---- (https://ideone.com/2NzVaA) Its outputs are: [1, 2, 4, 8] [4294967295, 2, 4, 8] while b[0] is supposed to be -1. This happens only with -m64 and -O options. --
Aug 13 2019