I've seen terrible assembly but I've seen much worse C. Most programmers have relatively no sense of organization, and when unleashed with C create things far more nasty than their assembly counterparts.
nasty: https://github.com/mirrors/gcc/blob/master/gcc/c-family/c-co...
nasty: https://github.com/mirrors/gcc/blob/master/gcc/c-family/c-le...
But you get the idea. I'm merely pointing out that compilers are tricky and complicated beasts. And especially in the rewriter CS has to jump through hoops to disambiguate.