Some software defects trigger failures only when certain complex information flows occur within the software. Profiling and analyzing such flows therefore provides a potentially important basis for filtering test cases. We report the results of an empirical evaluation of several test case filtering techniques that are based on exercising complex information flows. Both coverage-based and profile-distribution-based filtering techniques are considered. They are compared to filtering techniques based on exercising basic blocks, branches, function calls, and def-use pairs, with respect to their effectiveness for revealing defects. Categories and Subject Descriptors D.2.5 [Software Engineering]: Testing and Debugging ? Debugging aids, Monitors, Testing tools; D.4.6 [Operating Systems]: Security and Protection ? Information flow controls. General Terms Reliability, Experimentation. Keywords Test case filtering, dynamic information flow analysis, dynamic slicing, program dependences, softwar...