Writing a pass for memory optimization
In this recipe, we will briefly discuss a transformation pass that deals with memory optimization.
Getting ready
For this recipe, you will need the opt tool installed.
How to do it…
- Write the test code on which we will run the
memcpy
optimization pass:$ cat memcopytest.ll @cst = internal constant [3 x i32] [i32 -1, i32 -1, i32 -1], align 4 declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind declare void @foo(i32*) nounwind define void @test1() nounwind { %arr = alloca [3 x i32], align 4 %arr_i8 = bitcast [3 x i32]* %arr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arr_i8, i8* bitcast ([3 x i32]* @cst to i8*), i64 12, i32 4, i1 false) %arraydecay = getelementptr ...
Get LLVM Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.