A set of parameters used to control various transforms performed by the LoopUnroll pass. Each of the boolean parameters can be set to: true ‐ enabling the transformation. false ‐ disabling the transformation. None ‐ relying on a global default.

Synopsis

Declared in <llvm/Transforms/Scalar/LoopUnrollPass.h>

struct LoopUnrollOptions;

Description

There is also OptLevel parameter, which is used for additional loop unroll tuning.

Intended use is to create a default object, modify parameters with additional setters and then pass it to LoopUnrollPass.

Member Functions

Name

Description

LoopUnrollOptions [constructor]

setFullUnrollMaxCount

setOptLevel

setPartial

Enables or disables partial unrolling. When disabled only full unrolling is allowed.

setPeeling

Enables or disables loop peeling.

setPrepareForLTO

setProfileBasedPeeling

setRuntime

Enables or disables unrolling of loops with runtime trip count.

setUpperBound

Enables or disables the use of trip count upper bound in loop unrolling.

Data Members

Name

Description

AllowPartial

AllowPeeling

AllowProfileBasedPeeling

AllowRuntime

AllowUpperBound

ForgetSCEV

If true, forget all loops when unrolling. If false, forget top‐most loop of the currently processed loops, which removes one entry at a time from the internal SCEV records. For large loops, the former is faster.

FullUnrollMaxCount

OnlyWhenForced

If false, use a cost model to determine whether unrolling of a loop is profitable. If true, only loops that explicitly request unrolling via metadata are considered. All other loops are skipped.

OptLevel

PrepareForLTO

If true, consider calls as inline candidates and defer unrolling so that LTO post‐link inlining can consider them first.

Created with MrDocs