Commit e7f78021 by Jakub Jelinek Committed by Jakub Jelinek

re PR debug/48928 (ICE: in decimal_to_decnumber, at dfp.c:113 with -O -g and decimal float)

	PR debug/48928
	* dfp.c (decimal_to_decnumber): Handle conversion from
	dconst{1,2,m1,half}.

	* gcc.dg/dfp/pr48928.c: New test.

From-SVN: r173606
parent 321f4ead
2011-05-10 Jakub Jelinek <jakub@redhat.com>
PR debug/48928
* dfp.c (decimal_to_decnumber): Handle conversion from
dconst{1,2,m1,half}.
2011-05-09 Uros Bizjak <ubizjak@gmail.com> 2011-05-09 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.c (ix86_autovectorize_vector_sizes): Return 0 * config/i386/i386.c (ix86_autovectorize_vector_sizes): Return 0
......
/* Decimal floating point support. /* Decimal floating point support.
Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -110,7 +110,33 @@ decimal_to_decnumber (const REAL_VALUE_TYPE *r, decNumber *dn) ...@@ -110,7 +110,33 @@ decimal_to_decnumber (const REAL_VALUE_TYPE *r, decNumber *dn)
decNumberFromString (dn, "nan", &set); decNumberFromString (dn, "nan", &set);
break; break;
case rvc_normal: case rvc_normal:
gcc_assert (r->decimal); if (!r->decimal)
{
/* dconst{1,2,m1,half} are used in various places in
the middle-end and optimizers, allow them here
as an exception by converting them to decimal. */
if (memcmp (r, &dconst1, sizeof (*r)) == 0)
{
decNumberFromString (dn, "1", &set);
break;
}
if (memcmp (r, &dconst2, sizeof (*r)) == 0)
{
decNumberFromString (dn, "2", &set);
break;
}
if (memcmp (r, &dconstm1, sizeof (*r)) == 0)
{
decNumberFromString (dn, "-1", &set);
break;
}
if (memcmp (r, &dconsthalf, sizeof (*r)) == 0)
{
decNumberFromString (dn, "0.5", &set);
break;
}
gcc_unreachable ();
}
decimal128ToNumber ((const decimal128 *) r->sig, dn); decimal128ToNumber ((const decimal128 *) r->sig, dn);
break; break;
default: default:
......
2011-05-10 Jakub Jelinek <jakub@redhat.com>
PR debug/48928
* gcc.dg/dfp/pr48928.c: New test.
2011-05-09 Paolo Carlini <paolo.carlini@oracle.com> 2011-05-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/48522 PR c++/48522
......
/* PR debug/48928 */
/* { dg-do compile } */
/* { dg-options "-g -O2" } */
_Decimal32
foo (_Decimal32 x)
{
_Decimal32 y = (x + x) / (9.DF * x);
return y;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment