我正在用libgccjit实现一个jit编译器,并且在尝试检索二进制操作的结果时被卡住了。
结果不是问题所在,而是宣告结果的类型。
我有两个gcc_jit_rvalue
,并希望对它们执行简单的二进制操作。
这两个rvalues可以有任何类型。
对于gcc_jit_context_new_binary_op
的第四个参数,我必须指定结果类型。
鉴于我不知道右值的类型但可以得到它们的gcc_jit_type*
,我怎样才能找到标准的C结果类型(GCC会使用的结果类型)何时编译表达式的C表达式a + b
)?
我知道我可以写一堆if
和else
或switch
语句来覆盖整数和浮点数的每一个该死的组合并返回C中的预期结果,但这是一个很多的打字,我真的不想做。
有没有更简单的方法可以找到GCC在编译C代码时会使用的结果类型?