From 809b84edba988408071630b1e89a8c06be07aeed Mon Sep 17 00:00:00 2001 From: Trevor Gross Date: Thu, 11 Apr 2024 14:23:25 -0400 Subject: [PATCH] Add v0 symbol mangling for `f16` and `f128` As discussed at , use the crate encoding to represent new primitives. --- compiler/rustc_symbol_mangling/src/v0.rs | 5 ++--- src/doc/rustc/src/symbol-mangling/v0.md | 2 ++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/rustc_symbol_mangling/src/v0.rs b/compiler/rustc_symbol_mangling/src/v0.rs index 1de2ecbb700..9fb217d2f84 100644 --- a/compiler/rustc_symbol_mangling/src/v0.rs +++ b/compiler/rustc_symbol_mangling/src/v0.rs @@ -319,11 +319,10 @@ fn print_type(&mut self, ty: Ty<'tcx>) -> Result<(), PrintError> { ty::Uint(UintTy::U64) => "y", ty::Uint(UintTy::U128) => "o", ty::Uint(UintTy::Usize) => "j", - // FIXME(f16_f128): update these once `rustc-demangle` supports the new types - ty::Float(FloatTy::F16) => unimplemented!("f16_f128"), + ty::Float(FloatTy::F16) => "C3f16", ty::Float(FloatTy::F32) => "f", ty::Float(FloatTy::F64) => "d", - ty::Float(FloatTy::F128) => unimplemented!("f16_f128"), + ty::Float(FloatTy::F128) => "C4f128", ty::Never => "z", // Placeholders (should be demangled as `_`). diff --git a/src/doc/rustc/src/symbol-mangling/v0.md b/src/doc/rustc/src/symbol-mangling/v0.md index 61f747fac83..763694a9fda 100644 --- a/src/doc/rustc/src/symbol-mangling/v0.md +++ b/src/doc/rustc/src/symbol-mangling/v0.md @@ -739,6 +739,8 @@ The type encodings based on the initial tag character are: * `z` — `!` * `p` — [placeholder] `_` +Remaining primitives are encoded as a crate production, e.g. `C4f128`. + * `A` — An [array][reference-array] `[T; N]`. > array-type → `A` *[type]* *[const]*