https://bugzilla.gdcproject.org/show_bug.cgi?id=286
Bug ID: 286 Summary: Returning AA value whose key is a RefCounted type gets wrong value. Product: GDC Version: development Hardware: All OS: All Status: NEW Severity: normal Priority: Normal Component: gdc Assignee: ibuc...@gdcproject.org Reporter: ibuc...@gdcproject.org --- import std.uni; import std.stdio; //accessor with caching CharMatcher getMatcher(CodepointSet set) { static CharMatcher[CodepointSet] matcherCache; auto p = set in matcherCache; if (p) return *p; return (matcherCache[set] = CharMatcher(set)); } struct CharMatcher { uint[4] filter; this(CodepointSet set) { auto asciiSet = set & unicode.ASCII; foreach (iv; asciiSet.byInterval) { foreach (v; iv.a .. iv.b) { immutable i = ((v >> 7) ^ v) & 0x7F; filter[i >> 5] |= 1 << (i & 31); } } writeln(this); } } void main() { auto t = getMatcher(unicode.Nd); writeln(t); if (t.filter == [0,0,0,0]) assert(0); return; } --- Outputs: CharMatcher([0, 67043328, 0, 0]) CharMatcher([0, 0, 0, 0]) Illegal instruction Only happens with -frelease. -- You are receiving this mail because: You are watching all bug changes.