Coalesce Return/ReturnVoid instructions

We do this to avoid generating the exit frame code several times.

We don't create new Return/ReturnVoid instructions after the
inliner, and CodeSinking looks like a logical place to add this
optimization.

Locally, speed-compiling in Pixel 5:
 * system server: -516.05KB (1.1%)
 * SystemUIGoogle: -216.50KB (0.8%)
 * AGSA: -3021.91KB (0.93%)

Bug: 203237752
Bug: 188926997
Bug: 194133637
Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b
Change-Id: Ib149382462efac82a0bbc114cbdbc773e1a5228c
6 files changed