Of course, there are a number of places where C just can't/won't do the job.
Atomics is a good example. BUT: I think there's no excuse for lots and lots of people all using assembly for locking directly in their code, with all the attendant porting and maintenance problems. The compiler should have working builtins for whatever you need here, on any platform the compiler supports. If it doesn't (or they're too slow, or whatever), then that's a bug and it's easily fixable once - not in every program out there.
A lot of the other uses of assembly are similar, from what I've seen in this study. I was shocked to see how many people were using x86 assembly for trivial bitops or byte-swapping.