In my experience the behavior is stable i.e. doesn't often change between rebuilds (at least in VC++). I can manage this by looking at compiler's output: when I find there something I don't want, be it stack spilling or other reasons for me not liking the assembly, I go fix my C++ code.
> so writing functions takes a bit longer
Also reading is hard, therefore refactoring/improvements is hard, too. I have an impression the assembly is write only language.