The following messages appear if the loop is completely disqualified for software pipelining:
- Bad loop structure. This error is very rare and can stem from the following:
- An asm statement inserted in the C code inner loop
- Parallel instructions being used as input to the Linear Assembly Optimizer
- Complex control flow such as GOTO statements and breaks
- Loop contains a call. Sometimes the compiler may not be able to inline a function call that is in a loop. Because the compiler could not inline the function call, the loop could not be software pipelined.
- Too many instructions. There are too many instructions in the loop to software pipeline.
- Software pipelining disabled. Software pipelining has been disabled by a command-line option, such as when using the --disable_software_pipeline option, not using the --opt_level=2 (or -O2) or --opt_level=3 (or -O3) option, or using the --opt_for_space=2 or --opt_for_space=3 option.
- Uninitialized trip counter. The trip counter may not have been set to an initial value.
- Suppressed to prevent code expansion. Software pipelining may be suppressed because of the --opt_for_space=1 option. When the --opt_for_space=1 option is used, software pipelining is disabled in less promising cases to reduce code size. To enable pipelining, use --opt_for_space=0 or omit the --opt_for_space option altogether.
- Loop carried
dependency bound too large. If the loop has complex loop control, try
--speculate_loads according to the recommendations in Section 4.6.3.2.
- Cannot identify trip counter. The loop trip counter could not be identified or was used incorrectly in the loop body.