References

  1. Andrew W. Appel (1992): Compiling with Continuations. Cambridge University Press, Cambridge, England.
  2. Andrew W. Appel (1998): SSA is Functional Programming. SIGPLAN notices 33(4), pp. 17–20, doi:10.1145/278283.278285.
  3. Lars Bergstrom, Matthew Fluet, Matthew Le, John Reppy & Nora Sandler (2014): Practical and Effective Higher-order Optimizations. In: ICFP '14. ACM, New York, NY, pp. 81–93, doi:10.1145/2628136.2628153.
  4. Lars Bergstrom, Matthew Fluet, Mike Rainey, John Reppy, Stephen Rosen & Adam Shaw (2013): Data-Only Flattening for Nested Data Parallelism. In: PPoPP '13. ACM, New York, NY, pp. 90–106, doi:10.1145/2442516.2442525.
  5. Lars Bergstrom & John Reppy (2009): Arity raising in Manticore. In: IFL '09, LNCS. Springer-Verlag, New York, NY, pp. 90–106, doi:10.1007/978-3-642-16478-1_6.
  6. Luca Cardelli (1983): The Functional Abstract Machine. Technical Report TR-107. Bell Laboratories.
  7. Olivier Danvy & Andrzej Filinski (1992): Representing Control: A study of the CPS transformation. MSCS 2(4), pp. 361–391, doi:10.1017/S0960129500001535.
  8. LLVM Developers (2017): LLVM’s Analysis and Transform Passes. Available at http://llvm.org/docs/Passes.html.
  9. LLVM Developers (2017): Performance Tips for Frontend Authors. Available at https://llvm.org/docs/Frontend/PerformanceTips.html#pass-ordering.
  10. Stephen Dolan, Servesh Muralidharan & David Gregg (2013): Compiler Support for Lightweight Context Switching. ACM Trans. Archit. Code Optim. 9(4), pp. 36:1–36:25, doi:10.1145/2400682.2400695.
  11. Rafael Ávila de Espíndola (2012): LLVM Bug 13826 - unreachable prevents tail calls. Available at https://llvm.org/bugs/show_bug.cgi?id=13826.
  12. Kavon Farvardin (2015): LLVM Bug 23766 - musttail calls are not allowed to precede unreachable. Available at https://llvm.org/bugs/show_bug.cgi?id=23766.
  13. Kavon Farvardin (2017): autotune – discover good LLVM passes. Available at https://github.com/kavon/autotune.
  14. Matthew Fluet, Nic Ford, Mike Rainey, John Reppy, Adam Shaw & Yingqi Xiao (2007): Status Report: The Manticore Project. In: ML '07. ACM, New York, NY, pp. 15–24, doi:10.1145/1292535.1292539.
  15. Matthew Fluet, Mike Rainey & John Reppy (2008): A Scheduling Framework for General-purpose Parallel Languages. In: ICFP '08. ACM, New York, NY, pp. 241–252, doi:10.1145/1411203.1411239.
  16. Matthew Fluet, Mike Rainey, John Reppy & Adam Shaw (2011): Implicitly-threaded Parallelism in Manticore. JFP 20(5–6), pp. 537–576, doi:10.1017/S0956796810000201.
  17. Lal George, Florent Guillame & John Reppy (1994): A portable and optimizing back end for the SML/NJ compiler. In: CC '94, LNCS 786. Springer-Verlag, New York, NY, pp. 83–97, doi:10.1007/3-540-57877-3_6.
  18. Simon Peyton Jones, Norman Ramsey & Fermin Reig (1999): C–+.1667em–: A Portable Assembly Language that Supports Garbage Collection. In: PPDP '99. Springer-Verlag, New York, NY, pp. 1–28, doi:10.1007/10704567_1.
  19. Reid Kleckner (2014): Proposal: Add a guaranteed tail call marker. Available at http://lists.llvm.org/pipermail/llvm-dev/2014-April/071704.html.
  20. Chris Lattner (2002): LLVM: An Infrastructure for Multi-Stage Optimization. C.S. Dept., UIUC, Urbana, IL.
  21. Chris Lattner & Vikram Adve (2004): LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In: CGO '04, pp. 75–. Available at http://dl.acm.org/citation.cfm?id=977395.977673.
  22. Matthew Le & Matthew Fluet (2015): Partial Aborts for Transactions via First-class Continuations. In: ICFP '15. ACM, New York, NY, pp. 230–242, doi:10.1145/2784731.2784736.
  23. Brian Andrew Leibig (2013): An LLVM Back-end for MLton. Rochester Institute of Technology. Available at https://www.cs.rit.edu/~mtf/student-resources/20124_leibig_msproject.pdf.
  24. David Majnemer (2015): LLVM Bug 23470 - Inefficient lowering of 'musttail' call. Available at https://llvm.org/bugs/show_bug.cgi?id=23470.
  25. John Reppy, Claudio Russo & Yingqi Xiao (2009): Parallel Concurrent ML. In: ICFP '09. ACM, New York, NY, pp. 257–268, doi:10.1145/1596550.1596588.
  26. John H. Reppy (1990): Asynchronous signals in Standard ML. Technical Report TR 90-1144. Dept. of CS, Cornell University, Ithaca, NY.
  27. Konstantinos Sagonas, Chris Stavrakakis & Yiannis Tsiouris (2012): ErLLVM: An LLVM Backend for Erlang. In: ERLANG '12. ACM, New York, NY, pp. 21–32, doi:10.1145/2364489.2364494.
  28. David Tarditi, Peter Lee & Anurag Acharya (1992): No Assembly Required: Compiling Standard ML to C. ACM LOPLAS 1(2), pp. 161–177, doi:10.1145/151333.151343.
  29. GHC Team (2011): Work in Progress on the LLVM Backend: Get rid of Proc Point Splitting. Available at https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/LLVM/WIP#GetridofProcPointSplitting.
  30. David A. Terei & Manuel M.T. Chakravarty (2010): An LLVM Backend for GHC. In: HASKELL '10. ACM, New York, NY, pp. 109–120, doi:10.1145/1863523.1863538.
  31. Katsuhiro Ueno & Atsushi Ohori (2014): Compiling SML# with LLVM: a Challenge of Implementing ML on a Common Compiler Infrastructure. In: Workshop on ML, pp. 1–2. Available at https://sites.google.com/site/mlworkshoppe/smlsharp_llvm.pdf.

Comments and questions to: eptcs@eptcs.org
For website issues: webmaster@eptcs.org