aboutsummaryrefslogtreecommitdiffstats
path: root/prog/encodingexec.go
diff options
context:
space:
mode:
Diffstat (limited to 'prog/encodingexec.go')
-rw-r--r--prog/encodingexec.go4
1 files changed, 2 insertions, 2 deletions
diff --git a/prog/encodingexec.go b/prog/encodingexec.go
index 2d2f02e57..2e69f2116 100644
--- a/prog/encodingexec.go
+++ b/prog/encodingexec.go
@@ -133,7 +133,7 @@ func (w *execContext) writeCopyin(c *Call) {
return
}
typ := arg.Type()
- if typ.Dir() == DirOut || IsPad(typ) || arg.Size() == 0 {
+ if typ.Dir() == DirOut || IsPad(typ) || (arg.Size() == 0 && !typ.IsBitfield()) {
return
}
w.write(execInstrCopyin)
@@ -236,7 +236,7 @@ func (w *execContext) writeArg(arg Arg) {
case *ConstArg:
val, pidStride := a.Value()
typ := a.Type()
- w.writeConstArg(a.Size(), val, typ.BitfieldOffset(), typ.BitfieldLength(), pidStride, typ.Format())
+ w.writeConstArg(typ.UnitSize(), val, typ.BitfieldOffset(), typ.BitfieldLength(), pidStride, typ.Format())
case *ResultArg:
if a.Res == nil {
w.writeConstArg(a.Size(), a.Val, 0, 0, 0, a.Type().Format())