From 4305903ddeccfb5456b21433a0e57588ab421a92 Mon Sep 17 00:00:00 2001 From: whitequark Date: Mon, 5 Dec 2016 04:38:25 +0000 Subject: [PATCH] compiler: rein in overzealous cast monomorphization. This caused failures on e.g. "int32(var64a >> var64b)", where the type of the argument is already fully known, but was unified with the result of the cast anyway. --- artiq/compiler/transforms/cast_monomorphizer.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/artiq/compiler/transforms/cast_monomorphizer.py b/artiq/compiler/transforms/cast_monomorphizer.py index c12eb9663..bed905c5a 100644 --- a/artiq/compiler/transforms/cast_monomorphizer.py +++ b/artiq/compiler/transforms/cast_monomorphizer.py @@ -13,9 +13,10 @@ class CastMonomorphizer(algorithm.Visitor): def visit_CallT(self, node): self.generic_visit(node) - if (types.is_builtin(node.func.type, "int") or - types.is_builtin(node.func.type, "int32") or - types.is_builtin(node.func.type, "int64")): + if ((types.is_builtin(node.func.type, "int") or + types.is_builtin(node.func.type, "int32") or + types.is_builtin(node.func.type, "int64")) and + types.is_var(node.type)): typ = node.type.find() if (not types.is_var(typ["width"]) and builtins.is_int(node.args[0].type) and