0
在我的傳球中,我想知道循環的位置。例如,在for循環中,如:源文件中循環的位置
for(int i=0; i<n; i++) { ... }
的源文件中的行號(...)是我很感興趣,如果是由LLVM-GCC產生的.BC文件。用-O0,我可以通過讀取循環的第一條指令的行號來輕鬆獲取這些信息。但是,如果使用-O3,則此方法不起作用。在這種情況下,我仍然可以獲得環路位置?
在我的傳球中,我想知道循環的位置。例如,在for循環中,如:源文件中循環的位置
for(int i=0; i<n; i++) { ... }
的源文件中的行號(...)是我很感興趣,如果是由LLVM-GCC產生的.BC文件。用-O0,我可以通過讀取循環的第一條指令的行號來輕鬆獲取這些信息。但是,如果使用-O3,則此方法不起作用。在這種情況下,我仍然可以獲得環路位置?
一般來說,你不能,因爲你的循環可能會被編譯器轉化(例如展開,扭轉等)
但環位置信息可以被添加到元數據的指令。我知道IBM的XL編譯器能夠做到這一點。 – dalibocai 2011-04-22 14:04:28