On Sun, Sep 25, 2022 at 6:29 PM Jeff Law <j...@ventanamicro.com> wrote: > > 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?
OK. Thanks, Richard. > > > Jeff > > > >