Data-Flow Analysis for Constraint Logic-Based Languages