[llvm-dev] How to optimize out the duplicated memory load instructions? (original) (raw)

Terry Guo via llvm-dev llvm-dev at lists.llvm.org
Thu Jul 23 08:25:21 PDT 2020


Hi there,

The raw input IR is composed by my tool and the below one is produced by llvm opt tool with O3 optimization level. I am pretty sure that the two load instructions( %mem_base60 and %mem_base66) are referring to the same memory location. How can I instruct llvm optimization pass to optimize out the %mem_base66 and make the subsequent code reuse the %mem_base60? I tried with metadata 'alias.scope' and 'noalias' and it doesn't help. Thanks for any advice.

392542 check_exce_succ59: ; preds = %check_exce_succ40 392543 %mem_base60 = load i8, i8* %mem_base_addr_ptr, align 8 392544 %offset161 = add i32 %call56, 4 392545 %11 = sext i32 %offset161 to i64 392546 %maddr62 = getelementptr inbounds i8, i8* %mem_base60, i64 %11 392547 %data_ptr63 = bitcast i8* %maddr62 to i64* 392548 store i64 0, i64* %data_ptr63, align 8 392549 %mem_base66 = load i8, i8* %mem_base_addr_ptr, align 8 392550 %offset167 = add i32 %call56, 12 392551 %12 = sext i32 %offset167 to i64 392552 %maddr68 = getelementptr inbounds i8, i8* %mem_base66, i64 %12 392553 %data_ptr69 = bitcast i8* %maddr68 to i32* 392554 store i32 %call, i32* %data_ptr69, align 8

BR, Terry -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200723/5b107713/attachment.html>



More information about the llvm-dev mailing list