Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 4555737

Browse files
committed
Split symbol name and signature calculation
1 parent 2b58d8c commit 4555737

File tree

5 files changed

+16
-18
lines changed

5 files changed

+16
-18
lines changed

src/abi/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -179,12 +179,12 @@ fn clif_sig_from_fn_sig<'tcx>(
179179
}
180180
}
181181

182-
pub(crate) fn get_function_name_and_sig<'tcx>(
182+
pub(crate) fn get_function_sig<'tcx>(
183183
tcx: TyCtxt<'tcx>,
184184
triple: &target_lexicon::Triple,
185185
inst: Instance<'tcx>,
186186
support_vararg: bool,
187-
) -> (String, Signature) {
187+
) -> Signature {
188188
assert!(!inst.substs.needs_infer());
189189
let fn_sig = tcx
190190
.normalize_erasing_late_bound_regions(ParamEnv::reveal_all(), fn_sig_for_fn_abi(tcx, inst));
@@ -194,14 +194,13 @@ pub(crate) fn get_function_name_and_sig<'tcx>(
194194
"Variadic function definitions are not yet supported",
195195
);
196196
}
197-
let sig = clif_sig_from_fn_sig(
197+
clif_sig_from_fn_sig(
198198
tcx,
199199
triple,
200200
fn_sig,
201201
false,
202202
inst.def.requires_caller_location(tcx),
203-
);
204-
(tcx.symbol_name(inst).name.to_string(), sig)
203+
)
205204
}
206205

207206
/// Instance must be monomorphized
@@ -210,7 +209,8 @@ pub(crate) fn import_function<'tcx>(
210209
module: &mut impl Module,
211210
inst: Instance<'tcx>,
212211
) -> FuncId {
213-
let (name, sig) = get_function_name_and_sig(tcx, module.isa().triple(), inst, true);
212+
let name = tcx.symbol_name(inst).name.to_string();
213+
let sig = get_function_sig(tcx, module.isa().triple(), inst, true);
214214
module
215215
.declare_function(&name, Linkage::Import, &sig)
216216
.unwrap()

src/base.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ pub(crate) fn codegen_fn<'tcx>(
1919
let mir = tcx.instance_mir(instance.def);
2020

2121
// Declare function
22-
let (name, sig) = get_function_name_and_sig(tcx, cx.module.isa().triple(), instance, false);
22+
let name = tcx.symbol_name(instance).name.to_string();
23+
let sig = get_function_sig(tcx, cx.module.isa().triple(), instance, false);
2324
let func_id = cx.module.declare_function(&name, linkage, &sig).unwrap();
2425

2526
cx.cached_context.clear();

src/driver/jit.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -156,12 +156,8 @@ extern "C" fn __clif_jit_fn(instance_ptr: *const Instance<'static>) -> *const u8
156156
let jit_module = jit_module.as_mut().unwrap();
157157
let mut cx = crate::CodegenCx::new(tcx, jit_module, false, false);
158158

159-
let (name, sig) = crate::abi::get_function_name_and_sig(
160-
tcx,
161-
cx.module.isa().triple(),
162-
instance,
163-
true,
164-
);
159+
let name = tcx.symbol_name(instance).name.to_string();
160+
let sig = crate::abi::get_function_sig(tcx, cx.module.isa().triple(), instance, true);
165161
let func_id = cx
166162
.module
167163
.declare_function(&name, Linkage::Export, &sig)
@@ -246,8 +242,8 @@ pub(super) fn codegen_shim<'tcx>(cx: &mut CodegenCx<'tcx, impl Module>, inst: In
246242

247243
let pointer_type = cx.module.target_config().pointer_type();
248244

249-
let (name, sig) =
250-
crate::abi::get_function_name_and_sig(tcx, cx.module.isa().triple(), inst, true);
245+
let name = tcx.symbol_name(inst).name.to_string();
246+
let sig = crate::abi::get_function_sig(tcx, cx.module.isa().triple(), inst, true);
251247
let func_id = cx
252248
.module
253249
.declare_function(&name, Linkage::Export, &sig)

src/driver/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ fn predefine_mono_items<'tcx>(
5050
for &(mono_item, (linkage, visibility)) in mono_items {
5151
match mono_item {
5252
MonoItem::Fn(instance) => {
53-
let (name, sig) = get_function_name_and_sig(
53+
let name = cx.tcx.symbol_name(instance).name.to_string();
54+
let sig= get_function_sig(
5455
cx.tcx,
5556
cx.module.isa().triple(),
5657
instance,

src/main_shim.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ pub(crate) fn maybe_create_entry_wrapper(
6969

7070
let instance = Instance::mono(tcx, rust_main_def_id).polymorphize(tcx);
7171

72-
let (main_name, main_sig) =
73-
get_function_name_and_sig(tcx, m.isa().triple(), instance, false);
72+
let main_name = tcx.symbol_name(instance).name.to_string();
73+
let main_sig = get_function_sig(tcx, m.isa().triple(), instance, false);
7474
let main_func_id = m
7575
.declare_function(&main_name, Linkage::Import, &main_sig)
7676
.unwrap();

0 commit comments

Comments
 (0)