https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105314
--- Comment #7 from ptomsich at gcc dot gnu.org --- The transformation for """ long func2 (long a, long b, long c) { if (c) a = 0; else a = 5; return a; } """ into """ 0000000000000006 <func2>: 6: 00163513 seqz a0,a2 a: 40a00533 neg a0,a0 e: 8915 andi a0,a0,5 10: 8082 ret """ is correct, as we get """ tmp = c ? 0 : -1; a = tmp & 5; """