I used SDCC for a project that targeted an 8051 CPU. Its not fancy but it gets the job done.
SDCC worked very well in this environment. Students could easily download it to work from home without any environment dependencies or license issues. Error messages were descriptive. Our customization needs were nicely solved by some compiler flags. All in all it was a good choice.