首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在llvm opt中打印SCEV

在llvm opt中打印SCEV
EN

Stack Overflow用户
提问于 2015-04-25 17:41:48
回答 2查看 740关注 0票数 0

我想分析一下我的IR中几个值的标量进化(SCEV)表示。我可以不写辅助工具来显示SCEV吗?我的意思是在我的IR上运行opt (或其他现有工具),并指定一些命令行参数。我查看了opt命令行参数,但没有找到合适的参数。

EN

回答 2

Stack Overflow用户

发布于 2015-04-26 00:38:54

据我所知,您可以在不接触任何代码的情况下深入了解SCEV的工作原理的唯一方法是启用统计信息(opt -stats) -您可以在the implementation中查看SCEV发出的统计信息(在全局范围内查找STATISTIC宏调用)。

另外,SCEV类有一个dump方法,它可能更符合您的需求。只需在命令行工具中运行SCEV并手动调用dump就非常简单。如果你从其中一个samples here开始,应该不会超过5分钟就能看到一个转储。

票数 1
EN

Stack Overflow用户

发布于 2015-04-26 10:37:51

除了@eliben博士的答案之外,opt还有两个额外的选项可能会有用(尽管可能不是对您的问题的直接答案)。

-analyze

这将调用PassPass::print成员函数。例如,

代码语言:javascript
复制
opt -analyze -scalar-evolution test/Analysis/ScalarEvolution/incorrect-nsw.ll

输出

代码语言:javascript
复制
Printing analysis 'Scalar Evolution Analysis' for function 'bad.nsw':
Classifying expressions for: @bad.nsw
  %i = phi i8 [ -1, %entry ], [ %i.inc, %loop ]
  -->  {-1,+,-128}<%loop> U: [127,0) S: [127,0)         Exits: 127
  %counter = phi i8 [ 0, %entry ], [ %counter.inc, %loop ]
  -->  {0,+,1}<%loop> U: [0,2) S: [0,2)         Exits: 1
  %i.inc = add i8 %i, -128
  -->  {127,+,-128}<%loop> U: [-1,-128) S: [-1,-128)            Exits: -1
  %i.sext = sext i8 %i to i16
  -->  {-1,+,128}<nw><%loop> U: [-1,128) S: [-1,128)            Exits: 127
  %counter.inc = add i8 %counter, 1
  -->  {1,+,1}<%loop> U: [1,3) S: [1,3)         Exits: 2
Determining loop execution counts for: @bad.nsw
Loop %loop: backedge-taken count is 1
Loop %loop: max backedge-taken count is 1

-debug-pass

这个“打印PassManager调试信息”。您可以为不同级别的信息指定Arguments/Structure/Executions/Details。这是很有帮助的,因为SCEV依赖于其他的LLVM过程。例如,

代码语言:javascript
复制
opt /dev/null -scev-aa -scalar-evolution -disable-output -debug-pass=Arguments

输出:

代码语言:javascript
复制
Pass Arguments:  -targetlibinfo -tti -assumption-cache-tracker -no-aa -domtree -loops -scalar-evolution -scev-aa -verify
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29863528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档