【问题标题】:Pretty printing type of values in llvm passllvm pass 中漂亮的打印值类型
【发布时间】:2015-07-02 08:48:53
【问题描述】:

我正在尝试打印循环内使用的值的类型和名称,如下所示:

(value->getType())->print(COUT);
errs() << "     type: " << COUT.str() << " ";
errs() << "     name: " << (value->getName()) << "\n";

我得到以下输出:

type: i32*      name: sum
type: [25 x %struct.Book]*      name: books

是否可以按照程序中使用的方式漂亮地打印类型?例如,得到如下内容:

type: int      name: sum
type: struct Book      name: books

【问题讨论】:

    标签: compiler-construction clang llvm


    【解决方案1】:

    您应该编写自己的函数。示例见原函数TypePrinting::print

    【讨论】:

      【解决方案2】:

      不,不能这样做。 LLVM 名称和源名称之间没有保证的映射;可能没有与给定 LLVM 类型或多个源类型对应的源类型。

      您甚至只能在详细了解特定前端如何将源类型转换为 LLVM 类型的情况下尝试此操作。即使那样,它也只能在该方案的限制范围内——例如,我的前端为类型和函数创建 GUID 名称。

      【讨论】:

        猜你喜欢
        • 2021-06-22
        • 2013-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-06
        • 2016-07-07
        • 2014-05-19
        • 1970-01-01
        相关资源
        最近更新 更多