https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103784
--- Comment #2 from HaoChen Gui <guihaoc at gcc dot gnu.org> --- Sorry, I pasted wrong codes. Here are the correct ones. //test.c #include <stdbool.h> bool foo (int a, int b) { if (a > 2) return false; if (b < 10) return true; return false; } //assembly with the trunk cmpwi 0,3,2 bgt 0,.L3 cmpwi 0,4,9 li 3,1 isel 3,0,3,1 rldicl 3,3,0,63 blr .p2align 4,,15 .L3: li 3,0 rldicl 3,3,0,63 blr The two zero extend (rldicl) are unnecessary?