From f7c2d0124d8152485b5f646a0b59c984df389d93 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Fri, 27 Apr 2018 00:59:27 +0200 Subject: [PATCH] compiler: Support bitcasting non-integers --- tgo.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tgo.go b/tgo.go index a37e34c7..4bff69ac 100644 --- a/tgo.go +++ b/tgo.go @@ -1030,14 +1030,16 @@ func (c *Compiler) parseConvert(frame *Frame, typeTo types.Type, x ssa.Value) (l } sizeTo := c.targetData.TypeAllocSize(llvmTypeTo) + if sizeFrom == sizeTo { + return c.builder.CreateBitCast(value, llvmTypeTo, ""), nil + } + if typeTo.Info() & types.IsInteger == 0 { // if not integer return llvm.Value{}, errors.New("todo: convert: extend non-integer type") } if sizeFrom > sizeTo { return c.builder.CreateTrunc(value, llvmTypeTo, ""), nil - } else if sizeFrom == sizeTo { - return c.builder.CreateBitCast(value, llvmTypeTo, ""), nil } else if typeTo.Info() & types.IsUnsigned != 0 { // if unsigned return c.builder.CreateZExt(value, llvmTypeTo, ""), nil } else { // if signed