https://issues.dlang.org/show_bug.cgi?id=17220
--- Comment #3 from Martin Nowak <[email protected]> --- The cmp runs on the `lhs` symbol, while only the `val` symbol get's initialized. Not sure, but seems like the copy got elided. Here is the assembly for when the size of BCValue != size_t.sizeof * BCTypeEnum.i32 mov cl, 8 ; 0018 _ B1, 08 mov byte ptr [rbp-78H], cl ; 001A _ 88. 4D, 88 lea rsi, [rbp-78H] ; 001D _ 48: 8D. 75, 88 lea rdi, [rbp-38H] ; 0021 _ 48: 8D. 7D, C8 mov cl, 7 ; 0025 _ B1, 07 rep movsq ; 0027 _ F3 48: A5 cmp byte ptr [rbp-38H], 8 ; 002A _ 80. 7D, C8, 08 jz ?_003 ; 002E _ 74, 0A Apparently the `mov cl, 8` instruction is a CSE in the bug case, no idea why the rep movsq get's omitted b/c of that though. --
