{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,21]],"date-time":"2025-11-21T23:34:26Z","timestamp":1763768066376,"version":"3.41.0"},"reference-count":36,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2025,3,19]],"date-time":"2025-03-19T00:00:00Z","timestamp":1742342400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2025,3,31]]},"abstract":"<jats:p>Resource-constrained environments, such as embedded devices, have limited amounts of memory and storage. Practical programming languages such as C++ and Rust tend to output multiple similar functions by monomorphizing polymorphic functions. An optimization technique called Function Merging, which merges similar functions into a single function, has been studied. However, in the state-of-the-art approach, the number of functions that can be merged at once is limited to two; thus, efficiently merging three or more functions, which are often generated from polymorphic functions, has been impossible.<\/jats:p>\n          <jats:p>In this study, we propose Multiple Function Merging optimization, which targets merging three or more similar functions into a single function using a multiple sequence alignment algorithm. With multiple aligned information, Multiple Function Merging can increase merge opportunities and reduce extra branching overheads at the code generation stage. We evaluated it using the SPEC CPU benchmark suite and some large-scale C\/C++ programs, and the results show that it reduces code size by as much as 7.61% compared with the state-of-the-art approach.<\/jats:p>","DOI":"10.1145\/3702000","type":"journal-article","created":{"date-parts":[[2024,10,28]],"date-time":"2024-10-28T09:49:32Z","timestamp":1730108972000},"page":"1-26","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["Multiple Function Merging for Code Size Reduction"],"prefix":"10.1145","volume":"22","author":[{"ORCID":"https:\/\/orcid.org\/0009-0007-2007-2211","authenticated-orcid":false,"given":"Yuta","family":"Saito","sequence":"first","affiliation":[{"name":"Waseda University, Shinjuku-ku, Japan"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8597-8512","authenticated-orcid":false,"given":"Kazunori","family":"Sakamoto","sequence":"additional","affiliation":[{"name":"Waseda University, Shinjuku-ku, Japan"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-1417-9879","authenticated-orcid":false,"given":"Hironori","family":"Washizaki","sequence":"additional","affiliation":[{"name":"Waseda University, Shinjuku-ku, Japan"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0196-2108","authenticated-orcid":false,"given":"Yoshiaki","family":"Fukazawa","sequence":"additional","affiliation":[{"name":"Waseda University, Shinjuku-ku, Japan"}]}],"member":"320","published-online":{"date-parts":[[2025,3,19]]},"reference":[{"key":"e_1_3_2_2_2","unstructured":"2021. The LLVM Compiler Infrastructure. MergeFunctions Pass How it Works.http:\/\/llvm.org\/docs\/MergeFunctions.html"},{"key":"e_1_3_2_3_2","unstructured":"2022. Microsoft Visual Studio. Identical COMDAT Folding.https:\/\/learn.microsoft.com\/en-us\/cpp\/build\/reference\/opt-optimizations?view=msvc-170"},{"key":"e_1_3_2_4_2","doi-asserted-by":"publisher","DOI":"10.1002\/cpe.3932"},{"key":"e_1_3_2_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/773473.178257"},{"key":"e_1_3_2_6_2","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1097-024X(199706)27:6<701::AID-SPE104>3.0.CO;2-0"},{"key":"e_1_3_2_7_2","doi-asserted-by":"publisher","DOI":"10.1109\/SEQUEN.1997.666900"},{"key":"e_1_3_2_8_2","doi-asserted-by":"publisher","DOI":"10.1145\/3185768.3185771"},{"key":"e_1_3_2_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/6041.6042"},{"key":"e_1_3_2_10_2","doi-asserted-by":"publisher","DOI":"10.1137\/0148063"},{"key":"e_1_3_2_11_2","doi-asserted-by":"publisher","DOI":"10.1109\/CGO51591.2021.9370306"},{"key":"e_1_3_2_12_2","doi-asserted-by":"publisher","DOI":"10.1109\/IC3.2015.7346733"},{"key":"e_1_3_2_13_2","doi-asserted-by":"crossref","first-page":"401","DOI":"10.1007\/3-540-44898-5_23","volume-title":"Static Analysis","author":"Chen Wen-Ke","year":"2003","unstructured":"Wen-Ke Chen, Bengu Li, and Rajiv Gupta. 2003. Code compaction of matching single-entry multiple-exit regions. In Static Analysis, Radhia Cousot (Ed.). Springer Berlin, Berlin, 401\u2013417."},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.1145\/390013.808480"},{"key":"e_1_3_2_15_2","doi-asserted-by":"publisher","DOI":"10.1145\/349214.349233"},{"key":"e_1_3_2_16_2","unstructured":"Thomas J. Watson IBM Research Center. Research Division FE Allen and J. Cocke. 1971. A Catalogue of Optimizing Transformations. https:\/\/www.clear.rice.edu\/comp512\/Lectures\/Papers\/1971-allen-catalog.pdf"},{"key":"e_1_3_2_17_2","doi-asserted-by":"publisher","DOI":"10.1145\/3519941.3535072"},{"key":"e_1_3_2_18_2","doi-asserted-by":"publisher","DOI":"10.1109\/JIOT.2014.2323395"},{"key":"e_1_3_2_19_2","doi-asserted-by":"publisher","unstructured":"Chris Lattner and Vikram Adve. 2004. LLVM(CGO\u201904). IEEE Computer Society 75\u201386. 10.1109\/CGO.2004.1281665","DOI":"10.1109\/CGO.2004.1281665"},{"key":"e_1_3_2_20_2","doi-asserted-by":"publisher","DOI":"10.1145\/36177.36194"},{"key":"e_1_3_2_21_2","doi-asserted-by":"publisher","DOI":"10.1016\/0022-2836(70)90057-4"},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1109\/CGO53902.2022.9741256"},{"key":"e_1_3_2_23_2","doi-asserted-by":"publisher","unstructured":"Rodrigo C. O. Rocha Pavlos Petoumenos Zheng Wang Murray Cole Kim Hazelwood and Hugh Leather. 2021. HyFM: Function Merging for Free. 10.1145\/3461648.3463852","DOI":"10.1145\/3461648.3463852"},{"key":"e_1_3_2_24_2","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2019.8661174"},{"key":"e_1_3_2_25_2","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3386030"},{"volume-title":"ACM SRC Grand Finals Candidates, 2022-2023, CGO 2023","author":"Saito Yuta","key":"e_1_3_2_26_2","unstructured":"Yuta Saito, Kazunori Sakamoto, Hironori Washizaki, and Yoshiaki Fukazawa. 2023. Multiple function merging for code size reduction. In ACM SRC Grand Finals Candidates, 2022-2023, CGO 2023. https:\/\/src-acm-org.waseda.idm.oclc.org\/binaries\/content\/assets\/src\/2023\/yuta-saito.pdf"},{"key":"e_1_3_2_27_2","doi-asserted-by":"publisher","DOI":"10.1109\/DINWC.2015.7054230"},{"key":"e_1_3_2_28_2","doi-asserted-by":"publisher","DOI":"10.1145\/780731.780739"},{"key":"e_1_3_2_29_2","doi-asserted-by":"publisher","DOI":"10.1109\/MCOM.2012.6384464"},{"key":"e_1_3_2_30_2","doi-asserted-by":"publisher","DOI":"10.1109\/CGO53902.2022.9741269"},{"key":"e_1_3_2_31_2","doi-asserted-by":"publisher","DOI":"10.1145\/357153.357155"},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1016\/C2009-0-27982-7"},{"key":"e_1_3_2_33_2","doi-asserted-by":"publisher","unstructured":"Tobias Edler von Koch Bj\u00f6rn Franke Pranav Bhandarkar and Anshuman Dasgupta. 2014. Exploiting function similarity for code size reduction(LCTES 14). ACM 85\u201394. 10.1145\/2597809.2597811","DOI":"10.1145\/2597809.2597811"},{"key":"e_1_3_2_34_2","doi-asserted-by":"publisher","DOI":"10.1089\/cmb.1994.1.337"},{"key":"e_1_3_2_35_2","doi-asserted-by":"publisher","DOI":"10.1145\/103135.103136"},{"key":"e_1_3_2_36_2","unstructured":"David A. Wood. 2020. Polymorphisation: Improving Rust compilation times through intelligent monomorphisation."},{"key":"e_1_3_2_37_2","doi-asserted-by":"publisher","unstructured":"Peng Zhao and Jos\u00e9 Nelson Amaral. 2007. Function outlining and partial inlining Vol. 37. John Wiley and Sons Ltd Chichester UK 465\u2013491. 10.1109\/CAHPC.2005.26","DOI":"10.1109\/CAHPC.2005.26"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3702000","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3702000","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T01:10:23Z","timestamp":1750295423000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3702000"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,3,19]]},"references-count":36,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2025,3,31]]}},"alternative-id":["10.1145\/3702000"],"URL":"https:\/\/doi.org\/10.1145\/3702000","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"type":"print","value":"1544-3566"},{"type":"electronic","value":"1544-3973"}],"subject":[],"published":{"date-parts":[[2025,3,19]]},"assertion":[{"value":"2024-04-26","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-09-30","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-03-19","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}