【发布时间】:2016-04-25 09:25:56
【问题描述】:
我正在使用以下程序检查 llvm 的常量传播传递 -sccp
int a,b,c;
a=1;
b=2;
c=a+b;
我期待一个输出
%a = alloca i32, align 4
%b = alloca i32, align 4
%c = alloca i32, align 4
store i32 1, i32* %a, align 4
store i32 2, i32* %b, align 4
store i32 3, i32* %c, align 4 //constant propagation
但我得到以下输出
%a = alloca i32, align 4
%b = alloca i32, align 4
%c = alloca i32, align 4
store i32 1, i32* %a, align 4
store i32 2, i32* %b, align 4
%0 = load i32, i32* %a, align 4
%1 = load i32, i32* %b, align 4
%add = add nsw i32 %0, %1 //no constant propagation
store i32 %add, i32* %c, align 4
我在这里做错了什么?
【问题讨论】:
-
在llvm中是否有任何pass来实现这种不断的传播
标签: compiler-construction llvm compiler-optimization llvm-clang