aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Preud'homme <robotux@celest.fr>2014-02-04 20:54:28 +0800
committerThomas Preud'homme <robotux@celest.fr>2014-02-04 20:55:24 +0800
commit17314a1fb316eb712ae0c539ccea64fe1aeb5c93 (patch)
tree41d9f2444d32627250bb54f49ca0c767f811c8e5
parent4e5f15c6851c69c4cc5da18209218eb918dbee77 (diff)
downloadtinycc-17314a1fb316eb712ae0c539ccea64fe1aeb5c93.tar.gz
tinycc-17314a1fb316eb712ae0c539ccea64fe1aeb5c93.tar.bz2
Fix parameter passing of long long bitfield
-rw-r--r--Changelog1
-rw-r--r--tccgen.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/Changelog b/Changelog
index 20814c1..966375d 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 c5e368e..03a446a 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");