diff --git a/tccgen.c b/tccgen.c index 398e165..6f7cf1f 100644 --- a/tccgen.c +++ b/tccgen.c @@ -4881,8 +4881,12 @@ static void label_or_decl(int l) decl(l); } -static int case_cmp(const void *a, const void *b) -{ return (*(struct case_t**) a)->v1 - (*(struct case_t**) b)->v1; } +static int case_cmp(const void *pa, const void *pb) +{ + int a = (*(struct case_t**) pa)->v1; + int b = (*(struct case_t**) pb)->v1; + return a < b ? -1 : a > b; +} static void block(int *bsym, int *csym, int is_expr) { diff --git a/tests/tcctest.c b/tests/tcctest.c index 9a4d0ef..5e9b07f 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -1554,6 +1554,9 @@ void switch_test() case 3: printf("b"); break; + case 0xc33c6b9fU: + case 0x7c9eeeb9U: + break; } } printf("\n");