------- Comment #4 from pinskia at gcc dot gnu dot org 2007-08-20 08:38 ------- The difference comes from: /* If OFFSET is constant, see if we can return the whole thing as a constant bit position. Otherwise, split it up. */ if (host_integerp (offset, 0) && 0 != (tem = size_binop (MULT_EXPR, fold_convert (bitsizetype, offset), bitsize_unit_node)) && 0 != (tem = size_binop (PLUS_EXPR, tem, bit_offset)) && host_integerp (tem, 0)) *pbitpos = tree_low_cst (tem, 0), *poffset = 0; else *pbitpos = tree_low_cst (bit_offset, 0), *poffset = offset;
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32563