Compilation techniques and language support to facilitate dependence-driven computation