Coarse-grained dynamic predicate slicing for message passing programs