{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,9,16]],"date-time":"2026-09-16T08:29:57Z","timestamp":1789547397241,"version":"build-2803163510"},"reference-count":55,"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-sa\/4.0\/"}],"funder":[{"name":"DEEP-SEA","award":["95560"],"award-info":[{"award-number":["95560"]}]},{"name":"European Research Council (ERC) under the European Union\u2019s Horizon 2020 program","award":["101002047"],"award-info":[{"award-number":["101002047"]}]},{"name":"ETH Future Computing Laboratory"}],"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>Pointers are an integral part of C and other programming languages. They enable substantial flexibility from the programmer\u2019s standpoint, allowing the user fine, unmediated control over data access patterns. However, accesses done through pointers are often hard to track and challenging to understand for optimizers, compilers, and sometimes, even for the developers themselves because of the direct memory access they provide. We alleviate this problem by exposing additional information to analyzers and compilers. By separating the concept of a pointer into a data container and an offset, we can optimize C programs beyond what other state-of-the-art approaches are capable of, in some cases even enabling auto-parallelization. Using this process, we are able to successfully analyze and optimize code from OpenSSL, the Mantevo benchmark suite, and the Lempel\u2013Ziv\u2013Oberhumer compression algorithm. We provide the only automatic approach able to find all parallelization opportunities in the HPCCG benchmark from the Mantevo suite the developers identified, and we even outperform the reference implementation by up to 18% as well as speed up the PBKDF2 algorithm implementation from OpenSSL by up to 11\u00d7.<\/jats:p>","DOI":"10.1145\/3701993","type":"journal-article","created":{"date-parts":[[2024,10,29]],"date-time":"2024-10-29T10:11:59Z","timestamp":1730196719000},"page":"1-25","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["Iterating Pointers: Enabling Static Analysis for Loop-based Pointers"],"prefix":"10.1145","volume":"22","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-5087-8124","authenticated-orcid":false,"given":"Andrea","family":"Lepori","sequence":"first","affiliation":[{"name":"Dept. of Computer Science, ETH Zurich, Zurich, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9095-9108","authenticated-orcid":false,"given":"Alexandru","family":"Calotoiu","sequence":"additional","affiliation":[{"name":"Dept. of Computer Science, ETH Zurich, Zurich, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-1333-9797","authenticated-orcid":false,"given":"Torsten","family":"Hoefler","sequence":"additional","affiliation":[{"name":"Dept. of Computer Science, ETH Zurich, Zurich, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2025,3,19]]},"reference":[{"key":"e_1_3_2_2_2","unstructured":"[n. d.]. BTRFS compression documentation. Retrieved from https:\/\/btrfs.readthedocs.io\/en\/latest\/Compression.html"},{"key":"e_1_3_2_3_2","unstructured":"[n. d.]. Intel\u00ae C++ Compiler Classic Developer Guide and Reference. Retrieved from https:\/\/www.intel.com\/content\/www\/us\/en\/docs\/cpp-compiler\/developer-guide-reference\/2021-8\/vectorization-programming-guidelines.html"},{"key":"e_1_3_2_4_2","unstructured":"[n. d.]. lib initramfs: Add initramfs LZO compression. Retrieved from https:\/\/lore.kernel.org\/all\/1238593252-3435-1-git-send-email-andr345@gmail.com\/"},{"key":"e_1_3_2_5_2","unstructured":"[n. d.]. Linux kernel repository. Retrieved from https:\/\/github.com\/torvalds\/linux"},{"key":"e_1_3_2_6_2","unstructured":"[n. d.]. OpenSSL repository. Retrieved from https:\/\/github.com\/openssl\/openssl"},{"key":"e_1_3_2_7_2","unstructured":"[n. d.]. Squashfs documentation. Retrieved from https:\/\/dr-emann.github.io\/squashfs\/squashfs.html"},{"key":"e_1_3_2_8_2","unstructured":"[n. d.]. TurboBench repository. Retrieved from https:\/\/github.com\/powturbo\/TurboBench"},{"key":"e_1_3_2_9_2","unstructured":"[n. d.]. zram documentation. Retrieved from https:\/\/www.kernel.org\/doc\/html\/next\/admin-guide\/blockdev\/zram.html"},{"key":"e_1_3_2_10_2","unstructured":"[n. d.]. zswap documentation. Retrieved from https:\/\/www.kernel.org\/doc\/html\/v4.18\/vm\/zswap.html"},{"key":"e_1_3_2_11_2","volume-title":"European LLVM Developers Meeting","author":"Absar Javed","year":"2018","unstructured":"Javed Absar. 2018. Scalar evolution-demystified. In European LLVM Developers Meeting."},{"key":"e_1_3_2_12_2","unstructured":"L. O. Andersen and K\u00f8benhavns Universitet. Datalogisk Institut. 1994. Program Analysis and Specialization for the C Programming Language. Datalogisk Institut K\u00f8benhavns Universitet. Retrieved from https:\/\/books.google.ch\/books?id=3pD1GwAACAAJ"},{"key":"e_1_3_2_13_2","unstructured":"Krste Asanovi\u0107 Ras Bodik Bryan Christopher Catanzaro Joseph James Gebis Parry Husbands Kurt Keutzer David A. Patterson William Lester Plishker John Shalf Samuel Webb Williams and Katherine A. Yelick. 2006. The landscape of parallel computing research: A view from berkeley. Retrieved from http:\/\/www2.eecs.berkeley.edu\/Pubs\/TechRpts\/2006\/EECS-2006-183.html"},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.1007\/BF02577791"},{"issue":"8","key":"e_1_3_2_15_2","first-page":"154","article-title":"Improving static analysis by loop unrolling on an arbitrary iteration","author":"Belyaev M. A.","year":"2014","unstructured":"M. A. Belyaev, M. Akhin, and V. M. Itsykson. 2014. Improving static analysis by loop unrolling on an arbitrary iteration. Univ. Scient. J.8 (2014), 154\u2013168.","journal-title":"Univ. Scient. J."},{"key":"e_1_3_2_16_2","volume-title":"International Conference for High Performance Computing, Networking, Storage and Analysis (SC\u201919)","author":"Ben-Nun Tal","year":"2019","unstructured":"Tal Ben-Nun, Johannes de Fine Licht, Alexandros Nikolaos Ziogas, Timo Schneider, and Torsten Hoefler. 2019. Stateful dataflow multigraphs: A data-centric model for performance portability on heterogeneous architectures. In International Conference for High Performance Computing, Networking, Storage and Analysis (SC\u201919)."},{"key":"e_1_3_2_17_2","doi-asserted-by":"publisher","DOI":"10.1109\/CLUSTR.2002.1137778"},{"key":"e_1_3_2_18_2","article-title":"PBKDF2: performance matters","author":"Birr-Pixton Joseph","year":"2015","unstructured":"Joseph Birr-Pixton. 2015. PBKDF2: performance matters. Retrieved from https:\/\/jbp.io\/2015\/08\/11\/pbkdf2-performance-matters.html","journal-title":"R"},{"key":"e_1_3_2_19_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-78791-4_9"},{"key":"e_1_3_2_20_2","doi-asserted-by":"publisher","DOI":"10.1145\/1640089.1640108"},{"key":"e_1_3_2_21_2","doi-asserted-by":"publisher","DOI":"10.1145\/3524059.3532389"},{"key":"e_1_3_2_22_2","article-title":"Chip Hall of Fame: Intel 4004 Microprocessor","author":"Cass Stephen","year":"2018","unstructured":"Stephen Cass. 2018. Chip Hall of Fame: Intel 4004 Microprocessor. Retrieved from https:\/\/spectrum.ieee.org\/chip-hall-of-fame-intel-4004-microprocessor","journal-title":"R"},{"key":"e_1_3_2_23_2","doi-asserted-by":"publisher","DOI":"10.1145\/115372.115324"},{"key":"e_1_3_2_24_2","doi-asserted-by":"publisher","DOI":"10.1109\/99.660313"},{"key":"e_1_3_2_25_2","unstructured":"Anthony Danalis Heike Jagode and Jack Dongarra. 2018. PAPI: Counting outside the Box. 8th JLESC Meeting Barcelona Spain."},{"key":"e_1_3_2_26_2","doi-asserted-by":"publisher","DOI":"10.1145\/178243.178264"},{"key":"e_1_3_2_27_2","doi-asserted-by":"crossref","first-page":"69","DOI":"10.1007\/3-540-45306-7_6","volume-title":"Compiler Construction","author":"Franke Bj\u00f6rn","year":"2001","unstructured":"Bj\u00f6rn Franke and Michael O\u2019Boyle. 2001. Compiler transformation of pointers to explicit array accesses in DSP applications. In Compiler Construction, Reinhard Wilhelm (Ed.). Springer Berlin, 69\u201385."},{"key":"e_1_3_2_28_2","unstructured":"Roy Frostig Matthew Johnson and Chris Leary. 2018. Compiling machine learning programs via high-level tracing. Retrieved from https:\/\/mlsys.org\/Conferences\/doc\/2018\/146.pdf"},{"key":"e_1_3_2_29_2","doi-asserted-by":"publisher","DOI":"10.1007\/s42514-019-00002-y"},{"key":"e_1_3_2_30_2","article-title":"GitHub API, repository count","year":"2022","unstructured":"GitHub. 2022. GitHub API, repository count. Retrieved from https:\/\/api.github.com\/search\/repositories?q=language:Ccreated:<=2022-12-31","journal-title":"R"},{"key":"e_1_3_2_31_2","article-title":"GitHub Top Programming Languages","year":"2022","unstructured":"GitHub. 2022. GitHub Top Programming Languages. Retrieved from https:\/\/octoverse.github.com\/2022\/top-programming-languages","journal-title":"R"},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1142\/S0129626412500107"},{"key":"e_1_3_2_33_2","doi-asserted-by":"publisher","DOI":"10.1145\/2751205.2751248"},{"key":"e_1_3_2_34_2","first-page":"49","volume-title":"GCC Developers\u2019 Summit","author":"G\u00fcnther Richard","year":"2006","unstructured":"Richard G\u00fcnther. 2006. Profile driven loop transformations. In GCC Developers\u2019 Summit. Citeseer, 49."},{"key":"e_1_3_2_35_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICCL.1992.185487"},{"key":"e_1_3_2_36_2","volume-title":"ISO C Standard 1999","year":"1999","unstructured":"ISO. 1999. ISO C Standard 1999. Technical Report. Retrieved from http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n1124.pdfSubsection 6.5.2 Postfix operators."},{"key":"e_1_3_2_37_2","doi-asserted-by":"publisher","unstructured":"Andrei Ivanov Nikoli Dryden Tal Ben-Nun Shigang Li and Torsten Hoefler. 2020. Data Movement Is All You Need: A Case Study on Optimizing Transformers. DOI:10.48550\/ARXIV.2007.00072","DOI":"10.48550\/ARXIV.2007.00072"},{"key":"e_1_3_2_38_2","doi-asserted-by":"publisher","DOI":"10.1109\/SBAC-PAD.2012.29"},{"key":"e_1_3_2_39_2","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462191"},{"key":"e_1_3_2_40_2","first-page":"434","article-title":"Code optimizations for in-network processing: The state of scalar evolution in LLVM: The state of scalar evolution in LLVM","author":"Kim Yeonsoo","year":"2019","unstructured":"Yeonsoo Kim, Shinhyung Yang, Shin-Dug Kim, and Bernd Burgstaller. 2019. Code optimizations for in-network processing: The state of scalar evolution in LLVM: The state of scalar evolution in LLVM. Proc. Korea Telecommun. Societ. 2019.1 (2019), 434\u2013437.","journal-title":"Proc. Korea Telecommun. Societ."},{"key":"e_1_3_2_41_2","doi-asserted-by":"publisher","DOI":"10.1145\/3178487.3178493"},{"key":"e_1_3_2_42_2","doi-asserted-by":"publisher","DOI":"10.1145\/1064979.1064996"},{"key":"e_1_3_2_43_2","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2004.1281665"},{"key":"e_1_3_2_44_2","unstructured":"Chris Lattner Mehdi Amini Uday Bondhugula Albert Cohen Andy Davis Jacques Pienaar River Riddle Tatiana Shpeisman Nicolas Vasilache and Oleksandr Zinenko. 2020. MLIR: A Compiler Infrastructure for the End of Moore\u2019s Law. arxiv:2002.11054 [cs.PL]"},{"key":"e_1_3_2_45_2","volume-title":"MPI: A Message-Passing Interface Standard Version 4.0","author":"Forum Message Passing Interface","year":"2021","unstructured":"Message Passing Interface Forum. 2021. MPI: A Message-Passing Interface Standard Version 4.0. Retrieved from https:\/\/www.mpi-forum.org\/docs\/mpi-4.0\/mpi40-report.pdf"},{"key":"e_1_3_2_46_2","doi-asserted-by":"publisher","DOI":"10.1109\/N-SSC.2006.4785860"},{"key":"e_1_3_2_47_2","article-title":"Lempel\u2013Ziv\u2013Oberhumer","author":"Oberhumer Markus F. X. J.","year":"2017","unstructured":"Markus F. X. J. Oberhumer. 2017. Lempel\u2013Ziv\u2013Oberhumer. Retrieved from https:\/\/www.oberhumer.com\/opensource\/lzo\/","journal-title":"R"},{"key":"e_1_3_2_48_2","doi-asserted-by":"publisher","DOI":"10.1109\/ACCESS.2021.3110993"},{"key":"e_1_3_2_49_2","doi-asserted-by":"publisher","DOI":"10.1145\/3150211"},{"key":"e_1_3_2_50_2","doi-asserted-by":"publisher","DOI":"10.1145\/234286.1057834"},{"key":"e_1_3_2_51_2","doi-asserted-by":"publisher","DOI":"10.1109\/TC.2020.2987314"},{"key":"e_1_3_2_52_2","doi-asserted-by":"publisher","DOI":"10.1109\/SCAM.2010.15"},{"key":"e_1_3_2_53_2","doi-asserted-by":"publisher","DOI":"10.1145\/3168364"},{"key":"e_1_3_2_54_2","article-title":"TIOBE index","year":"2022","unstructured":"TIOBE. 2022. TIOBE index. Retrieved from https:\/\/www.tiobe.com\/tiobe-index\/","journal-title":"R"},{"key":"e_1_3_2_55_2","doi-asserted-by":"publisher","DOI":"10.1145\/3586038"},{"key":"e_1_3_2_56_2","doi-asserted-by":"crossref","unstructured":"Zhen Li Rohit Atre Zia Ul-Huda Ali Jannesari and Felix Wolf. 2015. DiscoPoP: A profiling tool to identify parallelization opportunities. In Tools for High Performance Computing 2014: Proceedings of the 8th International Workshop on Parallel Tools for High Performance Computing October 2014 HLRS Stuttgart Germany. Springer 37\u201354.","DOI":"10.1007\/978-3-319-16012-2_3"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3701993","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3701993","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T01:57:16Z","timestamp":1750298236000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3701993"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,3,19]]},"references-count":55,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2025,3,31]]}},"alternative-id":["10.1145\/3701993"],"URL":"https:\/\/doi.org\/10.1145\/3701993","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"value":"1544-3566","type":"print"},{"value":"1544-3973","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,3,19]]},"assertion":[{"value":"2024-01-22","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-08-21","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"}}]}}