Как получить график зависимости данных (DDG) с помощью LLVM?

#llvm

Вопрос:

Похоже, LLVM теперь может выдавать DDGS для каждого цикла в функции (https://github.com/llvm/llvm-project/blob/llvmorg-12.0.1/llvm/lib/Analysis/DDGPrinter.cpp).

Я могу генерировать CFG и Callgraph с opt --dot-cfg foo.bc помощью и с opt --dot-callgraph foo.bc помощью , но аналогичное opt --dot-ddg-only foo.bc выполняется, но не генерирует .dot файл. Я тоже opt -passes=dot-ddg foo.bc безуспешно пытался.

Есть ли еще opt один возможный звонок? Или у кого-то есть предложения по другим подобным инструментам?

Используемый код C ( foo.bc получен с clang -c -emit-llvm foo.c -o foo.bc помощью ):

 void foo(int b[], int c[], int n){
  for (int i = 1; i < n; i  ) {
    b[i] = c[i]   b[i-1];
  }
}

int main(){
  int b[] = {1, 2, 3, 4, 5};
  int c[] = {1, 1, 1, 1, 1};
    
  foo(b, c, 5);
}