aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbellard <bellard>2002-11-02 20:46:36 +0000
committerbellard <bellard>2002-11-02 20:46:36 +0000
commitb31d34fa0bc69189f0bf06ee329b1c5bb1da09b5 (patch)
treecb46735979de63f64cc84a5a55432262af2c5ccc
parentb8772fc99afb06e97b6a7bd14b78f844d0c662d7 (diff)
downloadtinycc-b31d34fa0bc69189f0bf06ee329b1c5bb1da09b5.tar.gz
tinycc-b31d34fa0bc69189f0bf06ee329b1c5bb1da09b5.tar.bz2
sizeof/alignof/typeof tests
-rw-r--r--tcctest.c74
1 files changed, 67 insertions, 7 deletions
diff --git a/tcctest.c b/tcctest.c
index 138c974..77027d1 100644
--- a/tcctest.c
+++ b/tcctest.c
@@ -60,6 +60,9 @@ void longlong_test(void);
void stdarg_test(void);
void whitespace_test(void);
void relocation_test(void);
+void old_style_function(void);
+void sizeof_test(void);
+void typeof_test(void);
int fib(int n);
void num(int n);
@@ -192,7 +195,7 @@ void macro_test(void)
#line 203 "test"
printf("__LINE__=%d __FILE__=%s\n",
__LINE__, __FILE__);
-#line 195 "tcctest.c"
+#line 198 "tcctest.c"
/* not strictly preprocessor, but we test it there */
#ifdef C99_MACROS
@@ -208,6 +211,14 @@ void macro_test(void)
/* complicated macros in glibc */
printf("INT64_MIN=%Ld\n", INT64_MIN);
+ {
+ int a;
+ a = 1;
+ glue(a+, +);
+ printf("a=%d\n", a);
+ glue(a <, <= 2);
+ printf("a=%d\n", a);
+ }
}
int op(a,b)
@@ -428,6 +439,9 @@ int main(int argc, char **argv)
stdarg_test();
whitespace_test();
relocation_test();
+ old_style_function();
+ sizeof_test();
+ typeof_test();
return 0;
}
@@ -466,12 +480,6 @@ void array_test(int a[4])
printf("array:\n");
printf("sizeof(a) = %d\n", sizeof(a));
- printf("sizeof(int) = %d\n", sizeof(int));
- printf("sizeof(unsigned int) = %d\n", sizeof(unsigned int));
- printf("sizeof(short) = %d\n", sizeof(short));
- printf("sizeof(unsigned short) = %d\n", sizeof(unsigned short));
- printf("sizeof(char) = %d\n", sizeof(char));
- printf("sizeof(unsigned char) = %d\n", sizeof(unsigned char));
printf("sizeof(\"a\") = %d\n", sizeof("a"));
#ifdef C99_MACROS
printf("sizeof(__func__) = %d\n", sizeof(__func__));
@@ -1502,3 +1510,55 @@ void relocation_test(void)
printf("*rel1=%d\n", *rel1);
printf("*rel2=%d\n", *rel2);
}
+
+void old_style_f(a,b,c)
+ int a, b;
+ double c;
+{
+ printf("a=%d b=%d b=%f\n", a, b, c);
+}
+
+void old_style_function(void)
+{
+ old_style_f((void *)1, 2, 3.0);
+}
+
+void sizeof_test(void)
+{
+ int a;
+ int **ptr;
+
+ printf("sizeof(int) = %d\n", sizeof(int));
+ printf("sizeof(unsigned int) = %d\n", sizeof(unsigned int));
+ printf("sizeof(short) = %d\n", sizeof(short));
+ printf("sizeof(unsigned short) = %d\n", sizeof(unsigned short));
+ printf("sizeof(char) = %d\n", sizeof(char));
+ printf("sizeof(unsigned char) = %d\n", sizeof(unsigned char));
+ printf("sizeof(func) = %d\n", sizeof sizeof_test());
+ a = 1;
+ printf("sizeof(a++) = %d\n", sizeof a++);
+ printf("a=%d\n", a);
+ ptr = NULL;
+ printf("sizeof(**ptr) = %d\n", sizeof (**ptr));
+
+ /* some alignof tests */
+ printf("__alignof__(int) = %d\n", __alignof__(int));
+ printf("__alignof__(unsigned int) = %d\n", __alignof__(unsigned int));
+ printf("__alignof__(short) = %d\n", __alignof__(short));
+ printf("__alignof__(unsigned short) = %d\n", __alignof__(unsigned short));
+ printf("__alignof__(char) = %d\n", __alignof__(char));
+ printf("__alignof__(unsigned char) = %d\n", __alignof__(unsigned char));
+ printf("__alignof__(func) = %d\n", __alignof__ sizeof_test());
+}
+
+void typeof_test(void)
+{
+ double a;
+ typeof(a) b;
+ typeof(float) c;
+
+ a = 1.5;
+ b = 2.5;
+ c = 3.5;
+ printf("a=%f b=%f c=%f\n", a, b, c);
+}