使用 libgccjit 获取操作结果类型

问题描述 投票:0回答:1

我正在使用 libgccjit 实现 jit 编译器,但在尝试检索二进制运算的结果时遇到了困难。

问题不在于获取结果,而在于声明结果的类型。

我有两个

gcc_jit_rvalue
,想对它们执行简单的二元运算。

这两个右值可以有任何类型。

对于

gcc_jit_context_new_binary_op
的第四个参数,我必须指定结果类型。

鉴于我不知道右值的类型,但可以得到它们的

gcc_jit_type*
,我怎样才能找到标准C结果类型(GCC在编译C表达式时使用的结果类型
a + b
)表情?

我知道我可以写一堆

if
else
switch
语句来检查整数和浮点数的每一个该死的组合,并返回 C 中所期望的结果,但这是一个很多我真的不想打字。

是否有一些更简单的方法可以找到 GCC 在编译 C 代码时将使用的结果类型?

c++ jit libgccjit
1个回答
0
投票

libgccjit 没有提供这样做的方法。事实上,libgccjit 甚至不允许您对不同类型的值进行二元运算,即使在 C 中是允许的。

因此,您需要自己检查所有组合。 也许情况并不像现在看起来那么糟糕,libgccjit 有一些新的 API,比如

gcc_jit_type_is_integral
gcc_jit_type_get_size

© www.soinside.com 2019 - 2024. All rights reserved.