Commits

Mark Lacey committed 810631db50f
Do emit diagnostics on UnreachableInst that result from mandatory inlining. If these are actually resulting from something we should diagnose, we should have already emitted diagnostics on these when emitting diagnostics on the callee function. This was reported as a compiler crash resulting from hitting an llvm_unreachable() in the diagnostics code because we're attempting to emit a diagnostic about a constructor not having a return value on some path (and the code does not expect to be emitting these diagnostics from constructors). It turns out this was extremely difficult to reproduce because it required a constructor with a compiler generated apply to a function with an UnreachableInst in it that does not get replaced by another diagnostics pass, DiagnoseUnreachable. To satisfy the last of these conditions, I've added '-assert-config Release' to the run line, because this results in a call to a no-return function (one of the fatal error reporting functions) not getting emitted because it is stripped out due to the assert configuration (and DiagnoseUnreachable would have stripped the code after the no-return function, and that code would have included the UnreachableInst that triggers the crash this is fixing). Fixes the rest of rdar://problem/20663080. Swift SVN r28452