Diepte van inlining in GCC-compiler

Ik heb dat bestudeerd

De inline-specificatie is een hint naar de compiler die moet worden geprobeerd   om code [...] inline te genereren in plaats van de code voor de   eenmaal functioneren en vervolgens de gebruikelijke functieaanroep doornemen   mechanisme.

vragen:

  1. Als optimalisatie is uitgeschakeld voor de GCC-compiler, wordt de inline-specificatie genegeerd?
  2. Wanneer inline-functies recursief worden aangeroepen, bepaalt welke compileeroptie de 'diepte van inlining', totdat deze het normale functie-aanroepmechanisme volgt?
  3. Als de inline-functie wordt aangeroepen in een for-lus, komt dezelfde 'inliningdiepte' dan in beeld?
8

2 antwoord

Als optimalisatie is uitgeschakeld voor de GCC-compiler, wordt de inline-specificatie genegeerd?

Yes, if optimization is turned off in GCC, no functions would be inlined. It is equivalent to using -fno-inline flag during compilation. See this link

-fno-inline

Let niet op het inline trefwoord. Normaal gesproken wordt deze optie gebruikt om ervoor te zorgen dat de compiler geen functies inline uitbreidt. Merk op dat als u niet optimaliseert, geen functies inline kunnen worden uitgebreid.

Wanneer inline-functies recursief worden aangeroepen, bepaalt welke compileeroptie de 'diepte van inlining', totdat deze het normale functie-aanroepmechanisme volgt?

Opties max-inline-recursieve diepte en max-inline-recursive-depth-auto . De standaarddiepte is 8.

7
toegevoegd

Naast -fno-inline, moet u ook -fno-default-inline gebruiken om inline-functies in klassen uit te schakelen. Dit is handig als u gdb gebruikt om naar die inline-functies te gaan.

2
toegevoegd