ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
當(dāng)使用 --opt_level=3 選項(別名為 -O3)進行優(yōu)化時,編譯器自動內(nèi)聯(lián)小函數(shù)。命令行選項 --auto_inline=size 指定自動內(nèi)聯(lián)的大小閾值。此選項僅控制未明確聲明為內(nèi)聯(lián)的函數(shù)的內(nèi)聯(lián)。
當(dāng)未使用 --auto_inline 選項時,編譯器根據(jù)優(yōu)化級別和優(yōu)化目標(biāo)(性能與代碼大?。┰O(shè)置大小限制。如果 -auto_inline size 參數(shù)設(shè)置為 0,則禁用自動內(nèi)聯(lián)擴展。如果 --auto_inline size 參數(shù)設(shè)置為非零整數(shù),則編譯器自動內(nèi)聯(lián)任何小于 size 的函數(shù)。(這是對以前版本的更改;以前的版本會內(nèi)聯(lián)那些函數(shù)大小與函數(shù)調(diào)用次數(shù)的乘積小于size 的函數(shù)。新方案更簡單,但通常會對給定的 size 值進行更多的內(nèi)聯(lián)。)
編譯器以任意單位測量函數(shù)的大??;但是,優(yōu)化器信息文件(使用 --gen_opt_info=1 或 --gen_opt_info=2 選項創(chuàng)建)報告 --auto_inline 選項使用的相同單位中每個函數(shù)的大小。當(dāng)使用 --auto_inline 時,編譯器不會試圖阻止導(dǎo)致編譯時間或大小過度增長的內(nèi)聯(lián);故請小心使用。
當(dāng)未使用 --auto_inline 選項時,在特定調(diào)用點內(nèi)聯(lián)函數(shù)的決策是基于試圖優(yōu)化效益和成本的算法。編譯器在調(diào)用點內(nèi)聯(lián)符合條件的函數(shù),直至達到有關(guān)大小或編譯時間的限制。
內(nèi)聯(lián)行為因指定的編譯時選項而異:
有關(guān)影響內(nèi)聯(lián)的命令行選項、pragma 和關(guān)鍵字之間的交互信息,請參閱節(jié) 2.11。