https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111376
--- Comment #1 from YunQiang Su <syq at gcc dot gnu.org> --- RISC-V has this problem, too. Maybe we can try to combine it in `combine` pass, while it may be not easy. It may break some code like: ``` int f1(); int f2(); int f(int a) { int p = (a & 0x80000); if (p) return p; else return f2(); } ``` And in fact your patch also break it.