Is this dead-code elimination phase run all the time, or just optimizing? The reason for `ignoreMode` was that verification would get confused in strange cases where you'd have to build a LUB on incompatible types, like:

```
  if (..) ??? else 42
```
Here, without the ignore mode, there would be a control-flow merge between the two branches, and it would try to find the lub between `int` and `scala.Nothing$` (in JVM terms).

I'm giving this as background info, I guess this test passes now, but keep in mind that DCE is required for correctness now.