Compiler construction 在llvm中,是否可以获取有关负载的alloca的最后一个storeinst?

Compiler construction 在llvm中,是否可以获取有关负载的alloca的最后一个storeinst?,compiler-construction,llvm,Compiler Construction,Llvm,例如,如果我有以下代码: alloca a; store 3, a; store 5, a; %x = load a 在给定load指令的情况下,是否可以获取指向最新存储的指针 我知道这不是确切的llvm IR。一种非常简单的方法是获取操作数值 Value* llvm::LoadInst::getPointerOperand() 并对代码进行反向迭代以查找它 但我认为优势分析提供了这种信息。一种非常简单的方法是获取操作数值 Value* llvm::LoadInst::getPointerO

例如,如果我有以下代码:

alloca a;
store 3, a;
store 5, a;
%x = load a
在给定load指令的情况下,是否可以获取指向最新存储的指针


我知道这不是确切的llvm IR。

一种非常简单的方法是获取操作数值

Value* llvm::LoadInst::getPointerOperand()
并对代码进行反向迭代以查找它


但我认为优势分析提供了这种信息。

一种非常简单的方法是获取操作数值

Value* llvm::LoadInst::getPointerOperand()
并对代码进行反向迭代以查找它


但我认为优势度分析提供了此类信息。

您是否假设存储区与加载区位于同一个基本块中?不一定,但这将是一个开始。如果它不在同一个基本块中,通常会有多个可能的存储区,可能是达到加载的任何给定时间的最新存储区。这就是我问的原因。您是否假设存储与加载位于同一个基本块中?不一定,但这将是一个开始。如果它不在同一个基本块中,通常会有多个可能的存储,它们可能是到达加载的任何给定时间的最新存储。这就是我问的原因。