2012-11-20 13 views
10

Ho aggiornato oggi da Ubuntu 12.04 che penso abbia g ++ - 4.6 in Ubuntu 12.10 con g ++ - 4.7.2. Nel mio codice ho avuto alcune funzioni contrassegnate come __attribute__((always_inline)). La ragione di ciò era semplicemente che la creazione di profili mi mostrava che aumentava significativamente le prestazioni del codice. Ha funzionato bene con g ++ 4.6 ma ora con g ++ 4.7 ottengo il messaggio di errore:Inlining non riuscito: il corpo della funzione può essere sovrascritto al momento del collegamento

error: inlining failed in call to always_inline 'void func_name(args)': function body can be overwritten at link time

Non posso condividere la mia codice vero, ho cercato di restringere il campo, ma quando cambio troppo l'errore va via, quindi non è utile. Sono interessato alla causa principale di questo messaggio di errore.

risposta

14

Non era mia intenzione rispondere a questa domanda da solo, ma ho trovato la risposta accidentalmente pochi minuti dopo l'invio.

Il motivo di questo messaggio di errore (criptico) era che la funzione non era contrassegnata come inline, solo __attribute((always_inline)).

Problemi correlati