Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在LLVM位代码中标识循环?_C++_Assembly_Llvm - Fatal编程技术网

C++ 如何在LLVM位代码中标识循环?

C++ 如何在LLVM位代码中标识循环?,c++,assembly,llvm,C++,Assembly,Llvm,我有一个LLVM位代码文件,我正在运行一个循环传递。每次我到达一个循环(“RunOnLop”),我都会提取几个关于循环体的信息(即,循环体中的指令数)并打印出来。但是,我需要一种将此信息与特定循环关联的方法-换句话说,我需要打印从中提取信息的循环的“名称”。我不确定“名称”是什么意思,但一种方法是打印与循环闩锁块或类似内容关联的调试信息(行号/列) 另一种方法是使用元数据唯一地标识每个循环,并将提取的信息与该标识符相关联 我也有类似的需求,所以我为此创建了一个。请注意,这种方法对编译器优化非常敏

我有一个LLVM位代码文件,我正在运行一个循环传递。每次我到达一个循环(“RunOnLop”),我都会提取几个关于循环体的信息(即,循环体中的指令数)并打印出来。但是,我需要一种将此信息与特定循环关联的方法-换句话说,我需要打印从中提取信息的循环的“名称”。

我不确定“名称”是什么意思,但一种方法是打印与循环闩锁块或类似内容关联的调试信息(行号/列)

另一种方法是使用元数据唯一地标识每个循环,并将提取的信息与该标识符相关联

我也有类似的需求,所以我为此创建了一个。请注意,这种方法对编译器优化非常敏感,并且在发生这种情况时(例如,如果包含循环的函数是内联的),它不会保留ID。为了获得最佳结果(更接近源代码),请在使用
-O0
编译的IR上使用它。此外,在完成信息收集之后,可以应用优化

然而,对于一些简单的事情,我会选择第一种方法