https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103784
--- Comment #9 from Surya Kumari Jangala <jskumari at gcc dot gnu.org> --- The same issue of unnecessary rldicl instruction is there if we change return value from bool to int. int foo (int a, int b) { if (a > 2) return 0; if (b < 10) return 1; return 0; } cmpwi 0,3,2 bgt 0,.L3 subfic 4,4,9 srdi 3,4,63 xori 3,3,0x1 rldicl 3,3,0,63 blr .p2align 4,,15 .L3: li 3,0 rldicl 3,3,0,63 blr