第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

停用GCC中的所有優(yōu)化選項(xiàng)

停用GCC中的所有優(yōu)化選項(xiàng)

侃侃無極 2019-10-21 15:43:50
使用GCC編譯C程序的默認(rèn)優(yōu)化級別是-O0。這會根據(jù)GCC文檔關(guān)閉所有優(yōu)化。例如:    gcc -O0 test.c 但是,要檢查-O0是否真的關(guān)閉了所有優(yōu)化。我執(zhí)行了以下命令:    gcc -Q -O0 --help=optimizers 在這里,我有點(diǎn)驚訝。我啟用了大約50個(gè)選項(xiàng)。然后,我使用以下命令檢查了傳遞給gcc的默認(rèn)參數(shù):    gcc -v 我懂了:Using built-in specs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapperTarget: x86_64-linux-gnuConfigured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-       2ubuntu1~14.04' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --      enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnuThread model: posixgcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04) 所以我的結(jié)論是,-O0我提供給程序的標(biāo)志沒有被其他東西覆蓋。實(shí)際上,我正在尋求從頭開始實(shí)現(xiàn)一種工具,該工具可以生成優(yōu)化選項(xiàng)的隨機(jī)序列,并將生成的序列與默認(rèn)級別0-3進(jìn)行比較。就像“ acovea”一樣。因此,我想將生成的序列與零優(yōu)化級別(應(yīng)該是-O0)進(jìn)行比較您能解釋一下為什么默認(rèn)情況下啟用了50個(gè)選項(xiàng)-O0嗎?我想到的一個(gè)想法是使用50次編譯-O0并關(guān)閉默認(rèn)優(yōu)化。你怎么看?-O0-fno-OPTIMIZATION_NAME
查看完整描述

3 回答

?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊

Stricto sensu,GCC編譯器的中端由優(yōu)化遍歷的序列(實(shí)際上是嵌套樹,在編譯過程中會動態(tài)更改)組成,因此,如果GCC沒有進(jìn)行優(yōu)化,則將無法發(fā)出任何代碼。


想想另一種方式:輸入語言GCC是相當(dāng)豐富的(即使是純C,在那里你有while,for,...),但中間GIMPLE語言是更差(特別是GIMPLE / SSA),所以你需要到應(yīng)用一些轉(zhuǎn)換以將源AST轉(zhuǎn)換為Gimple。這些轉(zhuǎn)換是優(yōu)化過程,幾乎可以定義為。


另請參閱該答案和該答案的圖片(SVG圖片),并閱讀此處提到的參考資料。


您應(yīng)該理解-O0為禁用生成某些可執(zhí)行文件不需要的任何其他優(yōu)化(例如,-O1etc等提供的優(yōu)化)。


查看完整回答
反對 回復(fù) 2019-10-21
?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊

為了回答我的問題,我做出了一些結(jié)論和假設(shè):


因此,我想說用O0進(jìn)行編譯并不意味著不會應(yīng)用任何優(yōu)化。如上面@abligh所述,可以減少編譯時(shí)間并改善調(diào)試效果的選項(xiàng)將打開。


換句話說,O0在編譯級別上正在優(yōu)化。生成的二進(jìn)制文件未經(jīng)過優(yōu)化,以簡化調(diào)試過程。


我舉一個(gè)例子:該選項(xiàng)在O0級別啟用


漸進(jìn)式循環(huán)優(yōu)化


在GCC文檔中:


此選項(xiàng)告訴循環(huán)優(yōu)化器使用語言約束來得出循環(huán)迭代次數(shù)的界限。這假定循環(huán)代碼不會通過例如引起有符號整數(shù)溢出或超出范圍的數(shù)組訪問來調(diào)用未定義的行為。循環(huán)迭代次數(shù)的界限用于指導(dǎo)循環(huán)展開和剝離以及循環(huán)退出測試優(yōu)化。默認(rèn)情況下啟用此選項(xiàng)。


因此,對于GCC 4.8.x,默認(rèn)情況下將啟用近50個(gè)選項(xiàng)。


查看完整回答
反對 回復(fù) 2019-10-21
  • 3 回答
  • 0 關(guān)注
  • 1384 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號