kitech / ruby-jit-qt

A Qt5 binding for Ruby language. Using clang/llvm JIT engine. (stalled)
12 stars 2 forks source link

有些返回类类型的方法,生成的IR代码显示返回i32,无法正确处理返回值 #2

Closed kitech closed 9 years ago

kitech commented 9 years ago

如,QWidget::sizePolicy()方法,生成的IR代码如下, declare i32 @_ZNK7QWidget10sizePolicyEv(%class.QWidget*) #0

define void* @jit_main() { eee: %0 = call i32 @_ZNK7QWidget10sizePolicyEv(void\ inttoptr (i64 18559616 to void**)) ret i32 %0 }

如果按照返回一个类对象的方式生成,应该是一个sret,可能的结果是, declare i32 @ZNK7QWidget10sizePolicyEv(%class.QSizePolicy , %class.QWidget_) #0

define void* @jit_main() { eee: %0 = call i32 @ZNK7QWidget10sizePolicyEv(%class.QSizePolicy , void_* inttoptr (i64 18559616 to void**)) ret i32 %0 }