C++ links: compilers
See also:
- Assembly (Arm), Assembly (RISC-V), Assembly (x86)
- Compilers Correctness
- Debugging: Implementation
- Program Analysis - LLVM
- Linking and Loading
- https://github.com/aalhour/awesome-compilers
- A Compiler Writing Journey
- An Incremental Approach to Compiler Construction
- Scheme and Functional Programming 2006; Abdulaziz Ghuloum
- http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf
- Step-by-step development of a Scheme-to-x86 compiler
- ChocoPy: A Programming Language for Compilers Courses
- SPLASH-E 2019; Rohan Padhye, Koushik Sen, Paul N. Hilfinger
- https://chocopy.org/
- https://chocopy.org/chocopy-splashe19.pdf
- https://chocopy.org/chocopy-splashe19-slides.pdf
- Computer Language Notes: Compilers and Interpreters
- FreeCompilerCamp.org: Online Training for Extending Compilers
- http://freecompilercamp.org/
- https://github.com/freeCompilerCamp
- Clang/LLVM Tutorials
- http://freecompilercamp.org/clang-llvm-landing
- Alok Mishra, Anjia Wang, Chunhua Liao, Yonghong Yan, Barbara Chapman
- https://sc19.supercomputing.org/proceedings/tech_poster/tech_poster_pages/rpost138.html
- FreeCompilerCamp.org: Training for OpenMP Compiler Development from Cloud
- Let’s Build A Simple Interpreter - https://ruslanspivak.com/lsbasi-part1/
- Notes on Graph Algorithms Used in Optimizing Compilers - Carl Offner
- Resources for Amateur Compiler Writers
- Crafting Interpreters
- Essentials of Compilation: An Incremental Approach
- A book about compiling Racket to x86-64 assembly
- Jeremy G. Siek, Ryan R. Newton
- https://github.com/IUCompilerCourse/Essentials-of-Compilation
- GCC Wiki - List of compiler books
- Introduction to Compilers and Language Design
- Douglas Thain
- http://compilerbook.org/
- Jordan Rose (Swift team) recommendations
- Instruction Selection
- Instruction Selection: Principles, Methods, & Applications
- 2016 Book; Gabriel Hjort Blindell
- http://kth.diva-portal.org/smash/record.jsf?pid=diva2:951540
- Universal Instruction Selection
- 2018 PhD Dissertation; Gabriel Hjort Blindell
- http://www.diva-portal.org/smash/record.jsf?pid=diva2:1185339
- https://github.com/gablin/ghb-thesis
- https://github.com/gablin/ghb-thesis/blob/master/ghb-thesis.pdf
- Instruction Selection: Principles, Methods, & Applications
- Static Single Assignment (SSA) Book
- draft:
- SSA-based Compiler Design
- 2022; Fabrice Rastello, Florent Bouchez Tichadou
- https://link.springer.com/book/9783030805142
- A Tourist’s Guide to the LLVM Source Code - http://blog.regehr.org/archives/1453
- Life of an instruction in LLVM - http://eli.thegreenplace.net/2012/11/24/life-of-an-instruction-in-llvm
- Life of an instruction in Clang / LLVM - https://github.com/thegameg/llvm-life/
- LLVM - Chris Lattner, The Architecture of Open Source Applications - http://www.aosabook.org/en/llvm.html
- LLVM Tutorial: Kaleidoscope - http://llvm.org/docs/tutorial/
- Haskell version: http://www.stephendiehl.com/llvm/
- LLVM for Grad Students - http://adriansampson.net/blog/llvm.html
- Testing LLVM - http://blog.regehr.org/archives/1450
- Tutorial: Creating an LLVM Backend for the Cpu0 Architecture - https://jonathan2251.github.io/lbd/
- Tutorial: Creating an LLVM Toolchain for the Cpu0 Architecture - http://jonathan2251.github.io/lbt/
Compilers Call For Papers for Conferences, Workshops and Journals at WikiCFP - http://www.wikicfp.com/cfp/call?conference=compilers
- ASPLOS: International Conference on Architectural Support for Programming Languages and Operating Systems - https://asplos-conference.org/ - http://dblp.uni-trier.de/db/conf/asplos/
- CASES: Compilers, Architecture, and Synthesis for Embedded Systems - http://www.esweek.org/cases - http://dblp.uni-trier.de/db/conf/cases/
- CC: The International Conference on Compiler Construction - http://conf.researchr.org/series/CC - http://dblp.uni-trier.de/db/conf/cc/
- CGO: International Symposium on Code Generation and Optimization - http://cgo.org/ - http://dblp.uni-trier.de/db/conf/cgo/
- HPCA: International Symposium on High-Performance Computer Architecture - https://www.hpca-conf.org/ - http://dblp.uni-trier.de/db/conf/hpca/
- ICFP: International Conference on Functional Programming - http://icfpconference.org/ - http://dblp.uni-trier.de/db/conf/icfp/
- ISMM: International Symposium on Memory Management - http://www.sigplan.org/Conferences/ISMM/ - http://dblp.uni-trier.de/db/conf/iwmm/
- LCTES: Languages, Compilers, and Tools for Embedded Systems - https://conf.researchr.org/series/LCTES - http://dblp.uni-trier.de/db/conf/lctrts/
- OOPSLA: Object-Oriented Programming Systems, Languages and Applications - http://www.sigplan.org/Conferences/OOPSLA/ - http://www.oopsla.org/ - http://dblp.uni-trier.de/db/conf/oopsla/
- PACT: International Conference on Parallel Architecture and Compilation - http://pactconf.org/ - http://dblp.uni-trier.de/db/conf/IEEEpact/
- PLDI: Programming Language Design and Implementation - http://www.sigplan.org/Conferences/PLDI/ - http://dblp.uni-trier.de/db/conf/pldi/
- POPL: Principles of Programming Languages - http://www.sigplan.org/Conferences/POPL/ - http://dblp.uni-trier.de/db/conf/popl/
- PPoPP: ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming - http://www.sigplan.org/Conferences/PPOPP/ - http://dblp.uni-trier.de/db/conf/ppopp/
- SAS: International Static Analysis Symposium - http://www.staticanalysis.org/ - http://dblp.uni-trier.de/db/conf/sas/
- SCOPES: International Workshop on Software and Compilers for Embedded Systems - https://scopesconf.org/ - http://dblp.uni-trier.de/db/conf/scopes/
- Cornell CS 6120: Advanced Compilers
- Fall 2020; Adrian Sampson
- The Self-Guided Online Course: https://www.cs.cornell.edu/courses/cs6120/2020fa/self-guided/
- https://www.cs.cornell.edu/courses/cs6120/2020fa/
- source code: https://github.com/sampsyo/cs6120
- lectures: https://www.cs.cornell.edu/courses/cs6120/2020fa/lesson/
- Fall 2020; Adrian Sampson
- IIT Delhi COL874: Advanced Compiler Techniques
- 2020-2021; Sorav Bansal
- https://iitd.github.io/col874/
- Lectures: https://www.youtube.com/playlist?list=PLf3ZkSCyj1tf3rPAkOKY5hUzDrDoekAc7
- Meetings: https://www.youtube.com/playlist?list=PLf3ZkSCyj1tfCb_3bPAaWKtrcFHS0xRdn
- IU P423/P523: Compilers (Programming Language Implementation)
- KAIST CS420: Compiler Design
- Spring 2020; Jeehoon Kang
- KECC: KAIST Educational C Compiler
- NPTEL: Compiler Design
- SFU CMPT 886: Program Analysis and Reliability - Nick Sumner, Spring 2015
- Stanford OpenEdX: Compilers - Alex Aiken
- UCB CS294-113: Virtual Machines and Managed Runtimes
- http://www.wolczko.com/CS294/
- A Concise and Opinionated History of Virtual Machines
- UCSD CSE 131: Compiler Construction
- Fall 2019; Joseph Gibbs Politz
- Winter 2018; Ranjit Jhala
- UCSD CSE 231: Advanced Compiler Design
- Winter 2019; Sorin Lerner
- UFMG DCC888: Static Program Analysis
- 2020; Fernando Magno Quintão Pereira
- https://homepages.dcc.ufmg.br/~fernando/classes/dcc888/
- https://www.youtube.com/playlist?list=PLC-dUCVQghfdu7AG5f_p4oRyKgjDuoAWU
- University of Utah: Advanced Compilers - John Regehr
- Weeks 1 and 2: http://blog.regehr.org/archives/1419
- Weeks 3-5: http://blog.regehr.org/archives/1428
- UW CSE CSEP 501: Compilers - Hal Perkins
- https://courses.cs.washington.edu/courses/csep501/
- Winter 2018
- Winter 2016
- GCC and Clang compiler drivers and cross compilation - http://maskray.me/blog/2021-03-28-compiler-driver-and-cross-compilation
- How to cross compile with LLVM based tools
- FOSDEM 2018; Peter Smith
- https://archive.fosdem.org/2018/schedule/event/crosscompile/
- List of Online C++ Compilers - https://arnemertz.github.io/online-compilers/
- LLVM
- http://llvm.org/
- LLVM Developers' Meeting - http://llvm.org/devmtg/
- http://blog.llvm.org/
- http://llvmweekly.org/
- Clang: a C language family frontend for LLVM
- GCC (GNU Compiler Collection)
- https://gcc.gnu.org/
- GNU Tools Cauldron - https://gcc.gnu.org/wiki#Events
- https://twitter.com/gnutools/
- Visual C++ - https://www.visualstudio.com/vs/cplusplus/
- Pre-defined Compiler Macros - https://sourceforge.net/p/predef/wiki/
- Architectures - https://sourceforge.net/p/predef/wiki/Architectures/
- Compilers - https://sourceforge.net/p/predef/wiki/Compilers/
- Endianness - https://sourceforge.net/p/predef/wiki/Endianness/
- Language Standards - https://sourceforge.net/p/predef/wiki/Standards/
- Operating Systems - https://sourceforge.net/p/predef/wiki/OperatingSystems/
- Standard Libraries - https://sourceforge.net/p/predef/wiki/Libraries/
- SPY: Friendly Neighborhood C++17 Constexpr Predef Wrapper
- OS, compiler, libc, stdlib detection
- https://github.com/jfalcou/spy
- Clang documentation - http://clang.llvm.org/docs/
- GCC online documentation - https://gcc.gnu.org/onlinedocs/
- GCC Wiki - https://gcc.gnu.org/wiki
- Cynbe's GCC Debugging Hints - http://muq.org/~cynbe/gcc/
- Debugging Resources - http://muq.org/~cynbe/gcc/offsite-resources.html
- Comments on the Internals Manual - http://muq.org/~cynbe/gcc/gccint.html
- LLVM documentation - http://llvm.org/docs/
- Visual C++ documentation
- Security-related flags and options for C compilers
See:
- Executables - executable & object file formats (DLL, ELF, Mach-O, PE); debugging data formats (DWARF, PDB)
- ALIVe: Automatic LLVM InstCombine Verifier
- Automatic Feedback Directed Optimizer (AutoFDO)
- Compiler Optimizations for Reverse Engineers by Rolf Rolles
- Compiler Optimization Options
- Devirtualization in C++ - https://hubicka.blogspot.com/search/label/devirtualization
- GoingNative 50: New Visual C++ Code Optimizer - https://channel9.msdn.com/Shows/C9-GoingNative/GoingNative-50-New-Visual-C-Code-Optimizer
- Link time optimization (LTO) - https://hubicka.blogspot.com/search/label/link-time%20optimization
- Optimizations in C++ Compilers: A practical journey
- ACM Queue vol. 17, no. 5 (2019)
- Matt Godbolt
- https://queue.acm.org/detail.cfm?id=3372264
- GNU Superoptimizer Version 2 - https://github.com/embecosm/gso2
- Souper - a superoptimizer for LLVM IR - https://github.com/google/souper
- Stochastic Superoptimization - http://blog.regehr.org/archives/923
- STOKE: A stochastic superoptimizer and program synthesizer - http://stoke.stanford.edu - https://github.com/StanfordPL/stoke
- Superoptimizing Compilers - http://superoptimization.org/wiki/Superoptimizing_Compilers
- Superoptimization - James Pallister - FOSDEM 2015 - https://archive.fosdem.org/2015/schedule/event/superoptimization/
- An overview of Clang
- 2019 LLVM Developers’ Meeting; Sven van Haastregt, Anastasia Stulova
- https://www.youtube.com/watch?v=5kkMpJpIGYU
- http://llvm.org/devmtg/2019-10/talk-abstracts.html#tut8
- GCC under the hood
- Introduction to LLVM
- 2019 LLVM Developers’ Meeting; Eric Christopher & Johannes Doerfert
- https://www.youtube.com/watch?v=J5xExRGaIIY
- Introduction to LLVM: Building simple program analysis tools and instrumentation
- FOSDEM 2018; Mike Shah
- https://fosdem.org/2018/schedule/event/introduction/
- https://www.youtube.com/watch?v=VKIv_Bkp4pk
- slides & code: http://www.mshah.io/fosdem18.html
- Getting started with LLVM: the TL;DR version
- LinaroOrg Connect San Francisco 2017; Diana Picus
- https://connect.linaro.org/resource/sfo17/sfo17-110/
- LLVM Internals #2
- Linaro Connect Budapest 2017; Renato Golin, Peter Smith, Diana Picus, Omair Javaid, Adhemerval Zanella
- http://connect.linaro.org/resource/bud17/bud17-302/
- Introduction to LLVM – Projects, Components, Integration, Internals
- Linaro Connect Las Vegas 2016; Renato Golin
- http://connect.linaro.org/resource/las16/las16-501/
- Anders Hejlsberg on Modern Compiler Construction
- Channel 9; May 12, 2016
- https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction
- STOKE: Search-Based Compiler Optimization
- UCI CS Distinguished Lecture; April 29, 2016; Alex Aiken
- https://www.youtube.com/watch?v=rZFeTTFp7x4
- Understanding Compiler Optimization
- Meeting C++ 2015; Chandler Carruth
- https://www.youtube.com/watch?v=FnGCDLhaxKU
- Stochastic Optimization for x86 Binaries
- Google Tech Talks; January 12, 2015; Eric Schkufza
- https://www.youtube.com/watch?v=aD9mZDJzb58
- Superoptimizing LLVM
- UW CSE Colloquium; December 2, 2014; John Regehr
- https://www.youtube.com/watch?v=Ux0YnVEaI6A
- Compiler Technologies
- Northwest C++ Users' Group; October 15, 2014; Jim Hogg
- http://nwcpp.org/october-2014.html
- Compiler Confidential
- GoingNative 2013; Eric Brumer
- https://channel9.msdn.com/Events/GoingNative/2013/Compiler-Confidential
- C/C++/Objective-C compiler warning flags collection and parsers
- Compiler Warnings - Ian Lance Taylor - https://www.airs.com/blog/archives/159
- leathers - Warning suppression library (C++) - https://github.com/ruslo/leathers
- Warnings list: https://github.com/ruslo/leathers/wiki/List
- ListCppWarningOptions: A simple Perl script that prints GCC warning options you can apply to C++ code
- Use The Tools Available - Compilers
- Useful GCC warning options not enabled by -Wall -Wextra
- Warning Flags - http://www.iso-9899.info/wiki/WarningFlags
- Warning Options - https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html