Funktionszeiger auf __attribute __ ((const)) Funktion?

8

Wie (in GCC / "GNU C") deklarieren Sie einen Funktionszeiger, der auf eine __attribute__((const)) Funktion zeigt? Die Idee ist, dass ich möchte, dass der Compiler nicht mehrere Aufrufe an die Funktion generiert, die über den Funktionszeiger aufgerufen wird, wenn er den Rückgabewert eines vorherigen Aufrufs zwischenspeichern kann.

    
R.. 25.02.2012, 04:31
quelle

2 Antworten

3
%Vor%

Oder nur:

%Vor%     
justin 25.02.2012, 06:16
quelle
0

Obwohl dies nicht ganz die Antwort auf Ihre Frage ist, möchten Sie das wahrscheinlich wissen:

Sie können im Allgemeinen nicht erwarten, dass der Compiler die von Ihnen erwartete Optimierung durchführt. Der Compiler kann im allgemeinen Fall die Alias-Analyse nicht durchführen, um zu wissen, dass mehrere Verwendungen eines Funktionszeigers derselben Funktion entsprechen.

Ein Funktionsaufruf zwischen zwei Aufrufen der Funktion durch den Zeiger könnte im allgemeinen Fall den Zeigerinhalt ändern, wodurch bewirkt wird, dass die aufgerufene Funktion im zweiten Aufruf anders ist.

Aufgrund der Natur von C ist es oft schwierig, eine richtige Alias-Analyse durchzuführen, und diese Art von Optimierung ist daher unwahrscheinlich.

    
Perry 25.02.2012 04:37
quelle

Tags und Links