From 3b4621c215a60b7162948742672f7fb6c54889ee Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Sat, 5 May 2018 18:33:32 +0200 Subject: [PATCH] compiler: Implement XOR (^x) --- tgo.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tgo.go b/tgo.go index dc2329da..852fb4fd 100644 --- a/tgo.go +++ b/tgo.go @@ -1140,6 +1140,8 @@ func (c *Compiler) parseUnOp(frame *Frame, unop *ssa.UnOp) (llvm.Value, error) { return c.builder.CreateSub(llvm.ConstInt(x.Type(), 0, false), x, ""), nil case token.MUL: // *x, dereference pointer return c.builder.CreateLoad(x, ""), nil + case token.XOR: // ^x, toggle all bits in integer + return c.builder.CreateXor(x, llvm.ConstInt(x.Type(), ^uint64(0), false), ""), nil default: return llvm.Value{}, errors.New("todo: unknown unop") }