{"title":"增量全局优化以实现更快的重新编译","authors":"L. Pollock, M. Soffa","doi":"10.1109/ICCL.1990.63784","DOIUrl":null,"url":null,"abstract":"Although modular programming with separate compilation aids in eliminating unnecessary recompilation and reoptimization, recent studies have discovered that more efficient code can be generated by collapsing a modular program through procedure inlining. To avoid having to reoptimize the resultant large procedures, techniques for incrementally incorporating changes into globally optimized code are presented. The algorithm determines which optimizations are no longer safe after a program change, and also discovers which new optimizations can be performed in order to maintain a high level of optimization. An intermediate representation is incrementally updated to reflect the current optimizations in the program. The techniques developed in this paper have been exploited to improve on the current techniques for symbolic debugging of optimized code.<<ETX>>","PeriodicalId":317186,"journal":{"name":"Proceedings. 1990 International Conference on Computer Languages","volume":"34 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1990-03-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"3","resultStr":"{\"title\":\"Incremental global optimization for faster recompilations\",\"authors\":\"L. Pollock, M. Soffa\",\"doi\":\"10.1109/ICCL.1990.63784\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Although modular programming with separate compilation aids in eliminating unnecessary recompilation and reoptimization, recent studies have discovered that more efficient code can be generated by collapsing a modular program through procedure inlining. To avoid having to reoptimize the resultant large procedures, techniques for incrementally incorporating changes into globally optimized code are presented. The algorithm determines which optimizations are no longer safe after a program change, and also discovers which new optimizations can be performed in order to maintain a high level of optimization. An intermediate representation is incrementally updated to reflect the current optimizations in the program. The techniques developed in this paper have been exploited to improve on the current techniques for symbolic debugging of optimized code.<<ETX>>\",\"PeriodicalId\":317186,\"journal\":{\"name\":\"Proceedings. 1990 International Conference on Computer Languages\",\"volume\":\"34 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"1990-03-12\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"3\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings. 1990 International Conference on Computer Languages\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/ICCL.1990.63784\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings. 1990 International Conference on Computer Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/ICCL.1990.63784","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Incremental global optimization for faster recompilations
Although modular programming with separate compilation aids in eliminating unnecessary recompilation and reoptimization, recent studies have discovered that more efficient code can be generated by collapsing a modular program through procedure inlining. To avoid having to reoptimize the resultant large procedures, techniques for incrementally incorporating changes into globally optimized code are presented. The algorithm determines which optimizations are no longer safe after a program change, and also discovers which new optimizations can be performed in order to maintain a high level of optimization. An intermediate representation is incrementally updated to reflect the current optimizations in the program. The techniques developed in this paper have been exploited to improve on the current techniques for symbolic debugging of optimized code.<>