2013-05-03 57 views
0

我在cpp上添加了一些新功能,我想編寫一個編譯器pass以根據不同的選項修改一些cpp源代碼(我使用了一些gcc功能(cilk),所以我認爲它不能通過libclang來完成,clang不能識別cilk)。 gcc中有沒有api可以做這樣的事情?如何在編寫gcc插件時捕獲命令行選項

回答

1

當前的GCC插件API不允許您擴展預處理器。但是,您可以添加內建函數,編譯指示以及函數或變量屬性。

您可以使用save_decoded_optionssave_decoded_options_counttoplev.h獲取編譯器程序參數。但插件期待-fplugin-foo-arg-程序參數(對於插件foo ...)

爲什麼你需要這些?

您是否考慮過使用MELT(擴展GCC的域特定語言)來擴展GCC?

+0

謝謝。因爲我不能修改cpp源代碼,所以修改AST可能是一個好主意。我想添加一些函數,並替換一些函數調用。順便提一提 – WhatisThat 2013-05-03 07:27:00

+0

,你知道如何將gcc AST樹節點轉換成源代碼嗎?謝謝。 – WhatisThat 2013-05-03 15:24:43

+1

您應該定義「將GCC AST轉換爲」源代碼「的含義。 (這不太可能,因爲Gimple不僅僅是普通的C語言,例如因爲它處理異常和OpenMP)。 – 2013-05-03 16:35:30