erlang/otp — pull request #308 by nox (2014-03-25 02:10:17+00:00)
Title: Correctly handle non-matching patterns against literal values

The pass sys_core_fold did not correctly handle non-matching patterns in code such as:

```erlang
0 = case <<>> of
<<>> -> 0;
a -> 1
end.
```

Function case_opt_lit/3 is rewritten in two passes to first remove any non-matching clause and only then potentially remove the related patterns in each clause.

@UlfNorell