анализ данных и циклических зависимостей с помощью LLVM

Кто-нибудь знает, как я могу выполнить анализ зависимости от данных/цикла с помощью LLVM и clang?

Глядя на веб-страницу пропусков -da, очевидно, было упомянуто, что этот проход выполняет свою работу, но использование этого прохода ничего не меняет в выводе, ни ./a.out размер, ни .ll IR-коды.

Мне было интересно, сможем ли мы понять WAR, RAW и т. д., а также другие зависимости, используя платформу LLVM.


person Amir    schedule 14.01.2015    source источник
comment
Проход -da является проходом анализа и поэтому не изменяет IR. В любом случае, если вы пытаетесь просто провести анализ зависимостей, зачем вам менять источник?   -  person coder hacker    schedule 15.01.2015
comment
Мне не нужно менять исходный код, я просто хочу увидеть результаты анализа.   -  person Amir    schedule 15.01.2015
comment
Я тоже использовал его, и, согласно моему опыту, он печатает зависимости между всеми операциями с памятью. Вы также можете попробовать добавить параметр -debug, чтобы посмотреть, что происходит.   -  person coder hacker    schedule 15.01.2015
comment
Однако в итоге я написал свой собственный модуль зависимостей из-за своих особых потребностей. Возможно, вам тоже придется это сделать, если вы хотите использовать эту информацию.   -  person coder hacker    schedule 15.01.2015


Ответы (1)


-da(dependency analysis) — это проход анализа, проходы анализа не изменяют битовый код, они просто собирают информацию, которая будет использоваться другими проходами анализа или преобразования. Поэтому, если вы хотите использовать его информацию, вы должны написать новое преобразование и добавить «DependenceAnalysis» в качестве «RequiredAnalysis» к виртуальной функции с именем «getAnalysisUsage» внутри вашего прохода, тогда у вас будет «DependenceAnalysis» как объект.

person hadi sadeghi    schedule 23.04.2015