aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorgrischka <grischka>2017-05-07 12:41:29 +0200
committergrischka <grischka>2017-05-07 12:41:29 +0200
commit44abffe33a10ee2bdc0d66f87ffa5e178182d6e6 (patch)
tree4276ddd64a57f66a51525bec6c91255e8af40903 /tests
parent94ac9f2b4952fbd77bfdf39e753fcbca3e472883 (diff)
downloadtinycc-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.c11
-rw-r--r--tests/tcctest.c10
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;