This patch contains a number of uncontroversial changes:
- Replace all uses of errs, assert, llvm_unreachable with report_fatal_error with informative error strings.
- Replace calls to fail in loops with at most one call per error instance. Previously a function with 19 arguments would log "too many args" 14 times. This was not helpful.
- Change one if (..) switch ... to if (..) { switch .... The added brace is consistent with a near-identical switch immediately above.
- Elide one SDValue copy by using a reference rather than value. This is consistent with a variable declared immediately before it.
Don't see the point of using optional with SDValue, it already acts like optional on its own