@@ -366,7 +366,8 @@ fn gen_call_handling<'ll>(
366
366
let arg_name = format ! ( "{name}.addr" ) ;
367
367
let alloca = builder. direct_alloca ( in_ty, Align :: EIGHT , & arg_name) ;
368
368
369
- builder. store ( p, alloca, Align :: EIGHT ) ;
369
+ let v = unsafe { llvm:: LLVMGetOperand ( kernel_call, index as u32 ) . unwrap ( ) } ;
370
+ builder. store ( v, alloca, Align :: EIGHT ) ;
370
371
let val = builder. load ( in_ty, alloca, Align :: EIGHT ) ;
371
372
let gep = builder. inbounds_gep ( cx. type_f32 ( ) , val, & [ i32_0] ) ;
372
373
vals. push ( val) ;
@@ -510,7 +511,9 @@ fn gen_call_handling<'ll>(
510
511
let next = llvm:: LLVMGetNextInstruction ( offload_success) . unwrap ( ) ;
511
512
dbg ! ( & next) ;
512
513
llvm:: LLVMRustPositionAfter ( builder. llbuilder , next) ;
514
+ let called_kernel = llvm:: LLVMGetCalledValue ( next) . unwrap ( ) ;
513
515
llvm:: LLVMInstructionEraseFromParent ( next) ;
516
+ dbg ! ( & called_kernel) ;
514
517
}
515
518
516
519
// Step 4)
@@ -521,6 +524,10 @@ fn gen_call_handling<'ll>(
521
524
522
525
builder. call ( mapper_fn_ty, unregister_lib_decl, & [ tgt_bin_desc_alloca] , None ) ;
523
526
527
+ drop ( builder) ;
528
+ unsafe { llvm:: LLVMDeleteFunction ( called) } ;
529
+ dbg ! ( "survived" ) ;
530
+
524
531
// With this we generated the following begin and end mappers. We could easily generate the
525
532
// update mapper in an update.
526
533
// call void @__tgt_target_data_begin_mapper(ptr @1, i64 -1, i32 3, ptr %27, ptr %28, ptr %29, ptr @.offload_maptypes, ptr null, ptr null)
0 commit comments