我正在与海合会合作,实现汽车病媒化。 由于客户要求,我无法使用内在或属性。 (我无法获得用户投入,以支持病媒化)
如果无法了解可以传播媒介的阵列的一致信息,海合会就援用一种循环版本。 在树上进行循环矢量生产时,将进行脱硫。 如果发现一种循环是病媒可承受的,而且对数据校正或数据依赖的限制正在阻碍它(因为无法在汇编时确定),那么将产生两种循环。 这些是循环的病媒化和非实验性版本,同时进行调节或依赖实施控制的时间检查。
我的问题是,我们必须如何执行协调? 如果我发现一种可病媒利用的循环,我不应因为缺乏一致性信息而产生两种循环。
例如。 审议以下法典
short a[15]; short b[15]; short c[15];
int i;
void foo()
{
for (i=0; i<15; i++)
{
a[i] = b[i] ;
}
}
Tree dump (options: -fdump-tree-optimized -ftree-vectorize)
<SNIP>
vector short int * vect_pa.49;
vector short int * vect_pb.42;
vector short int * vect_pa.35;
vector short int * vect_pb.30;
bb 2>:
vect_pb.30 = (vector short int *) &b;
vect_pa.35 = (vector short int *) &a;
if (((signed char) vect_pa.35 | (signed char) vect_pb.30) & 3 == 0) ;; <== (A)
goto <bb 3>;
else
goto <bb 4>;
bb 3>:
</SNIP>
生成了第三版病媒化代码。 第4版没有病媒化。 通过核对校对(报表A)。 现在,没有使用内在特征和其他特性,我如何只获得病媒化代码(没有进行这次时间调整检查)。