{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,18]],"date-time":"2025-11-18T11:47:37Z","timestamp":1763466457416},"reference-count":15,"publisher":"Wiley","issue":"11","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4746,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1993,11]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Single\u2010assignment and functional languages have value semantics that do not permit side\u2010effects. This lack of side\u2010effects makes automatic detection of parallelism and optimization for data locality in programs much easier. However, the same property poses a challenge in implementing these languages efficiently. This paper describes an optimizing compiler system that solves the key problem of aggregate copy elimination. The methods developed rely exclusively on compile\u2010time algorithms, including interprocedural analysis, that are applied to an intermediate data flow representation. By dividing the problem into update\u2010in\u2010place and build\u2010in\u2010place analysis, a small set of relatively simple techniques\u2014edge substitution, graph pattern matching, substructure sharing and substructure targeting\u2014was found to be very powerful. If combined properly and implemented carefully, the algorithms eliminate unnecessary copy operations to a very high degree. No run\u2010time overhead is imposed on the compiled programs.<\/jats:p>","DOI":"10.1002\/spe.4380231102","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T20:18:09Z","timestamp":1163794689000},"page":"1175-1200","source":"Crossref","is-referenced-by-count":13,"title":["Compile\u2010time copy elimination"],"prefix":"10.1002","volume":"23","author":[{"given":"Peter","family":"Schnorf","sequence":"first","affiliation":[]},{"given":"Mahadevan","family":"Ganapathi","sequence":"additional","affiliation":[]},{"given":"John L.","family":"Hennessy","sequence":"additional","affiliation":[]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_2","unstructured":"W. B.AckermanandJ. B.Dennis \u2018Val\u2014a value oriented algorithmic language\u2019 Technical Report LCS\/TR\u2010128 MIT June1979."},{"key":"e_1_2_1_3_2","unstructured":"J.McGrawet al.\u2018Sisal: streams and iterations in a single assignment language language reference manual version 1.2\u2019 Technical Report M\u2010146 LLNL March1985."},{"key":"e_1_2_1_4_2","unstructured":"J. R.CeloniandJ. L.Hennessy \u2018Sal: a single assignment language for parallel algorithms\u2019 Technical Report Classic\u201083\u201301 Stanford University September1983."},{"key":"e_1_2_1_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/359576.359579"},{"key":"e_1_2_1_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/7902.7904"},{"key":"e_1_2_1_7_2","doi-asserted-by":"crossref","unstructured":"K.Gharachorloo V.SarkarandJ. L.Hennessy \u2018A simple and efficient implementation approach for single assignment languages\u2019 1988 Lisp and Functional Programming Conference July1988.","DOI":"10.1145\/62678.62718"},{"key":"e_1_2_1_8_2","unstructured":"D. C.Cann \u2018Compilation techniques for high performance applicative computation\u2019 PhD Thesis Colorado State University May1989(Technical Report CS\u201089\u2013108)."},{"key":"e_1_2_1_9_2","unstructured":"K.Gopinath \u2018Copy elimination in single assignment languages\u2019 PhD Thesis Stanford University July1989(Technical Report CSL\u2010TR\u201089\u2013384)."},{"key":"e_1_2_1_10_2","doi-asserted-by":"crossref","unstructured":"P.HudakandA.Bloss \u2018The aggregate update problem in functional programming systems\u2019 Twelfth Annual ACM Symposium on Principles of Programming Languages January1985 pp.300\u2013313.","DOI":"10.1145\/318593.318660"},{"key":"e_1_2_1_11_2","doi-asserted-by":"publisher","DOI":"10.1109\/2.108055"},{"key":"e_1_2_1_12_2","doi-asserted-by":"publisher","DOI":"10.1145\/115372.115320"},{"key":"e_1_2_1_13_2","doi-asserted-by":"publisher","DOI":"10.1145\/135226.135231"},{"key":"e_1_2_1_14_2","unstructured":"D. C.Cannet al.\u2018Sisal reference manual\u2014language version 2.0\u2019 Technical Report LLNL and CSU 1990."},{"key":"e_1_2_1_15_2","unstructured":"S. K.SkedzielewskiandJ.Glauert \u2018If1\u2014an intermediate form for applicative languages version 1.0\u2019 Technical Report M\u2010170 LLNL July1985."},{"key":"e_1_2_1_16_2","unstructured":"P.Schnorf M.GanapathiandJ. L.Hennessy \u2018Design and implementation of an optimizing compiler for a single assignment language\u2019 Technical Report Stanford University November1990(CSL\u2010TR\u201090\u2013452)."}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380231102","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380231102","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,24]],"date-time":"2023-10-24T19:29:43Z","timestamp":1698175783000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380231102"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1993,11]]},"references-count":15,"journal-issue":{"issue":"11","published-print":{"date-parts":[[1993,11]]}},"alternative-id":["10.1002\/spe.4380231102"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380231102","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"value":"0038-0644","type":"print"},{"value":"1097-024X","type":"electronic"}],"subject":[],"published":{"date-parts":[[1993,11]]}}}