> I am not sure to understand how you will differentiate the above > if (a > 0) > b = a; > else > b = 0; > > from > if (a > 0) { > b = a; > launch_all_missiles(); > } else > b = 0;
Because the first paragraph is equivalent to "b = max(0, a);" which has relatively simple semantics, but the second paragraph is not. As I pointed out to the list 2 days ago, if the x86* code is: mov $0, r_b cmp $0, r_a cmovg r_a, r_b # conditional move if > 0; r_a to r_b then it is somewhat easy to convince VEX to set state(b) = state(a) without complaint (when condition code bits indicate > 0.) If the compiled code uses explicit branching, then probably it's hard. Quite a few analysis tools (covering either software or hardware!) have [have had] difficulty with re-convergent fan out. ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today. http://sdm.link/xeonphi _______________________________________________ Valgrind-users mailing list Valgrind-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/valgrind-users