Tiefe des Inlining im GCC-Compiler

8

Ich habe das studiert

  

Der Inline-Spezifizierer ist ein Hinweis für den Compiler, den er versuchen sollte   Code [...] inline generieren, statt den Code für die   einmal funktionieren und dann den normalen Funktionsaufruf aufrufen   Mechanismus.

Fragen:

  1. Wenn die Optimierung für den GCC-Compiler deaktiviert ist, wird der Inline-Spezifizierer ignoriert?
  2. Wenn Inline-Funktionen rekursiv aufgerufen werden, welche Compiler-Option bestimmt die Tiefe des Inlinings, bis sie dem normalen Funktionsaufrufmechanismus folgt?
  3. Wenn die Inline-Funktion innerhalb einer for-Schleife aufgerufen wird, kommt dann die gleiche 'Inline-Tiefe' ins Spiel?
nitin_cherian 24.06.2012, 06:31
quelle

2 Antworten

7
  

Wenn die Optimierung für den GCC-Compiler deaktiviert ist, wird der Inline-Spezifizierer ignoriert?

Ja, wenn die Optimierung in GCC deaktiviert ist, sind keine Funktionen inline. Dies entspricht der Verwendung von -fno-inline flag während der Kompilierung. Sehen Sie sich den Link

an

-fno-inline

Don't pay attention to the inline keyword. Normally this option is used to keep the compiler from expanding any functions inline. Note that if you are not optimizing, no functions can be expanded inline.

  

Wenn Inline-Funktionen rekursiv aufgerufen werden, welche Compiler-Option bestimmt die 'Tiefe des Inlining', bis sie dem normalen Funktionsaufrufmechanismus folgt?

Optionen max-inline-recursive-depth und max-inline-recursive-depth-auto . Standardtiefe ist 8.

    
Sanish 24.06.2012, 06:51
quelle
2

Neben -fno-inline müssen Sie -fno-default-inline verwenden, um Inline-Funktionen in Klassen zu deaktivieren. Dies ist nützlich, wenn Sie gdb verwenden, um in diese Inline-Funktionen zu wechseln.

    
lenx.wei 24.06.2012 07:46
quelle