Class CopyPropagator

    • Field Detail

      • forceOmitExceptingUnitEdges

        protected boolean forceOmitExceptingUnitEdges
    • Constructor Detail

      • CopyPropagator

        public CopyPropagator​(ThrowAnalysis ta,
                              boolean forceOmitExceptingUnitEdges)
    • Method Detail

      • internalTransform

        protected void internalTransform​(Body b,
                                         String phaseName,
                                         Map<String,​String> opts)
        Cascaded copy propagator.

        If it encounters situations of the form: A: a = ...; B: ... x = a; C:... use (x); where a has only one definition, and x has only one definition (B), then it can propagate immediately without checking between B and C for redefinitions of a (namely) A because they cannot occur. In this case the propagator is global.

        Otherwise, if a has multiple definitions then it only checks for redefinitions of Propagates constants and copies in extended basic blocks.

        Does not propagate stack locals when the "only-regular-locals" option is true.

        Specified by:
        internalTransform in class BodyTransformer
        Parameters:
        b - the body on which to apply the transformation
        phaseName - the phasename for this transform; not typically used by implementations.
        opts - the actual computed options; a combination of default options and Scene specified options.