mirror of
https://github.com/mirror/tinycc.git
synced 2026-09-03 12:12:46 +08:00
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 a8b83ce43a
* 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
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user