e37366f8dd
Three classes of fix from the LLVM-IR audit: 1. != on Float: fcmp une, NOT fcmp one. one is 'ordered and not equal' (false for nan!=nan, breaks IEEE / user-fixed constraint). une is 'unordered or not equal' (true for nan!=nan, matches IEEE and Rust f64::ne). 2. crates/ailang-codegen/src/synth.rs touches the Float primitive at five sites the original spec missed: llvm_type, builtin_ail_type, builtin_effect_op_ret, type_descriptor (descriptor 'Fl' to avoid collision with ADT-name F-prefix), builtin_binop (becomes a transitional artefact, replaced by type-dispatched helper). 3. Float literals lower as LLVM hex-float syntax (double 0x4014...); nan/inf/neg_inf as direct SSA double constants at use site (NOT via the __unreachable__ analogue, which is a terminator instruction not a value); container slot layout precision (monomorphisation vs bitcast).