Cyt z https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html:Dlaczego GCC miałby włączyć optymalizację w O2/O3, gdy wyraźnie mówi, że spowolni to program?
-falign oznakowań
-falign oznakowań = N
Wyrównywanie wszystkie cele gałęzi do granicy energii dwójki, pomijając do n bajtów, jak - funkcje falign. Ta opcja może z łatwością spowodować, że kod będzie wolniejszy, ponieważ musi wstawiać operacje pozorne, gdy docelowy numer rozgałęzienia zostanie osiągnięty w zwykłym przepływie kodu.
-fno-align-labels i -falign-labels = 1 są równoważne i oznaczają, że etykiety nie są wyrównane.
Jeśli -falign-loops lub -falign-jumps mają zastosowanie i są większe niż tej wartości, to zamiast nich używane są ich wartości.
Jeśli n nie jest określone lub wynosi zero, użyj domyślnej maszyny , która najprawdopodobniej ma wartość "1", co oznacza brak wyrównania.
Włączone na poziomach -O2, -O3.
Myśląc o tej flagi bardziej czyni go stracić nawet więcej sensu ... są konsekwencje prowokując kodu cache panienko, i jakie środki umożliwiające nawet gdy parametr przyjmuje wartość liczbową (1 ..)?
„Jeśli n nie jest określona lub jest zerem, użyj domyślnego urządzenia zależne co jest bardzo prawdopodobne, aby być«1», co oznacza brak wyrównania.” Domyślnie gcc używa wartości zależnej od maszyny – Justin
IIRC, jest to optymalizacja rozmiaru. – stybl
To interesujące pytanie; dzięki za publikację. –