Fix conditions used to apply def chains simplifier

Optimization will transform
a = b // called s0
...
m(a) // called s1
will be transform to:
a = b
...
m(b)

Conditions must take into account that definitions of b done between s0 and s1
can reach s0, if it is the case the transformation must not be apply.
Dectect this case can not be realized without to walk through the tree, thus
we restrict optimization when b as only one definition (it ensure that this
definition dominates s0)

Bug: 26709400
Change-Id: I165c511ee939790e43470424f19ba63d6d639de7
4 files changed