Use mangled type names in `cc_struct_upcast_impl`'s `cast_fn_name`.

PiperOrigin-RevId: 471545380
diff --git a/rs_bindings_from_cc/src_code_gen.rs b/rs_bindings_from_cc/src_code_gen.rs
index bd8bc85..f96b863 100644
--- a/rs_bindings_from_cc/src_code_gen.rs
+++ b/rs_bindings_from_cc/src_code_gen.rs
@@ -3165,11 +3165,9 @@
             let offset = Literal::i64_unsuffixed(offset);
             body = quote! {(derived as *const _ as *const u8).offset(#offset) as *const #base_name};
         } else {
-            // TODO(b/216195042): use mangled names here, or otherwise guarantee
-            // non-collision.
             let cast_fn_name = make_rs_ident(&format!(
                 "__crubit_dynamic_upcast__{}__to__{}",
-                record.rs_name, base_record.rs_name
+                record.mangled_cc_name, base_record.mangled_cc_name
             ));
             let base_cc_name = cc_type_name_for_record(base_record.as_ref(), ir)?;
             let derived_cc_name = cc_type_name_for_record(record.as_ref(), ir)?;
@@ -5526,7 +5524,7 @@
             quote! {
                 unsafe impl oops::Inherits<crate::VirtualBase> for crate::Derived {
                     unsafe fn upcast_ptr(derived: *const Self) -> *const crate::VirtualBase {
-                        crate::detail::__crubit_dynamic_upcast__Derived__to__VirtualBase(derived)
+                        crate::detail::__crubit_dynamic_upcast__7Derived__to__11VirtualBase(derived)
                     }
                 }
             }