本文主要是介绍2310d模板替换运行时,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原文
上周,我开始从我之前的PR
中的_d_newarray{i,}T
实现开始,把_d_newarraym{i,}T
转换为模板
.目前,我已实现了新勾挂
并更新了降级
,但在编译器
中遇见了一些测试失败
.
修复它们之前,出现了该错误,它是因为我降级到_d_arrayappend{T,cTX}
引起的.
我前段时间处理了这些勾挂,并用AST
自身中勾挂
调用替换了~=
.
这在CTFE
时产生了问题,因为它们经常调用libc
函数,一般不可解释勾挂
.
现在正在实现
的方法是,在CatAssignExP
中的降级
字段中,存储~=
降级.然后,CTFE
可求值原始式
并忽略降级
,胶水层可从降级
而不是CatAssignExp
中生成其IR
.arr~=elem
的降级式不变,仍为_d_arrayappendcTX(arr,1),arr[$-1]=elem
.
但是,现在当arr
是函数调用
时,会导致后端
错误,如foo()
.为了避免
两次调用foo()
,在临时变量
中保存其返回值,并在CommaExp
中如下使用它:
foo() ~= elem;
//降级为:
_tmp = foo(), _d_arrayappendcTX(_tmp, 1), _tmp[$ - 1] = elem
不知何故,后端找不到_tmp
符号.我仍在调查该问题,及把降级
移动到另一个导致它的式
.
谢谢
特奥多尔(土豆)
这篇关于2310d模板替换运行时的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!