From 17314a1fb316eb712ae0c539ccea64fe1aeb5c93 Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Tue, 4 Feb 2014 20:54:28 +0800 Subject: [PATCH] Fix parameter passing of long long bitfield --- Changelog | 1 + tccgen.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/Changelog b/Changelog index 20814c10..966375d4 100644 --- a/Changelog +++ b/Changelog @@ -66,6 +66,7 @@ Bug fixes: - use libtcc for static linking with runtime library (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 parameter passing of (unsigned) long long bitfield (Thomas Preud'homme) version 0.9.26: diff --git a/tccgen.c b/tccgen.c index c5e368e9..03a446a9 100644 --- a/tccgen.c +++ b/tccgen.c @@ -3490,6 +3490,9 @@ static void gfunc_param_typed(Sym *func, Sym *arg) if ((vtop->type.t & VT_BTYPE) == VT_FLOAT) { type.t = VT_DOUBLE; 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) { tcc_error("too many arguments to function"); -- 2.11.4.GIT