From: Jason Ekstrand Date: Fri, 19 Oct 2018 19:31:19 +0000 (-0500) Subject: nir/algebraic: Loosen a restriction on variables X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=932c650e0b1b3a0845f138c216ae1f235bdfa070;p=mesa.git nir/algebraic: Loosen a restriction on variables Previously, we would fail if a variable had an assigned but unknown bit size X and we tried to assign it an actual bit size. However, this is ok because, at the time we do the search, the variable does have an actual bit size and it will match X because of the NIR rules. Reviewed-by: Samuel Iglesias Gonsálvez --- diff --git a/src/compiler/nir/nir_algebraic.py b/src/compiler/nir/nir_algebraic.py index 34ea2ba9e68..bcefa3372b3 100644 --- a/src/compiler/nir/nir_algebraic.py +++ b/src/compiler/nir/nir_algebraic.py @@ -352,8 +352,12 @@ class BitSizeValidator(object): if var_class == 0: self._var_classes[var.index] = bit_class else: - canon_class = self._class_relation.get_canonical(var_class) - assert canon_class < 0 or canon_class == bit_class + canon_bit_class = self._class_relation.get_canonical(var_class) + canon_var_class = self._class_relation.get_canonical(bit_class) + assert canon_var_class < 0 or canon_bit_class < 0 or \ + canon_var_class == canon_bit_class, \ + 'Variable {0} cannot be both {1}-bit and {2}-bit' \ + .format(str(var), bit_class, var_class) var_class = self._class_relation.add_equiv(var_class, bit_class) self._var_classes[var.index] = var_class