/* { dg-do run } */ /* { dg-options "-mips16 -mcode-readable=yes" } */ /* PR tree-optimization/51513 verification variant for MIPS16, #2. */ int __attribute__ ((weak)) frob (int i) { switch (i) { case -5: return -2; case -3: return -1; case 0: return 0; case 3: return 1; case 5: break; default: __builtin_unreachable (); } return i; } int main (void) { return !(frob (-5) == -2 & frob (-3) == -1 & frob (0) == 0 & frob (3) == 1 & frob (5) == 5); } /* Without the fix for PR tree-optimization/51513 truncated code would be emitted for `frob', like: .text .align 2 .weak frob .set mips16 .set nomicromips .ent frob .type frob, @function frob: .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 .mask 0x00000000,0 .fmask 0x00000000,0 addiu $2,$4,5 .end frob .size frob, .-frob meaning `frob' will have no chance to return, let alone produce the result expected. */