Stavo leggendo il optimization options for GCC quando ho trovato l'opzione -funroll-all-loops
.In che modo GCC può srotolare un ciclo se il suo numero di iterazioni è sconosciuto al momento della compilazione?
La sua descrizione si legge:
Srotolare tutti i loop, anche se il loro numero di iterazioni è incerto quando si entra il ciclo. Questo di solito rende i programmi più lenti. '-funroll-tutti-loops' implica le stesse opzioni '-funroll-loops'
Come può il compilatore srotolare un ciclo se il suo numero di iterazioni è sconosciuto al momento della compilazione? Il compilatore non ha bisogno di queste informazioni per srotolarlo? Quale codice C corrispondente genera e in quali contesti potrebbe essere utile se di solito fa girare i programmi più lentamente?
@Olaf come non si tratta di una domanda specifica? OP sta chiedendo chiaramente come gcc (uno specifico compilatore C) sia in grado di sapere come srotolare un ciclo se i suoi limiti sono sconosciuti. –
@Olaf Come è troppo ampio se voglio sapere che cosa fa una specifica opzione del compilatore? –
@ paulsm4 Io non la penso così. Se il compilatore conosce già i limiti, allora la decisione si riduce a quanto effettivamente lo srotoli. Questa domanda non sta chiedendo quello. –