From 129fd4b06e4e5d39ab24b08395efa85e856d611e Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Thu, 10 Nov 2016 10:40:53 -0800 Subject: [PATCH] Add TypeVar.strip_sameas(). Strips out any type variable copies from an expression. --- lib/cretonne/meta/cdsl/typevar.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/cretonne/meta/cdsl/typevar.py b/lib/cretonne/meta/cdsl/typevar.py index 66786f53cf..c2aeb5de97 100644 --- a/lib/cretonne/meta/cdsl/typevar.py +++ b/lib/cretonne/meta/cdsl/typevar.py @@ -313,6 +313,19 @@ class TypeVar(object): self.base = base self.derived_func = derived_func + def strip_sameas(self): + # type: () -> TypeVar + """ + Strip any `SAMEAS` functions from this typevar. + + Also rewrite any `SAMEAS` functions nested under this typevar. + """ + if self.is_derived: + self.base = self.base.strip_sameas() + if self.derived_func == self.SAMEAS: + return self.base + return self + def lane_of(self): # type: () -> TypeVar """