http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46758
Alexander Monakov <amonakov at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2010.12.03 15:27:13
CC| |amonakov at gcc dot gnu.org
Ever Confirmed|0 |1
--- Comment #1 from Alexander Monakov <amonakov at gcc dot gnu.org> 2010-12-03
15:27:13 UTC ---
In this particular example, the problem is in scan_tree_for_params_int:
int v = int_cst_value (cst);
mpz_init (val);
mpz_set_si (val, 0);
/* Necessary to not get "-1 = 2^n - 1". */
if (v < 0)
mpz_sub_ui (val, val, -v);
else
mpz_add_ui (val, val, v);
(gdb) p cst
$8 = (tree) 0x7ffff5a4e848
(gdb) pt
<integer_cst 0x7ffff5a4e848 type <integer_type 0x7ffff7ed0738 long long int>
constant -8589934593>
(gdb) p v
$9 = -1
(gdb)
There are multiple places where graphite uses int_cst_value. Note that the
problem may be more severe on 32-bit hosts as there the tree may hold a 64-bit
constant but mpz_*_{u,s}i accepts 'long's.