forked from Mirrors/tinycc
Avoid warnings with gcc 4.8 + default CFLAGS
parent
a1a691a030
commit
0f5942c6b3
3
tccgen.c
3
tccgen.c
|
@ -800,9 +800,9 @@ ST_FUNC int gv(int rc)
|
||||||
#else
|
#else
|
||||||
if ((vtop->type.t & VT_BTYPE) == VT_LLONG) {
|
if ((vtop->type.t & VT_BTYPE) == VT_LLONG) {
|
||||||
int addr_type = VT_INT, load_size = 4, load_type = VT_INT;
|
int addr_type = VT_INT, load_size = 4, load_type = VT_INT;
|
||||||
|
unsigned long long ll;
|
||||||
#endif
|
#endif
|
||||||
int r2, original_type;
|
int r2, original_type;
|
||||||
unsigned long long ll;
|
|
||||||
original_type = vtop->type.t;
|
original_type = vtop->type.t;
|
||||||
/* two register type load : expand to two words
|
/* two register type load : expand to two words
|
||||||
temporarily */
|
temporarily */
|
||||||
|
@ -3765,7 +3765,6 @@ ST_FUNC void unary(void)
|
||||||
case TOK_builtin_va_arg_types:
|
case TOK_builtin_va_arg_types:
|
||||||
{
|
{
|
||||||
CType type;
|
CType type;
|
||||||
int bt;
|
|
||||||
next();
|
next();
|
||||||
skip('(');
|
skip('(');
|
||||||
parse_type(&type);
|
parse_type(&type);
|
||||||
|
|
26
x86_64-gen.c
26
x86_64-gen.c
|
@ -239,13 +239,6 @@ static int is64_type(int t)
|
||||||
(t & VT_BTYPE) == VT_LLONG);
|
(t & VT_BTYPE) == VT_LLONG);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int is_sse_float(int t) {
|
|
||||||
int bt;
|
|
||||||
bt = t & VT_BTYPE;
|
|
||||||
return bt == VT_DOUBLE || bt == VT_FLOAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* instruction + 4 bytes data. Return the address of the data */
|
/* instruction + 4 bytes data. Return the address of the data */
|
||||||
ST_FUNC int oad(int c, int s)
|
ST_FUNC int oad(int c, int s)
|
||||||
{
|
{
|
||||||
|
@ -687,6 +680,12 @@ ST_FUNC int gfunc_sret(CType *vt, CType *ret, int *ret_align)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int is_sse_float(int t) {
|
||||||
|
int bt;
|
||||||
|
bt = t & VT_BTYPE;
|
||||||
|
return bt == VT_DOUBLE || bt == VT_FLOAT;
|
||||||
|
}
|
||||||
|
|
||||||
int gfunc_arg_size(CType *type) {
|
int gfunc_arg_size(CType *type) {
|
||||||
int align;
|
int align;
|
||||||
if (type->t & (VT_ARRAY|VT_BITFIELD))
|
if (type->t & (VT_ARRAY|VT_BITFIELD))
|
||||||
|
@ -989,7 +988,7 @@ static X86_64_Mode classify_x86_64_inner(CType *ty) {
|
||||||
|
|
||||||
static X86_64_Mode classify_x86_64_arg(CType *ty, CType *ret, int *psize, int *palign, int *reg_count) {
|
static X86_64_Mode classify_x86_64_arg(CType *ty, CType *ret, int *psize, int *palign, int *reg_count) {
|
||||||
X86_64_Mode mode;
|
X86_64_Mode mode;
|
||||||
int size, align, ret_t;
|
int size, align, ret_t = 0;
|
||||||
|
|
||||||
if (ty->t & (VT_BITFIELD|VT_ARRAY)) {
|
if (ty->t & (VT_BITFIELD|VT_ARRAY)) {
|
||||||
*psize = 8;
|
*psize = 8;
|
||||||
|
@ -1030,6 +1029,9 @@ static X86_64_Mode classify_x86_64_arg(CType *ty, CType *ret, int *psize, int *p
|
||||||
ret_t = (size > 4) ? VT_DOUBLE : VT_FLOAT;
|
ret_t = (size > 4) ? VT_DOUBLE : VT_FLOAT;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case x86_64_mode_memory: /* avoid warning */
|
||||||
|
case x86_64_mode_none:
|
||||||
|
tcc_error("argument type not handled in classify_x86_64_arg\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1083,7 +1085,7 @@ void gfunc_call(int nb_args)
|
||||||
{
|
{
|
||||||
X86_64_Mode mode;
|
X86_64_Mode mode;
|
||||||
CType type;
|
CType type;
|
||||||
int size, align, r, args_size, stack_adjust, run_start, run_end, i, j, reg_count;
|
int size, align, r, args_size, stack_adjust, run_start, run_end, i, reg_count;
|
||||||
int nb_reg_args = 0;
|
int nb_reg_args = 0;
|
||||||
int nb_sse_args = 0;
|
int nb_sse_args = 0;
|
||||||
int sse_reg, gen_reg;
|
int sse_reg, gen_reg;
|
||||||
|
@ -1133,6 +1135,8 @@ void gfunc_call(int nb_args)
|
||||||
gen_reg -= reg_count;
|
gen_reg -= reg_count;
|
||||||
if (gen_reg + reg_count > REGN) goto stack_arg;
|
if (gen_reg + reg_count > REGN) goto stack_arg;
|
||||||
break;
|
break;
|
||||||
|
case x86_64_mode_none: /* avoid warning */
|
||||||
|
tcc_error("argument type not handled in gfunc_call");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1366,7 +1370,7 @@ void gfunc_prolog(CType *func_type)
|
||||||
{
|
{
|
||||||
X86_64_Mode mode;
|
X86_64_Mode mode;
|
||||||
int i, addr, align, size, reg_count;
|
int i, addr, align, size, reg_count;
|
||||||
int param_addr, reg_param_index, sse_param_index;
|
int param_addr = 0, reg_param_index, sse_param_index;
|
||||||
Sym *sym;
|
Sym *sym;
|
||||||
CType *type;
|
CType *type;
|
||||||
|
|
||||||
|
@ -1499,6 +1503,8 @@ void gfunc_prolog(CType *func_type)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case x86_64_mode_none:
|
||||||
|
tcc_error("argument type not handled in gfunc_prolog\n");
|
||||||
}
|
}
|
||||||
sym_push(sym->v & ~SYM_FIELD, type,
|
sym_push(sym->v & ~SYM_FIELD, type,
|
||||||
VT_LOCAL | VT_LVAL, param_addr);
|
VT_LOCAL | VT_LVAL, param_addr);
|
||||||
|
|
Loading…
Reference in New Issue