I've tried the SDCC C compiler and I did have to fix a lot of code generation bugs, thank goodness it had source. It was a few years ago now so maybe it's been fixed. I didn't contribute my fixes at the time because I didn't know about how to do that. Today would be different.