This is a minor improvement for the core_list_find routine in coremark. Basically for riscv, and likely other targets, we can end up with an unconditional jump to a return statement.    This is a result of compensation code created by bb-reorder, and no jump optimization pass runs after bb-reorder to clean this stuff up. This patch utilizes preexisting code to identify suitable branch targets as well as preexisting code to emit a suitable return, so it's pretty simple.  Note that when we arrange to do this optimization, the original return block may become unreachable. So we conditionally call delete_unreachable_blocks to fix that up. This triggers ~160 times during an x86_64 bootstrap.  Naturally it bootstraps and regression tests on x86_64. I've also bootstrapped this on riscv64, regression testing with qemu shows some regressions, but AFAICT they're actually qemu bugs with signal handling/delivery -- qemu user mode emulation is not consistently calling user defined signal handlers.  Given the same binary, sometimes they'll get called and the test passes, other times the handler isn't called and the test (of course) fails. I'll probably spend some time to try and chase this down for the sake of making testing easier. OK for the trunk? Jeff