aboutsummaryrefslogtreecommitdiff
path: root/tests/tcctest.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/tcctest.c')
-rw-r--r--tests/tcctest.c62
1 files changed, 32 insertions, 30 deletions
diff --git a/tests/tcctest.c b/tests/tcctest.c
index 930f368..c5a3e73 100644
--- a/tests/tcctest.c
+++ b/tests/tcctest.c
@@ -16,6 +16,14 @@
#endif
+#if defined(_WIN32)
+#define LONG_LONG_FORMAT "%lld"
+#define ULONG_LONG_FORMAT "%llu"
+#else
+#define LONG_LONG_FORMAT "%Ld"
+#define ULONG_LONG_FORMAT "%Lu"
+#endif
+
// MinGW has 80-bit rather than 64-bit long double which isn't compatible with TCC or MSVC
#if defined(_WIN32) && defined(__GNUC__)
#define LONG_DOUBLE double
@@ -263,7 +271,7 @@ void macro_test(void)
printf("func='%s'\n", __FUNCTION__);
/* complicated macros in glibc */
- printf("INT64_MIN=%Ld\n", INT64_MIN);
+ printf("INT64_MIN=" LONG_LONG_FORMAT "\n", INT64_MIN);
{
int a;
a = 1;
@@ -1711,19 +1719,19 @@ void lloptest(long long a, long long b)
ua = a;
ub = b;
/* arith */
- printf("arith: %Ld %Ld %Ld\n",
+ printf("arith: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
a + b,
a - b,
a * b);
if (b != 0) {
- printf("arith1: %Ld %Ld\n",
+ printf("arith1: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
a / b,
a % b);
}
/* binary */
- printf("bin: %Ld %Ld %Ld\n",
+ printf("bin: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
a & b,
a | b,
a ^ b);
@@ -1748,25 +1756,25 @@ void lloptest(long long a, long long b)
/* arith2 */
a++;
b++;
- printf("arith2: %Ld %Ld\n", a, b);
- printf("arith2: %Ld %Ld\n", a++, b++);
- printf("arith2: %Ld %Ld\n", --a, --b);
- printf("arith2: %Ld %Ld\n", a, b);
+ printf("arith2: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", a, b);
+ printf("arith2: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", a++, b++);
+ printf("arith2: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", --a, --b);
+ printf("arith2: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", a, b);
b = ub = 0;
printf("not: %d %d %d %d\n", !a, !ua, !b, !ub);
}
void llshift(long long a, int b)
{
- printf("shift: %Ld %Ld %Ld\n",
+ printf("shift: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
(unsigned long long)a >> b,
a >> b,
a << b);
- printf("shiftc: %Ld %Ld %Ld\n",
+ printf("shiftc: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
(unsigned long long)a >> 3,
a >> 3,
a << 3);
- printf("shiftc: %Ld %Ld %Ld\n",
+ printf("shiftc: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
(unsigned long long)a >> 35,
a >> 35,
a << 35);
@@ -1783,7 +1791,7 @@ void llfloat(void)
ula = 0x72345678;
la = (la << 20) | 0x12345;
ula = ula << 33;
- printf("la=%Ld ula=%Lu\n", la, ula);
+ printf("la=" LONG_LONG_FORMAT " ula=" ULONG_LONG_FORMAT "\n", la, ula);
fa = la;
da = la;
@@ -1793,7 +1801,7 @@ void llfloat(void)
la = fa;
lb = da;
lc = lda;
- printf("ftoll: %Ld %Ld %Ld\n", la, lb, lc);
+ printf("ftoll: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", la, lb, lc);
fa = ula;
da = ula;
@@ -1803,7 +1811,7 @@ void llfloat(void)
ula = fa;
ulb = da;
ulc = lda;
- printf("ftoull: %Lu %Lu %Lu\n", ula, ulb, ulc);
+ printf("ftoull: " ULONG_LONG_FORMAT " " ULONG_LONG_FORMAT " " ULONG_LONG_FORMAT "\n", ula, ulb, ulc);
}
long long llfunc1(int a)
@@ -1832,14 +1840,14 @@ void longlong_test(void)
ua = -2;
a = ia;
b = ua;
- printf("%Ld %Ld\n", a, b);
- printf("%Ld %Ld %Ld %Lx\n",
+ printf(LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", a, b);
+ printf(LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " %Lx\n",
(long long)1,
(long long)-2,
1LL,
0x1234567812345679);
a = llfunc1(-3);
- printf("%Ld\n", a);
+ printf(LONG_LONG_FORMAT "\n", a);
lloptest(1000, 23);
lloptest(0xff, 0x1234);
@@ -1880,7 +1888,7 @@ void longlong_test(void)
b = 4294967295LL;
printf("%d %d %d %d\n", a > b, a < b, a >= b, a <= b);
- printf("%Ld\n", 0x123456789LLU);
+ printf(LONG_LONG_FORMAT "\n", 0x123456789LLU);
}
void manyarg_test(void)
@@ -1891,34 +1899,31 @@ void manyarg_test(void)
1, 2, 3, 4, 5, 6, 7, 8,
0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0);
printf("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
- "%Ld %Ld %f %f\n",
+ LONG_LONG_FORMAT " " LONG_LONG_FORMAT " %f %f\n",
1, 2, 3, 4, 5, 6, 7, 8,
0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
1234567891234LL, 987654321986LL,
42.0, 43.0);
printf("%Lf %d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
- "%Ld %Ld %f %f\n",
+ LONG_LONG_FORMAT " " LONG_LONG_FORMAT " %f %f\n",
ld, 1, 2, 3, 4, 5, 6, 7, 8,
0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
1234567891234LL, 987654321986LL,
42.0, 43.0);
- /* XXX: known bug of x86-64 */
-#ifndef __x86_64__
printf("%d %d %d %d %d %d %d %d %Lf\n",
1, 2, 3, 4, 5, 6, 7, 8, ld);
printf("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
- "%Ld %Ld %f %f %Lf\n",
+ LONG_LONG_FORMAT " " LONG_LONG_FORMAT "%f %f %Lf\n",
1, 2, 3, 4, 5, 6, 7, 8,
0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
1234567891234LL, 987654321986LL,
42.0, 43.0, ld);
printf("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
- "%Lf %Ld %Ld %f %f %Lf\n",
+ "%Lf " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " %f %f %Lf\n",
1, 2, 3, 4, 5, 6, 7, 8,
0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
ld, 1234567891234LL, 987654321986LL,
42.0, 43.0, ld);
-#endif
}
void vprintf1(const char *fmt, ...)
@@ -1954,7 +1959,7 @@ void vprintf1(const char *fmt, ...)
break;
case 'l':
ll = va_arg(ap, long long);
- printf("%Ld", ll);
+ printf(LONG_LONG_FORMAT, ll);
break;
case 'F':
ld = va_arg(ap, LONG_DOUBLE);
@@ -1999,11 +2004,8 @@ void stdarg_test(void)
vprintf1("%f %d %f\n", 1.0, 2, 3.0);
vprintf1("%l %l %d %f\n", 1234567891234LL, 987654321986LL, 3, 1234.0);
vprintf1("%F %F %F\n", LONG_DOUBLE_LITERAL(1.2), LONG_DOUBLE_LITERAL(2.3), LONG_DOUBLE_LITERAL(3.4));
-#ifdef __x86_64__
- /* a bug of x86's TCC */
vprintf1("%d %f %l %F %d %f %l %F\n",
- 1, 1.2, 3L, 4.5L, 6, 7.8, 9L, 0.1L);
-#endif
+ 1, 1.2, 3LL, LONG_DOUBLE_LITERAL(4.5), 6, 7.8, 9LL, LONG_DOUBLE_LITERAL(0.1));
vprintf1("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f\n",
1, 2, 3, 4, 5, 6, 7, 8,
0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8);