tarval_not() han now handle tarval_b_true and tarval_b_false
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Sat, 17 Sep 2005 14:21:09 +0000 (14:21 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Sat, 17 Sep 2005 14:21:09 +0000 (14:21 +0000)
[r6638]

ir/tv/tv.c

index 4bf867f..e724cdc 100644 (file)
@@ -988,7 +988,6 @@ tarval *tarval_not(tarval *a)
 
   ANNOUNCE();
   assert(a);
-  assert(mode_is_int(a->mode)); /* bitwise negation is only allowed for integer */
 
   /* works for vector mode without changes */
 
@@ -999,7 +998,15 @@ tarval *tarval_not(tarval *a)
       sc_not(a->value, buffer);
       return get_tarval(buffer, a->length, a->mode);
 
+    case irms_internal_boolean:
+      if (a == tarval_b_true)
+        return tarval_b_false;
+      if (a == tarval_b_false)
+        return tarval_b_true;
+      return tarval_bad;
+
     default:
+      assert(0 && "bitwise negation is only allowed for integer and boolean");
       return tarval_bad;
   }
 }