diff options
| author | Shinichiro Hamaji <shinichiro.hamaji _at_ gmail.com> | 2008-12-02 01:29:45 +0900 |
|---|---|---|
| committer | grischka <grischka> | 2008-12-02 02:26:40 +0100 |
| commit | 1e776b29d3f46db33325d031570d16970ea72c48 (patch) | |
| tree | 2bcea58f824992ab04a4f4f4f2861d5d0f6bddf3 | |
| parent | ba8c95a98dec32e6a4a3f67691fecc89c0f7d09d (diff) | |
| download | tinycc-1e776b29d3f46db33325d031570d16970ea72c48.tar.gz tinycc-1e776b29d3f46db33325d031570d16970ea72c48.tar.bz2 | |
Suport LDOUBLE_SIZE == 16 environment.
| -rw-r--r-- | tcc.c | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -2560,6 +2560,12 @@ static void tok_str_add2(TokenString *s, int t, CValue *cv) str[len++] = cv->tab[0]; str[len++] = cv->tab[1]; str[len++] = cv->tab[2]; +#elif LDOUBLE_SIZE == 16 + case TOK_CLDOUBLE: + str[len++] = cv->tab[0]; + str[len++] = cv->tab[1]; + str[len++] = cv->tab[2]; + str[len++] = cv->tab[3]; #elif LDOUBLE_SIZE != 8 #error add long double size support #endif @@ -2584,7 +2590,13 @@ static void tok_str_add_tok(TokenString *s) tok_str_add2(s, tok, &tokc); } -#if LDOUBLE_SIZE == 12 +#if LDOUBLE_SIZE == 16 +#define LDOUBLE_GET(p, cv) \ + cv.tab[0] = p[0]; \ + cv.tab[1] = p[1]; \ + cv.tab[2] = p[2]; \ + cv.tab[3] = p[3]; +#elif LDOUBLE_SIZE == 12 #define LDOUBLE_GET(p, cv) \ cv.tab[0] = p[0]; \ cv.tab[1] = p[1]; \ @@ -4967,9 +4979,9 @@ int gv(int rc) offset = (data_section->data_offset + align - 1) & -align; data_section->data_offset = offset; /* XXX: not portable yet */ -#ifdef __i386__ +#if defined(__i386__) || defined(__x86_64__) /* Zero pad x87 tenbyte long doubles */ - if (size == 12) + if (size == LDOUBLE_SIZE) vtop->c.tab[2] &= 0xffff; #endif ptr = section_ptr_add(data_section, size); |
