我目前正在玩LLVM,我正在尝试编写一些优化器来熟悉opt和clang.我写了一个test.c文件,如下所示:
int foo(int aa, int bb, int cc){
int sum = aa + bb;
return sum/cc;
}
Run Code Online (Sandbox Code Playgroud)
我编译了源代码并生成了2个.ll文件,一个未经优化,一个用mem2reg优化器传递:
clang -emit-llvm -O0 -c test.c -o test.bc
llvm-dis test.bc
opt -mem2reg -S test.ll -o test-mem2reg.ll
Run Code Online (Sandbox Code Playgroud)
两个.ll文件都给了我以下输出:
ModuleID = 'test.bc'
source_filename = "test.c"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
; Function Attrs: noinline nounwind optnone uwtable
define i32 @foo(i32 %aa, i32 %bb, i32 %cc) #0 {
entry:
%aa.addr = alloca i32, align 4
%bb.addr = alloca i32, align 4
%cc.addr = …Run Code Online (Sandbox Code Playgroud)