2012-11-20 14 views
10

G ++ - 4.6.2 ile Ubuntu 12.10'un g ++ - 4.6 olduğunu düşündüğüm Ubuntu 12.04'ten bugün yükseltilmiştim. Kodumda __attribute__((always_inline)) olarak işaretlenmiş birkaç işlev vardı. Bunun nedeni, profillemenin, kodun performansını önemli ölçüde artırdığını gösterdi. Bu g ++ 4.6 ile iyi çalıştı ama şimdi g ++ 4.7 ile şu hata mesajını alıyorum:Inlining başarısız oldu: işlev gövdesinin bağlantı zamanında üzerine yazılabilir

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

benim gerçek kod paylaşamaz, bunu daraltmak için denedim ama değişmek zaman çok fazla hata gider uzakta, bu işe yaramaz. Bu hata mesajının kök nedeniyle ilgileniyorum.

cevap

14

Buna kendimce cevap vermek niyetim değildi, fakat yanlışlıkla yanıtı gönderdikten birkaç dakika sonra buldum.

bu (şifreli) hata mesajı nedeni işlevi yalnızca __attribute((always_inline)), inline olarak işaretlenmemiş olmasıydı.