fixed unary ^ opcode (bug082)

R=r
DELTA=11  (10 added, 1 deleted, 0 changed)
OCL=14047
CL=14047
diff --git a/src/cmd/6g/cgen.c b/src/cmd/6g/cgen.c
index 7b054df..bbd904d 100644
--- a/src/cmd/6g/cgen.c
+++ b/src/cmd/6g/cgen.c
@@ -101,8 +101,17 @@
 		goto ret;
 
 	// unary
-	case OMINUS:
 	case OCOM:
+		a = optoas(OXOR, nl->type);
+		regalloc(&n1, nl->type, N);
+		cgen(nl, &n1);
+		nodconst(&n2, nl->type, -1);
+		gins(a, &n2, &n1);
+		gmove(&n1, res);
+		regfree(&n1);
+		goto ret;
+
+	case OMINUS:
 		a = optoas(n->op, nl->type);
 		goto uop;