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
1216void char_short_test()1216void char_short_test()
1217{1217{
1218 int var1, var2;1218 int var1, var2;
1219 char var3;1219 signed char var3;
1220 long long var4;1220 long long var4;
1221 1221
1222 printf("char_short:\n");1222 printf("char_short:\n");
@@ -1224,7 +1224,7 @@ void char_short_test() · 1 unmodified line
1224 var1 = 0x01020304;1224 var1 = 0x01020304;
1225 var2 = 0xfffefdfc;1225 var2 = 0xfffefdfc;
1226 printf("s8=%d %d\n", 1226 printf("s8=%d %d\n",
1227 *(char *)&var1, *(char *)&var2);1227 *(signed char *)&var1, *(signed char *)&var2);
1228 printf("u8=%d %d\n", 1228 printf("u8=%d %d\n",
1229 *(unsigned char *)&var1, *(unsigned char *)&var2);1229 *(unsigned char *)&var1, *(unsigned char *)&var2);
1230 printf("s16=%d %d\n", 1230 printf("s16=%d %d\n",
@@ -1235,7 +1235,7 @@ void char_short_test() · 4 unmodified lines
1235 *(int *)&var1, *(int *)&var2);1235 *(int *)&var1, *(int *)&var2);
1236 printf("u32=%d %d\n", 1236 printf("u32=%d %d\n",
1237 *(unsigned int *)&var1, *(unsigned int *)&var2);1237 *(unsigned int *)&var1, *(unsigned int *)&var2);
1238 *(char *)&var1 = 0x08;1238 *(signed char *)&var1 = 0x08;
1239 printf("var1=%x\n", var1);1239 printf("var1=%x\n", var1);
1240 *(short *)&var1 = 0x0809;1240 *(short *)&var1 = 0x0809;
1241 printf("var1=%x\n", var1);1241 printf("var1=%x\n", var1);
@@ -1250,7 +1250,7 @@ void char_short_test() · 8 unmodified lines
1250 var1 = 0x778899aa;1250 var1 = 0x778899aa;
1251 var4 = 0x11223344aa998877ULL;1251 var4 = 0x11223344aa998877ULL;
1252 printf("promote char/short assign VA %d %d\n", var3 = var1 + 1, var3 = var4 + 1);1252 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));
1254#if !defined(__arm__)1254#if !defined(__arm__)
1255 /* We can't really express GCC behaviour of return type promotion in1255 /* We can't really express GCC behaviour of return type promotion in
1256 the presence of undefined behaviour (like __csf is). */1256 the presence of undefined behaviour (like __csf is). */
@@ -1264,14 +1264,14 @@ void char_short_test() · 7 unmodified lines
1264 csf(_Bool,0x33221101));1264 csf(_Bool,0x33221101));
1265#endif1265#endif
1266 var3 = -10;1266 var3 = -10;
1267 var1 = (char)(unsigned char)(var3 + 1);1267 var1 = (signed char)(unsigned char)(var3 + 1);
1268 var4 = (char)(unsigned char)(var3 + 1);1268 var4 = (signed char)(unsigned char)(var3 + 1);
1269 printf("promote multicast (char)(unsigned char) %d "LONG_LONG_FORMAT"\n", var1, var4);1269 printf("promote multicast (char)(unsigned char) %d "LONG_LONG_FORMAT"\n", var1, var4);
1270 var4 = 0x11223344aa998877ULL;1270 var4 = 0x11223344aa998877ULL;
1271 var4 = (unsigned)(int)(var4 + 1);1271 var4 = (unsigned)(int)(var4 + 1);
1272 printf("promote multicast (unsigned)(int) "LONG_LONG_FORMAT"\n", var4);1272 printf("promote multicast (unsigned)(int) "LONG_LONG_FORMAT"\n", var4);
1273 var4 = 0x11223344bbaa9988ULL;1273 var4 = 0x11223344bbaa9988ULL;
1274 var4 = (unsigned)(char)(var4 + 1);1274 var4 = (unsigned)(signed char)(var4 + 1);
1275 printf("promote multicast (unsigned)(char) "LONG_LONG_FORMAT"\n", var4);1275 printf("promote multicast (unsigned)(char) "LONG_LONG_FORMAT"\n", var4);
1276}1276}
1277 1277

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