4.6.22. #pragma unroll_completely

此编译指示指示编译器完全展开循环。 仅当编译器可以确定循环包含的迭代次数时,它才有效。

Note

可以使用 #pragma unroll_completely 展开向量化和非向量化循环。 即,#pragma unroll_completely 适用于 --no_vectorize--vectorize

用法

使用 -O3-Otime 进行编译时,如果编译器认为展开循环比较有利,则会自动将其展开。 可以使用此编译指示请求编译器完全展开未自动完全展开的循环。

Note

仅当有证据表明(例如,从 --diag_warning=optimizations 中),编译器本身没有以最优方式展开循环时,才应使用此 #pragma

限制

使用 #pragma unroll_completely 时,只能将其紧靠 for 循环、while 循环或 do ... while 循环前面放置。

在外部循环中使用 #pragma unroll_completely 可防止向量化。 另一方面,在某些情况下,在内部循环中使用 #pragma unroll_completely 可能会有所帮助。

另请参阅

Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0348AC
Non-Confidential