Optimization 源文件中循环的位置

Optimization 源文件中循环的位置,optimization,compiler-construction,llvm,Optimization,Compiler Construction,Llvm,在我的过程中,我想知道环路的位置。例如,在For循环中,例如: for(int i=0; i<n; i++) { ... } 用于。。。在源文件中是我感兴趣的。如果.bc文件是由llvm gcc使用-O0生成的,那么我可以通过读取循环的第一条指令的行号轻松地获得此信息。但是,如果使用-O3,此方法不起作用。在这种情况下,我如何才能获得循环位置?通常不能,因为编译器可能会转换循环,例如展开、反转等。但是循环位置信息可以添加到指令的元数据中。我知道IBM的XL编译器能够做到这一点。

在我的过程中,我想知道环路的位置。例如,在For循环中,例如:

for(int i=0; i<n; i++) { ... }

用于。。。在源文件中是我感兴趣的。如果.bc文件是由llvm gcc使用-O0生成的,那么我可以通过读取循环的第一条指令的行号轻松地获得此信息。但是,如果使用-O3,此方法不起作用。在这种情况下,我如何才能获得循环位置?

通常不能,因为编译器可能会转换循环,例如展开、反转等。

但是循环位置信息可以添加到指令的元数据中。我知道IBM的XL编译器能够做到这一点。