Add optimization of declarations.

integer a = 0; -> integer a;
float f; -> float f = 0;
vector v; -> vector v = <0,0,0>;
rotation r -> rotation r = <0,0,0,1>;
This commit is contained in:
Sei Lisa 2014-07-31 03:29:21 +02:00
parent 6ec39aa745
commit 2cbed52bf7

View file

@ -521,13 +521,21 @@ class optimizer(object):
return return
if nt == 'DECL': if nt == 'DECL':
# The expression code is elsewhere.
if child: if child:
self.FoldTree(child, 0) self.FoldTree(child, 0)
# TODO: Remove assignment if integer zero. # Remove assignment if integer zero.
if node['t'] == 'integer' and child[0]['nt'] == 'CONST' \
and not child[0]['value']:
del node['ch']
child = None
else: else:
# TODO: Add assignment if vector, rotation or float. # Add assignment if vector, rotation or float.
pass if node['t'] in ('float', 'vector', 'rotation'):
typ = node['t']
node['ch'] = [{'nt':'CONST', 't':typ, 'value':
0.0 if typ == 'float' else
lslfuncs.ZERO_VECTOR if typ == 'vector' else
lslfuncs.ZERO_ROTATION}]
return return
if nt in self.ignored_stmts: if nt in self.ignored_stmts: