ZHCUAQ1F july 2015 – april 2023
MUST_ITERATE pragma 为编译器指定循环的某些属性。使用此 pragma,即表示向编译器保证循环会执行特定的次数或在指定范围内执行多次。
只要向循环应用 UNROLL pragma,则应向同一循环应用 MUST_ITERATE。对于循环,MUST_ITERATE pragma 的第三个参数 multiple 最为重要,并且始终应该指定。
另外,应当尽可能多地向任何其他循环应用 MUST_ITERATE pragma。这是因为通过该 pragma 提供的信息(尤其是最小迭代次数)能够帮助编译器选择最优循环和循环变换(即软件流水线和嵌套循环变换)。此外,该 pragma 还可帮助编译器缩减代码大小。
MUST_ITERATE pragma 与其适用的 for、while 或 do-while 循环之间不能包含任何语句。不过,MUST_ITERATE pragma 与相应循环之间可以存在 UNROLL 和 PROB_ITERATE 等其他 pragma。