History

Use explicit signed char in char_short_test

as 'char' is unsigned on some architectures, so the tests weren't testing what they were supposed to.

Michael Matz committed 6 years ago

Commit 1d4d74d1 parent c8ca64d1 file · +7 −7Browse files

Unified · Split

tests/tcctest.c+7−7
@@ -1216,7 +1216,7 @@ static void *_csf = __csf; · 1215 unmodified lines
12161216 void char_short_test()
12171217 {
12181218 int var1, var2;
1219− char var3;
1219+ signed char var3;
12201220 long long var4;
12211221
12221222 printf("char_short:\n");
@@ -1224,7 +1224,7 @@ void char_short_test() · 1 unmodified line
12241224 var1 = 0x01020304;
12251225 var2 = 0xfffefdfc;
12261226 printf("s8=%d %d\n",
1227− *(char *)&var1, *(char *)&var2);
1227+ *(signed char *)&var1, *(signed char *)&var2);
12281228 printf("u8=%d %d\n",
12291229 *(unsigned char *)&var1, *(unsigned char *)&var2);
12301230 printf("s16=%d %d\n",
@@ -1235,7 +1235,7 @@ void char_short_test() · 4 unmodified lines
12351235 *(int *)&var1, *(int *)&var2);
12361236 printf("u32=%d %d\n",
12371237 *(unsigned int *)&var1, *(unsigned int *)&var2);
1238− *(char *)&var1 = 0x08;
1238+ *(signed char *)&var1 = 0x08;
12391239 printf("var1=%x\n", var1);
12401240 *(short *)&var1 = 0x0809;
12411241 printf("var1=%x\n", var1);
@@ -1250,7 +1250,7 @@ void char_short_test() · 8 unmodified lines
12501250 var1 = 0x778899aa;
12511251 var4 = 0x11223344aa998877ULL;
12521252 printf("promote char/short assign VA %d %d\n", var3 = var1 + 1, var3 = var4 + 1);
1253− printf("promote char/short cast VA %d %d\n", (char)(var1 + 1), (char)(var4 + 1));
1253+ printf("promote char/short cast VA %d %d\n", (signed char)(var1 + 1), (signed char)(var4 + 1));
12541254 #if !defined(__arm__)
12551255 /* We can't really express GCC behaviour of return type promotion in
12561256 the presence of undefined behaviour (like __csf is). */
@@ -1264,14 +1264,14 @@ void char_short_test() · 7 unmodified lines
12641264 csf(_Bool,0x33221101));
12651265 #endif
12661266 var3 = -10;
1267− var1 = (char)(unsigned char)(var3 + 1);
1268− var4 = (char)(unsigned char)(var3 + 1);
1267+ var1 = (signed char)(unsigned char)(var3 + 1);
1268+ var4 = (signed char)(unsigned char)(var3 + 1);
12691269 printf("promote multicast (char)(unsigned char) %d "LONG_LONG_FORMAT"\n", var1, var4);
12701270 var4 = 0x11223344aa998877ULL;
12711271 var4 = (unsigned)(int)(var4 + 1);
12721272 printf("promote multicast (unsigned)(int) "LONG_LONG_FORMAT"\n", var4);
12731273 var4 = 0x11223344bbaa9988ULL;
1274− var4 = (unsigned)(char)(var4 + 1);
1274+ var4 = (unsigned)(signed char)(var4 + 1);
12751275 printf("promote multicast (unsigned)(char) "LONG_LONG_FORMAT"\n", var4);
12761276 }
12771277

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t