For instance, parsing is one area that has been researched in incredible depth and the parsers that you find in modern compilers (often) reflect this research.
There are also many interesting algorithms found in things such as register allocation, control flow analysis etc.
Personally, I find working on compilers fascinating. If you've never written any sort of interpreter or compiler, I would recommend giving it a go. Creating a language that you actually use to program is immensely satisfying.
There's also the point that if you are interested in optimisation then compilers are a fantastic place to get stuck in Optimise a part of a spreadsheet program and, well, your spreadsheet program will be quicker. But improve the code generator of your compiler and every program will be quicker!