  Modern and emerging architectures demand increasingly complex compiler
analyses and transformations. As the emphasis on compiler infrastructure moves
beyond support for peephole optimizations and the extraction of
instruction-level parallelism, they should support custom tools designed to
meet these demands with higher-level analysis-powered abstractions of wider
program scope. This paper introduces NOELLE, a robust open-source
domain-independent compilation layer built upon LLVM providing this support.
NOELLE is modular and demand-driven, making it easy-to-extend and adaptable to
custom-tool-specific needs without unduly wasting compile time and memory. This
paper shows the power of NOELLE by presenting a diverse set of ten custom tools
built upon it, with a 33.2% to 99.2% reduction in code size (LoC) compared to
their counterparts without NOELLE.
