This applies the D100251 mechanism to the gcov instrumentation pass.
With this patch, -fno-omit-frame-pointer in
clang -fprofile-arcs -O1 -fno-omit-frame-pointer will be respected for synthesized
__llvm_gcov_writeout,__llvm_gcov_reset,__llvm_gcov_init functions: the frame pointer
will be kept (note: on many targets -O1 eliminates the frame pointer by default).
clang -fno-exceptions -fno-asynchronous-unwind-tables -g -fprofile-arcs will
produce .debug_frame instead of .eh_frame.
I think not all three functions need noinline, so I do not place noinline in the common function.
@void Do you know why noredzone is needed? Many other instrumentation passes don't set this attribute.