2012-12-21 64 views
1

我有一些獲取基本塊索引的問題。LLVM getBasicBlockIndex()或等效的

for (Function::iterator II = F.begin(), EE = F.end(); II != EE; ++II, ++ii) 
{ BasicBlock* BB=II; 

我有segfaults或不能使用LLVM中找到的幾種方法的複雜結構。你知道如何簡單地用盡可能在發現的方法:

http://llvm.org/doxygen/Instructions_8h_source.html#l02136

http://llvm.org/doxygen/EdgeBundles_8cpp_source.html#l00078

或者等價的東西?我只想得到一個基本塊的ID。

謝謝!

+3

你心目中的基本塊「索引」或「身份證」是什麼? –

回答

1

正如Eli Bendersky在上面的評論中指出的那樣,這取決於你對索引的解釋。如果您只對基本塊的唯一標識符感興趣,則基本塊的名稱在函數中是唯一的。你可以使用

BB->getName() 

還有其他類型的ID與基本塊相關,這取決於算法的性質。例如,如果您正在使用Keith Cooper的迭代耙指算法編寫支配樹構造算法,則您會將每個基本塊與增量ID以深度反比的第一順序相關聯。此ID不是BasicBlock結構的一部分,應由您維護。

+3

不幸的是getName()在塊沒有標籤時返回空字符串。 – thSoft