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:
Martin Sebor 2017-01-17 00:14:52 +00:00 committed by Martin Sebor
parent 26830c2fac
commit 209042e613
2 changed files with 21 additions and 10 deletions

View file

@ -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:

View file

@ -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;