編譯器如gcc,可以指定不同的優化參數,在某些條件下,有些函數可能會被優化掉。
先寫一個簡單的測試文件:
用命令
gcc -g -c test.c
編譯成目標文件。
用 nm檢查函數符號:
$ nm -C test.o
00000000 T foo
現在使用 命令
gcc -g -c -O2 test.c
重新編譯。
再用 nm檢查:
$ nm -C test.o
00000000 T foo
還是能找到函數 foo.
這表明foo沒有被優化掉
現在把函數 foo改成靜態函數:
使用 -O2編譯,然后用 nm查找,會發現,此時 foo符號找不到了。
可見,靜態函數有可能會被GCC優化掉。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
優化
+關注
關注
0文章
218瀏覽量
23730 -
函數
+關注
關注
3文章
4073瀏覽量
61402 -
編譯器
+關注
關注
1文章
1579瀏覽量
48700
發布評論請先 登錄
相關推薦
Keil編譯器優化問題
大家好,我在使用單片機程序編譯過程中,碰到了一些問題,懇請高手回答。具體描述如下: 當使用keil編譯器編譯過程中,設置為8級優化,產生的燒寫文件,就可以在硬件平臺上正常運行。但是如果
發表于 12-18 16:39
stm32編譯器優化
#550-D: variable "d" was set but never used描述:變量'd'定義但從未使用,或者是,雖然這個變量你使用了,但編譯器認為變量d所在的語句沒有意義,編譯器把它優化了.解決:仔細衡量
發表于 08-24 07:46
SIMD計算機的優化編譯器設計
利用處理器的相關資源,提高編譯器優化性能和增強代碼可適應性是SIMD處理器優化編譯的關鍵。該文基于M語言和LS SIMD體系結構,結合現代編譯器
發表于 04-03 08:47
?30次下載
C編譯器及其優化
本章將幫助讀者在ARM處理器上編寫高效的C代碼。本章涉及的一些技術不僅適用于ARM處理器,也適用于其他RISC處理器。本章首先從ARM編譯器及其優化入手,講解C編譯器在優化代碼時所碰到
發表于 10-17 17:22
?2次下載
如何使用英特爾編譯器優化Fortran、C和C ++
了解如何使用適用于Fortran *,C和C ++的英特爾?編譯器優化一些困難的循環。
示例選自經典的netlib.org矢量基準測試,這些測試不是由當前的英特爾編譯器自動優化的,但
深度學習編譯器之Layerout Transform優化
繼續深度學習編譯器的優化工作解讀,本篇文章要介紹的是OneFlow系統中如何基于MLIR實現Layerout Transform。
編譯器的優化選項
一個程序首先要保證正確性,在保證正確性的基礎上,性能也是一個重要的考量。要編寫高性能的程序,第一,必須選擇合適的算法和數據結構;第二,應該編寫編譯器能夠有效優化以轉換成高效可執行代碼的源代碼,要做到
評論