在llvm中为Eigen :: Matrix创建类型

时间:2013-09-30 14:27:39

标签: llvm eigen

我正在尝试使用llvm c ++ api为Eigen::Matrix <complex<double>,Dynamic, 1>参数创建一个类型。

任何人都知道如何做到这一点?

我编写了简单的示例c ++代码并为其公开了llvm IR,并在开头找到了以下几行:

%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { i32*, i64 }
%"class.Eigen::DenseBase" = type { i8 }
%"class.Eigen::DenseCoeffsBase.0" = type { i8 }
%"struct.Eigen::EigenBase" = type { i8 }
%"class.Eigen::MatrixBase" = type { i8 }
%"struct.Eigen::internal::special_scalar_op_base" = type { i8 }

所以我猜我需要的是type{ type{ type{ i32*, i64 } } } ??

谢谢!

1 个答案:

答案 0 :(得分:1)

类型的精确布局由C ++ ABI指定。所以,你可能(或可能不是)幸运地用手来定义东西......

使用LLVM的cpp后端生成将生成给定IR的C ++ API代码。这是最简单的方法。

相关问题