ROSE 編譯器框架/常量傳播
外觀
另請參閱 ROSE 編譯器框架/通用資料流框架,因為此分析是使用該框架實現的。
參見 http://en.wikipedia.org/wiki/Constant_folding 關於常量摺疊和常量傳播的示例,“常量傳播是在編譯時用已知常量的值替換表示式中的值的程序。”
分析將只生成表示傳播常量值的格。它不會實際轉換 AST!因此,下面的示例程式碼僅用於說明值的傳播。
輸入程式碼
int x = 14;
int y = 7 - x / 2;
return y * (28 / x + 2);
傳播 x 產生
int x = 14;
int y = 7 - 14 / 2;
return y * (28 / 14 + 2);
繼續傳播產生以下結果
int x = 14;
int y = 0;
return 0;
列表
- rose/tests/roseTests/programAnalysisTests/generalDataFlowAnalysisTests/constantPropagation.h
- rose/tests/roseTests/programAnalysisTests/generalDataFlowAnalysisTests/constantPropagation.C
待辦事項
- 將它們移至 rose/src/midend/programAnalysis/genericDataflow/simpleAnalyses
測試翻譯器
- rose/tests/roseTests/programAnalysisTests/generalDataFlowAnalysisTests/constantPropagationTest.C github-連結
測試翻譯器將
- 為 CFG 生成點圖並附加常量格。
- 驗證生成的結果是預期的(以輸入測試輸入檔案中的編譯指示的形式給出)。
帶有驗證的測試輸入
- rose/tests/roseTests/programAnalysisTests/generalDataFlowAnalysisTests/cp_test1.C