| /* { 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; |
| } |