Improve DCE's SimplifyAlwaysThrows regarding Invoke location

Allow SimplifyAlwaysThrows to run on any invoke that always throws,
and not just the second to last instruction.

As a bonus, there are two places that would make a graph have
invokes that always throws:
  1) When inlining a method that has invokes that always throw.
  2) When trying to inline a method, and not doing it since it
     always throws.

Since we only have those two places, we can add a flag to the graph
that tracks this. We then skip the SimplifyAlwaysThrows optimization
altogether if the graph doesn't have that flag set.

Bug: 227316307
Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b
Change-Id: Ia353fcf2c055885cc04e10790584210c2e488e32
5 files changed