Add personality function.

- This is part of supporting exceptions in the future.
This commit is contained in:
Lachlan Sneff
2019-03-02 10:20:18 -08:00
parent a6fc06c908
commit 87ddf4f855
2 changed files with 13 additions and 3 deletions

View File

@ -68,6 +68,12 @@ pub fn parse_function_bodies(
let intrinsics = Intrinsics::declare(&module, &context);
let personality_func = module.add_function(
"__gxx_personality_v0",
intrinsics.i32_ty.fn_type(&[], false),
Some(Linkage::External),
);
let signatures: Map<SigIndex, FunctionType> = info
.signatures
.iter()
@ -78,11 +84,13 @@ pub fn parse_function_bodies(
.iter()
.skip(info.imported_functions.len())
.map(|(func_index, &sig_index)| {
module.add_function(
let func = module.add_function(
&format!("fn{}", func_index.index()),
signatures[sig_index],
Some(Linkage::External),
)
);
func.set_personality_function(personality_func);
func
})
.collect();
@ -110,6 +118,8 @@ pub fn parse_function_bodies(
})?;
}
module.print_to_stderr();
generate_trampolines(info, &signatures, &module, &context, &builder, &intrinsics);
let pass_manager = PassManager::create_for_module();