關於一個compiler error

編譯文件的時候報錯如下:

報錯文件名:行號:列號  internal compiler error: in arm_dbx_register_number, at config/arm/arm.c:23648

Please submit a full bug report,

with preprocessed source if appropriate.

See <https://support.codesourcery.com/GNUToolchain/> for instructions.

個人分析:

報錯的函數FunctionA,使用了arm的neon的相關數據結構,並調用了一個帶有for循環的static inline函數FunctionB(該函數也是用l了neon的數據結構)。FunctionB之所以聲明爲static,是因爲要控制函數的使用(僅用於本文件);之所以聲明爲inline,是因爲,爲了提高執行效率,以空間換時間。

之前FunctionB定義爲static inline,編譯都沒問題。但是今天突然編譯又不通過了。。。。

懷疑還是inline的緣故,inline會在函數FunctionB被調用的地方展開函數FunctionB,但FunctionB中又包含了neon的相關結構體,估計展開後,編譯出了問題(或許展開過多,內存不足有關係)。inline符號去掉後,編譯OK。

相關參考:C++ 錯誤解決 —— internal compiler error

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章