Fix parameter passing of long long bitfield

This commit is contained in:
Thomas Preud'homme 2014-02-04 20:54:28 +08:00
parent 4e5f15c685
commit 17314a1fb3
2 changed files with 4 additions and 0 deletions

View File

@ -66,6 +66,7 @@ Bug fixes:
- use libtcc for static linking with runtime library (Thomas Preud'homme) - use libtcc for static linking with runtime library (Thomas Preud'homme)
- fix negation of 0.0 and -0.0 values (Thomas Preud'homme) - fix negation of 0.0 and -0.0 values (Thomas Preud'homme)
- fix integer to double conversion on ARM (Thomas Preud'homme) - fix integer to double conversion on ARM (Thomas Preud'homme)
- fix parameter passing of (unsigned) long long bitfield (Thomas Preud'homme)
version 0.9.26: version 0.9.26:

View File

@ -3490,6 +3490,9 @@ static void gfunc_param_typed(Sym *func, Sym *arg)
if ((vtop->type.t & VT_BTYPE) == VT_FLOAT) { if ((vtop->type.t & VT_BTYPE) == VT_FLOAT) {
type.t = VT_DOUBLE; type.t = VT_DOUBLE;
gen_cast(&type); gen_cast(&type);
} else if (vtop->type.t & VT_BITFIELD) {
type.t = vtop->type.t & (VT_BTYPE | VT_UNSIGNED);
gen_cast(&type);
} }
} else if (arg == NULL) { } else if (arg == NULL) {
tcc_error("too many arguments to function"); tcc_error("too many arguments to function");