value range propagation for _bitwise_ OR

Rainer Deyke rainerd at eldwood.com
Sat Apr 10 23:48:44 PDT 2010


How about this?

uint fill_bits(uint min_v, uint max_v) {
  uint mask = 0;
  for (int i = 0; i < 32; ++i) {
    if ((min_v | (1 << i)) <= max_v) mask |= (1 << i);
  }
  return mask;
}

max_c = min(
  max_a | fill_bits(min_b, max_b),
  max_b | fill_bits(min_a, max_a));


-- 
Rainer Deyke - rainerd at eldwood.com



More information about the Digitalmars-d mailing list