The default and pre-link pipeline builders currently require you to call a separate method for optimization level O0, even though they have perfectly well-defined O0 optimization pipelines.
Accept O0 optimization level and call buildO0DefaultPipeline() internally, so all consumers don't need to repeat this.
I'm missing why you're not calling buildO0DefaultPipeline for O0 here too.