/* { dg-do assemble } */ /* { dg-options "-O2" } */ extern void abort (void); enum { __GCONV_OK = 0, __GCONV_NOCONV, __GCONV_NODB, __GCONV_NOMEM, __GCONV_EMPTY_INPUT, __GCONV_FULL_OUTPUT, __GCONV_ILLEGAL_INPUT, __GCONV_INCOMPLETE_INPUT, __GCONV_ILLEGAL_DESCRIPTOR, __GCONV_INTERNAL_ERROR }; int foo (int result) { int irreversible = 0; switch (result) { case __GCONV_ILLEGAL_INPUT: irreversible = -1L; break; case __GCONV_FULL_OUTPUT: irreversible = -2L; break; case __GCONV_INCOMPLETE_INPUT: irreversible = -3L; break; case __GCONV_EMPTY_INPUT: case __GCONV_OK: break; default: abort (); } return irreversible; }