Последний базовый блок функции в LLVM - PullRequest
8 голосов
/ 14 марта 2012

Гарантирует ли back () функции возврат базового блока терминатора CFG в LLVM?

Ответы [ 2 ]

4 голосов
/ 14 марта 2012

Я не думаю, так как не существует такого понятия, как «терминатор BB»: вполне может быть несколько BB, завершенных возвратом.

1 голос
/ 04 августа 2016

Нет.Может быть несколько основных блоков функции-терминатора, например, функция, содержащая несколько операторов возврата.каждый базовый блок, который содержит оператор возврата из функции, будет затем называться блоком терминатора или базовым блоком терминатора.Чтобы обнаружить все базовые блоки, которые являются базовыми блоками терминатора (т.е. содержат оператор возврата), выполните следующие действия:

runOnFunction {
   for BB in F:
      for I in BB:
          if (ReturnInst *RI = dyn_cast<ReturnInst> I)
             BB is terminator Basic Block
          endif
      endfor
   endfor
}
...