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.
This commit is contained in:
whitequark 2016-12-05 04:38:25 +00:00
parent 4c94873560
commit 4305903dde
1 changed files with 4 additions and 3 deletions

View File

@ -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