http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49123
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-05-23 13:22:12 UTC --- The 1 is non-canonical: (gdb) call debug_tree ($1) <integer_cst 0x7ffff5b25eb0 type <integer_type 0x7ffff5b29540> constant 1> (gdb) call debug_tree (0x7ffff5b29540) <integer_type 0x7ffff5b29540 public QI size <integer_cst 0x7ffff7e734d8 type <integer_type 0x7ffff7e860a8 bit_size_type> constant 8> unit size <integer_cst 0x7ffff7e73500 type <integer_type 0x7ffff7e86000 long unsigned int> constant 1> align 8 symtab 0 alias set -1 canonical type 0x7ffff5b29540 precision 1 min <integer_cst 0x7ffff5b25690 -1> max <integer_cst 0x7ffff5b256b8 0>> (gdb) p $1->int_cst. common int_cst (gdb) p $1->int_cst.int_cst $2 = {low = 1, high = 0} built via build_int_cst, fixed on trunk by properly making that produce canonical constants.