commit: c355f9b13f537be7717c3dafe1510976cdb8584e Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org> AuthorDate: Thu May 14 17:57:26 2020 +0000 Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org> CommitDate: Thu May 14 17:57:26 2020 +0000 URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=c355f9b1
10.1.0: backport infinite loop in float print, bug #722774 Reported-by: Adrien Dessemond Bug: https://gcc.gnu.org/PR95118 Bug: https://bugs.gentoo.org/722774 Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org> 10.1.0/gentoo/29_all_fix-float-hang-PR95118.patch | 54 +++++++++++++++++++++++ 10.1.0/gentoo/README.history | 3 ++ 2 files changed, 57 insertions(+) diff --git a/10.1.0/gentoo/29_all_fix-float-hang-PR95118.patch b/10.1.0/gentoo/29_all_fix-float-hang-PR95118.patch new file mode 100644 index 0000000..5be8649 --- /dev/null +++ b/10.1.0/gentoo/29_all_fix-float-hang-PR95118.patch @@ -0,0 +1,54 @@ +https://gcc.gnu.org/PR95118 +https://bugs.gentoo.org/722774 + +From 568c985113b29574c4e25e1a016475668fc17c28 Mon Sep 17 00:00:00 2001 +From: Richard Biener <[email protected]> +Date: Thu, 14 May 2020 08:53:03 +0200 +Subject: [PATCH] middle-end/95118 - fix printing of denormal zero + +This fixes printing a REAL_CST generated from value-numbering +punning some bits to a real which turns out as zero with big +negative exponent. This causes the loop in real_to_decimal_for_mode to +never terminate. + +2020-05-14 Richard Biener <[email protected]> + + PR middle-end/95118 + * real.c (real_to_decimal_for_mode): Make sure we handle + a zero with nonzero exponent. + + * gcc.dg/pr95118.c: New testcase. +--- + gcc/real.c | 4 ++-- + gcc/testsuite/gcc.dg/pr95118.c | 11 +++++++++++ + +--- a/gcc/real.c ++++ b/gcc/real.c +@@ -1714,8 +1714,8 @@ real_to_decimal_for_mode (char *str, const REAL_VALUE_TYPE *r_orig, + + do_multiply (&u, &v, ten); + +- /* Stop if we're now >= 1. */ +- if (REAL_EXP (&u) > 0) ++ /* Stop if we're now >= 1 or zero. */ ++ if (REAL_EXP (&u) > 0 || u.cl == rvc_zero) + break; + + v = u; +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/pr95118.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-fre" } */ ++ ++void a(); ++void b() { ++ union { ++ int c[4]; ++ long double d; ++ } e = {{0, 0, 4}}; ++ a(e.d); ++} +-- +2.26.2 + diff --git a/10.1.0/gentoo/README.history b/10.1.0/gentoo/README.history index 96d5640..0ed3a9d 100644 --- a/10.1.0/gentoo/README.history +++ b/10.1.0/gentoo/README.history @@ -1,3 +1,6 @@ +2 TODO + + 29_all_fix-float-hang-PR95118.patch + 1 05 May 2020 + 01_all_default-fortify-source.patch + 02_all_default-warn-format-security.patch
