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.

Reply via email to