PR tree-optimization/78608 - gimple-ssa-sprintf.c:570:17: runtime error: negation of -9223372036854775808 cannot be represented in type 'long int'
gcc/ChangeLog: * gimple-ssa-sprintf.c (tree_digits): Avoid negating TYPE_MIN. From-SVN: r244511
This commit is contained in:
parent
26830c2fac
commit
209042e613
2 changed files with 21 additions and 10 deletions
|
@ -1,3 +1,8 @@
|
|||
2017-01-16 Martin Sebor <msebor@redhat.com>
|
||||
|
||||
PR tree-optimization/78608
|
||||
* gimple-ssa-sprintf.c (tree_digits): Avoid negating TYPE_MIN.
|
||||
|
||||
2017-01-16 Jeff Law <law@redhat.com>
|
||||
|
||||
Revert:
|
||||
|
|
|
@ -577,16 +577,22 @@ tree_digits (tree x, int base, HOST_WIDE_INT prec, bool plus, bool prefix)
|
|||
if (tree_fits_shwi_p (x))
|
||||
{
|
||||
HOST_WIDE_INT i = tree_to_shwi (x);
|
||||
if (i < 0)
|
||||
{
|
||||
absval = -i;
|
||||
res = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
absval = i;
|
||||
res = plus;
|
||||
}
|
||||
if (HOST_WIDE_INT_MIN == i)
|
||||
{
|
||||
/* Avoid undefined behavior due to negating a minimum. */
|
||||
absval = HOST_WIDE_INT_MAX;
|
||||
res = 1;
|
||||
}
|
||||
else if (i < 0)
|
||||
{
|
||||
absval = -i;
|
||||
res = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
absval = i;
|
||||
res = plus;
|
||||
}
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
|
|
Loading…
Add table
Reference in a new issue