2013-03-25 30 views
18

-fwhole-programı vs -fuse-bağlayıcı-eklenti: http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.htmlgr ++ Optimizasyon Bayraklar: Okuyorum

İlk öneriyor: birlikte -flto bu seçeneği kullanarak (-fwhole-programı) kullanılmamalı. Bunun yerine bir bağlayıcı eklentisine güvenmek, güvenli ve daha kesin bilgi sağlamalıdır.

Ve sonra, öneriyor: programı ihraç edilecek tüm simgeleri gerektirmiyorsa, interprocedural optimize daha agresif varsayımlar kullanmasına izin vermek -flto ve -fwhole-programı birleştirmek mümkündür iyileştirilmiş optimizasyon fırsatlarına yol açabilir. Linker eklentisi aktif olduğunda -fwhole-program'un kullanılması gerekli değildir (bkz. -fuse-linker-plugin).

o teoride, her zaman -flto ile -fwhole-programı kullanmaktan daha iyi optimize edilmiş yürütülebilir alır -flto ile -fuse-bağlayıcı-eklentisi kullanarak anlamına mı geliyor?

I -fuse-bağlayıcı-eklentisi ayrı -fwhole-programı ile bağlantı için ld kullanmak güvenilir ve en az yürütülebilir dosyaları boyutları farklıdır.

Şimdiden teşekkürler.

P.S. Ben gcc 4.6.2 kullanıyorum ve CentOS 6 üzerinde 2.21.53.0.1 kullanıyorum.

+1

FWIW, sizin alıntı aşağıdaki - "-fwhole-programın Kullanımı bağlayıcı eklentisi etkinken (-fuse yönlendirici-eklentisi bakınız) gerekli değildir." - daha sonra belgelerde görüyoruz - ** "GCC'de LTO desteği etkinleştirildiğinde ve GCC bir linker destek eklentileriyle (GNU ld 2.21) kullanılmak üzere yapılandırıldığında bu seçenek [' -fuse-linker-plugin'] varsayılan olarak etkindir. daha yeni veya altın). ** ** - bu yüzden gcc'nin en makul modern kurulumlarını kapsayacağını tahmin ediyorum. anlamı -fwhole-programını gereksiz kılan varsayılan bir seçeneği vardır. ama bu sadece benim yorumum. –

cevap

İlgili konular