From cdc3a63179511eabe0fd4481aba98a959692d66d Mon Sep 17 00:00:00 2001 From: Sei Lisa Date: Sun, 14 Jun 2015 05:11:32 +0200 Subject: [PATCH] Fix problem due to not copying a node. It still needs more analysis, but this patch is an improvement in that it fixes known problematic cases and doesn't seem to introduce new ones. --- lslopt/lsldeadcode.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lslopt/lsldeadcode.py b/lslopt/lsldeadcode.py index e488bd6..afdc02a 100644 --- a/lslopt/lsldeadcode.py +++ b/lslopt/lsldeadcode.py @@ -411,12 +411,20 @@ class deadcode(object): sym = self.SymbolReplacedOrDeleted(node) if sym: # Mark as executed, so it isn't optimized out. - new = sym['W'] + # Make shallow copy. + # TODO: Needs more analysis to see if it's correct or not. + # (See constant_anomaly.lsl) + new = sym['W'].copy() + if 'orig' in new: + del new['orig'] + new['X'] = True - SEF = 'SEF' in sym['W'] - if SEF: - new['SEF'] = True + # this part makes no sense? + #SEF = 'SEF' in sym['W'] + #if SEF: + # new['SEF'] = True + if new['t'] != node['t']: new = self.Cast(new, node['t']) curnode['ch'][index] = node = new