I have started to write a blog series about how a GCC back end works
https://kristerw.blogspot.se/2017/08/writing-gcc-backend_4.html
Part 1: The structure of a GCC back end
https://kristerw.blogspot.se/2017/08/the-structure-of-gcc-back-end.html
Part 2: Getting started with a GCC back end
https://kristerw.blogspot.se/2017/08/getting-started-with-gcc-back-end.html
Part 3: Low-level IR and basic code generation
https://kristerw.blogspot.se/2017/08/gcc-low-level-ir-and-basic-code.html
Part 5: More about GCC instruction patterns
https://kristerw.blogspot.se/2017/12/more-about-gcc-instruction-patterns.html
Part 6: GCC back end performance tuning
https://kristerw.blogspot.se/2018/01/gcc-back-end-performance-tuning.html