Before revision:  By combining fine-grained data dependencies with high-level control flow , SDFGs are both expressive and amenable to high-level program transformations, such as tiling , vectorization, and double buffering .
After revision:  By combining fine-grained data dependencies with high-level control-flow , SDFGs are both expressive and amenable to high-level program transformations, such as tiling , vectorization, and double buffering .