Mrmaxmeier opened issue #4067:
.clifTest CaseThis snipped started crashing with
register allocation: EntryLiveinin e4b7c8a7376c0b4196262b176373b606c7b4c760 (x86_64):function u0:0(i32, i64) -> i32 fast { block0(v1: i32, v2: i64): v3 = load.i32 notrap aligned v2 v4 = umax v1, v3 return v4 }I'm not sure why/if this issue is only present with the integer min/max implementations, but I'd guess that it only surfaces with load operands reused in both a conditional move and compare.
CC @cfallin
Versions and Environment
Cranelift version or commit: e4b7c8a7376c0b4196262b176373b606c7b4c760
Operating system: Linux
Architecture: x86_64
Mrmaxmeier labeled issue #4067:
.clifTest CaseThis snipped started crashing with
register allocation: EntryLiveinin e4b7c8a7376c0b4196262b176373b606c7b4c760 (x86_64):function u0:0(i32, i64) -> i32 fast { block0(v1: i32, v2: i64): v3 = load.i32 notrap aligned v2 v4 = umax v1, v3 return v4 }I'm not sure why/if this issue is only present with the integer min/max implementations, but I'd guess that it only surfaces with load operands reused in both a conditional move and compare.
CC @cfallin
Versions and Environment
Cranelift version or commit: e4b7c8a7376c0b4196262b176373b606c7b4c760
Operating system: Linux
Architecture: x86_64
Mrmaxmeier labeled issue #4067:
.clifTest CaseThis snipped started crashing with
register allocation: EntryLiveinin e4b7c8a7376c0b4196262b176373b606c7b4c760 (x86_64):function u0:0(i32, i64) -> i32 fast { block0(v1: i32, v2: i64): v3 = load.i32 notrap aligned v2 v4 = umax v1, v3 return v4 }I'm not sure why/if this issue is only present with the integer min/max implementations, but I'd guess that it only surfaces with load operands reused in both a conditional move and compare.
CC @cfallin
Versions and Environment
Cranelift version or commit: e4b7c8a7376c0b4196262b176373b606c7b4c760
Operating system: Linux
Architecture: x86_64
cfallin commented on issue #4067:
Thanks for the report -- taking a look right away!
cfallin closed issue #4067:
.clifTest CaseThis snipped started crashing with
register allocation: EntryLiveinin e4b7c8a7376c0b4196262b176373b606c7b4c760 (x86_64):function u0:0(i32, i64) -> i32 fast { block0(v1: i32, v2: i64): v3 = load.i32 notrap aligned v2 v4 = umax v1, v3 return v4 }I'm not sure why/if this issue is only present with the integer min/max implementations, but I'd guess that it only surfaces with load operands reused in both a conditional move and compare.
CC @cfallin
Versions and Environment
Cranelift version or commit: e4b7c8a7376c0b4196262b176373b606c7b4c760
Operating system: Linux
Architecture: x86_64
Last updated: Jan 09 2026 at 13:15 UTC