X-Git-Url: https://ecere.com/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=compiler%2Fbootstrap%2Flibec%2Fbootstrap%2Fpass15.c;h=dd544dc570be70d3631428f45b782e59c801d4bc;hb=dcefedcb62407b77f47f3096611ab850e5603de7;hp=59a81b45ddc5070f46560536a4f0184789f08637;hpb=aeb9a8ef12e130c6cd083094ac4b8253b3b6f2fb;p=sdk diff --git a/compiler/bootstrap/libec/bootstrap/pass15.c b/compiler/bootstrap/libec/bootstrap/pass15.c index 59a81b4..dd544dc 100644 --- a/compiler/bootstrap/libec/bootstrap/pass15.c +++ b/compiler/bootstrap/libec/bootstrap/pass15.c @@ -15615,7 +15615,8 @@ unsigned int isSigned = constant[0] == '-'; char * endP = (((void *)0)); long long i64 = strtoll(constant, &endP, 0); uint64 ui64 = strtoull(constant, &endP, 0); -unsigned int is64Bit = endP && (!strcmp(endP, "LL") || !strcmp(endP, "ll")); +unsigned int is64Bit = endP && (!strcmp(endP, "LL") || !strcmp(endP, "ll") || !strcmp(endP, "LLU") || !strcmp(endP, "llu") || !strcmp(endP, "ull") || !strcmp(endP, "ULL")); +unsigned int forceUnsigned = endP && (!strcmp(endP, "U") || !strcmp(endP, "u") || !strcmp(endP, "LLU") || !strcmp(endP, "llu") || !strcmp(endP, "ull") || !strcmp(endP, "ULL")); if(isSigned) { @@ -15636,6 +15637,8 @@ isSigned = 1; else if(constant[0] != '0' || !constant[1]) isSigned = 1; } +if(forceUnsigned) +isSigned = 0; type->kind = is64Bit ? 4 : 3; type->isSigned = isSigned; }