slightly silly assembly for testing whether a Word# is 0##
{-# LANGUAGE MagicHash #-}
module Zero where
import GHC.Exts
f :: Word# -> Word#
f 0## = 1##
f x## = x##
in HEAD produces
0000000000000018 <ZZero_f_info>:
18: 49 83 fe 01 cmp $0x1,%r14
1c: 72 06 jb 24 <ZZero_f_info+0xc>
1e: 4c 89 f3 mov %r14,%rbx
21: ff 65 00 jmpq *0x0(%rbp)
24: bb 01 00 00 00 mov $0x1,%ebx
29: ff 65 00 jmpq *0x0(%rbp)
Well, cmp $0x1,%r14/jb
isn't wrong. But it's a byte longer than test %r14,%r14/je
, so the latter should be preferred.
GHC 7.10 produced the test/je
version, so I'm guessing this is a side effect of nomeata's work on #10137 (closed).
Trac metadata
Trac field | Value |
---|---|
Version | 7.11 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | low |
Resolution | Unresolved |
Component | Compiler (CodeGen) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |