shecc is a self-hosting and educational C optimizing compiler that targets the 32-bit Arm and RISC-V architectures. Despite its simplistic nature, it is capable of performing basic optimization strategies as a standalone optimizing compiler. Some features of shecc include generating executable Linux ELF binaries, providing a minimal C standard library for basic I/O, and utilizing a two-pass compilation process. It also has compatibility with various C syntax and supports ARMv7-A and RV32IM backend. Shecc can bootstrap itself and has some known issues such as incomplete support for varying number of function arguments. It is freely redistributable under the BSD 2 clause license.
https://github.com/sysprog21/shecc