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
可以使用--call_assumptions 選項(xiàng)控制由--program_level_compile --opt_level=3 調(diào)用的程序級(jí)優(yōu)化。具體而言,--call_assumptions 選項(xiàng)表示其他模塊中的函數(shù)是否可以調(diào)用模塊的外部函數(shù)或修改模塊的外部變量。--call_assumptions 后面的數(shù)字表示您為允許調(diào)用或修改的模塊而設(shè)置的級(jí)別。--opt_level=3 選項(xiàng)將此信息與其自身的文件級(jí)分析相結(jié)合,以決定是否將該模塊的外部函數(shù)和變量聲明視為靜態(tài)聲明。使用表 3-3 選擇合適的級(jí)別以附加到 --call_assumptions 選項(xiàng)。
| 如果模塊... | 使用此選項(xiàng) |
|---|---|
| 具有從其他模塊調(diào)用的函數(shù)以及在其他模塊中修改的全局變量 | --call_assumptions=0 |
| 不具有由其他模塊調(diào)用的函數(shù),但具有在其他模塊中修改的全局變量 | --call_assumptions=1 |
| 不具有由其他模塊調(diào)用的函數(shù),也不具有在其他模塊中修改的全局變量 | --call_assumptions=2 |
| 具有從其他模塊調(diào)用的函數(shù),但不具有在其他模塊中修改的全局變量 | --call_assumptions=3 |
在某些情況下,編譯器恢復(fù)到與指定級(jí)別不同的 --call_assumptions 級(jí)別,或者可能完全禁用程序級(jí)優(yōu)化。表 3-4 列出了 --call_assumptions 級(jí)別與導(dǎo)致編譯器恢復(fù)到其他 --call_assumptions 級(jí)別的條件的組合。
| 如果 --call_assumptions 為... | 在以下條件下... | 則 --call_assumptions 級(jí)別... |
|---|---|---|
| 未指定 | 指定了 --opt_level=3 優(yōu)化級(jí)別 | 默認(rèn)為 --call_assumptions=2 |
| 未指定 | 編譯器在 --opt_level=3 優(yōu)化級(jí)別下發(fā)現(xiàn)對(duì)外部函數(shù)的調(diào)用 | 恢復(fù)為 --call_assumptions=0 |
| 未指定 | 未定義 main | 恢復(fù)為 --call_assumptions=0 |
| --call_assumptions=1 或 --call_assumptions=2 | 沒(méi)有將 main 定義為入口點(diǎn)的函數(shù),也沒(méi)有定義中斷函數(shù),也 沒(méi)有由 FUNC_EXT_CALLED pragma 標(biāo)識(shí)的函數(shù) | 恢復(fù)為 --call_assumptions=0 |
| --call_assumptions=1 或 --call_assumptions=2 | 定義了 main 函數(shù),或 定義了中斷函數(shù),或 者用 FUNC_EXT_CALLED pragma 標(biāo)識(shí)了函數(shù) | 保留 --call_assumptions=1 或 --call_assumptions=2 |
| --call_assumptions=3 | 任何條件下 | 保留 --call_assumptions=3 |
在某些情況下,使用 --program_level_compile 和 --opt_level=3 時(shí),則必須 使用 --call_assumptions 選項(xiàng)或 FUNC_EXT_CALLED pragma。有關(guān)這些情況的信息,請(qǐng)參閱節(jié) 3.4.2。