diff options
| author | grischka <grischka> | 2017-05-07 12:41:29 +0200 |
|---|---|---|
| committer | grischka <grischka> | 2017-05-07 12:41:29 +0200 |
| commit | 44abffe33a10ee2bdc0d66f87ffa5e178182d6e6 (patch) | |
| tree | 4276ddd64a57f66a51525bec6c91255e8af40903 /tests | |
| parent | 94ac9f2b4952fbd77bfdf39e753fcbca3e472883 (diff) | |
| download | tinycc-44abffe33a10ee2bdc0d66f87ffa5e178182d6e6.tar.gz tinycc-44abffe33a10ee2bdc0d66f87ffa5e178182d6e6.tar.bz2 | |
more minor fixes
* tccgen: re-allow long double constants for x87 cross
sizeof (long double) may be 12 or 16 depending on host platform
(i386/x86_64 on unix/windows).
Except that it's 8 if the host is on windows and not gcc
was used to compile tcc.
* win64: fix builtin_va_start after VT_REF removal
See also a8b83ce43a95fa519dacfe7690a3a0098af7909c
* tcctest.c: remove outdated limitation for ll-bitfield test
It always worked, there is no reason why it should not work
in future.
* libtcc1.c: exclude long double conversion on ARM
* Makefile: remove CFLAGS from link recipes
* lib/Makefile: use target DEFINES as passed from main Makefile
* lib/armflush.c lib/va_list.c: factor out from libtcc1.c
* arm-gen.c: disable "depreciated" warnings for now
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/abitest.c | 11 | ||||
| -rw-r--r-- | tests/tcctest.c | 10 |
2 files changed, 9 insertions, 12 deletions
diff --git a/tests/abitest.c b/tests/abitest.c index 896e97b..580e921 100644 --- a/tests/abitest.c +++ b/tests/abitest.c @@ -637,10 +637,13 @@ int main(int argc, char **argv) { RUN_TEST(ret_longdouble_test); RUN_TEST(ret_2float_test); RUN_TEST(ret_2double_test); - /* RUN_TEST(ret_8plus2double_test); currently broken on x86_64 */ - /* RUN_TEST(ret_6plus2longlong_test); currently broken on x86_64 */ - /* RUN_TEST(ret_mixed_test); currently broken on x86_64 */ - /* RUN_TEST(ret_mixed2_test); currently broken on x86_64 */ +#if !defined __x86_64__ || defined _WIN32 + /* currently broken on x86_64 linux */ + RUN_TEST(ret_8plus2double_test); + RUN_TEST(ret_6plus2longlong_test); + RUN_TEST(ret_mixed_test); + RUN_TEST(ret_mixed2_test); +#endif RUN_TEST(ret_mixed3_test); RUN_TEST(reg_pack_test); RUN_TEST(reg_pack_longlong_test); diff --git a/tests/tcctest.c b/tests/tcctest.c index 3a4860a..bc08968 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -2044,13 +2044,6 @@ void bitfield_test(void) else printf("st1.f2 != -1\n"); -#ifndef __i386__ - /* on i386 we don't correctly support long long bit-fields. - The bitfields can straddle long long boundaries (at least with - GCC bitfield layout) and code generation isn't prepared for this - (would have to work with two words in that case). */ - /* bit sizes below must be bigger than 32 since GCC doesn't allow - long-long bitfields whose size is not bigger than int */ struct sbf2 { long long f1 : 45; long long : 2; @@ -2063,7 +2056,7 @@ void bitfield_test(void) st2.f3 = a; st2.f2++; printf("%lld %lld %lld\n", st2.f1, st2.f2, st2.f3); -#endif + #if 0 Disabled for now until further clarification re GCC compatibility struct sbf3 { @@ -2076,6 +2069,7 @@ void bitfield_test(void) } st3; printf("sizeof(st3) = %d\n", sizeof(st3)); #endif + struct sbf4 { int x : 31; char y : 2; |
