This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hello Mark, this backport fixes a rather nasty bug in libgfortran, where innocent-looking code used to cause an endless loop on execution. It is self-contained, and should therefore be reasonably safe for backporting. >From the Fortran maintainer's point of view, this is OK to backport. Is this OK for 4.2 for you at this stage? Thomas 2007-03-06 Thomas Koenig <Thomas.Koenig@online.de> PR libfortran/30981 Backport from trunk. * m4/pow_m4: Use appropriate unsigned int type for u. * generated/pow_c10_i16.c: Regenerated. * generated/pow_c10_i4.c: Regenerated. * generated/pow_c10_i8.c: Regenerated. * generated/pow_c16_i16.c: Regenerated. * generated/pow_c16_i4.c: Regenerated. * generated/pow_c16_i8.c: Regenerated. * generated/pow_c4_i16.c: Regenerated. * generated/pow_c4_i4.c: Regenerated. * generated/pow_c4_i8.c: Regenerated. * generated/pow_c8_i16.c: Regenerated. * generated/pow_c8_i4.c: Regenerated. * generated/pow_c8_i8.c: Regenerated. * generated/pow_i16_i16.c: Regenerated. * generated/pow_i16_i4.c: Regenerated. * generated/pow_i16_i8.c: Regenerated. * generated/pow_i4_i16.c: Regenerated. * generated/pow_i4_i4.c: Regenerated. * generated/pow_i4_i8.c: Regenerated. * generated/pow_i8_i16.c: Regenerated. * generated/pow_i8_i4.c: Regenerated. * generated/pow_i8_i8.c: Regenerated. * generated/pow_r10_i16.c: Regenerated. * generated/pow_r10_i4.c: Regenerated. * generated/pow_r10_i8.c: Regenerated. * generated/pow_r16_i16.c: Regenerated. * generated/pow_r16_i4.c: Regenerated. * generated/pow_r16_i8.c: Regenerated. * generated/pow_r4_i16.c: Regenerated. * generated/pow_r4_i4.c: Regenerated. * generated/pow_r4_i8.c: Regenerated. * generated/pow_r8_i16.c: Regenerated. * generated/pow_r8_i4.c: Regenerated. * generated/pow_r8_i8.c: Regenerated. 2007-03-06 Thomas Koenig <Thomas.Koenig@online.de> PR libfortran/30981 Backport from trunk. * gfortran.dg/integer_exponentiation_1.f90: New test.
Index: pow.m4
===================================================================
--- pow.m4 (revision 122410)
+++ pow.m4 (working copy)
@@ -46,7 +46,8 @@ rtype_name
`pow_'rtype_code`_'atype_code (rtype_name a, atype_name b)
{
rtype_name pow, x;
- atype_name n, u;
+ atype_name n;
+ `GFC_UINTEGER_'atype_kind` u;'
n = b;
x = a;
@@ -62,11 +63,14 @@ ifelse(rtype_letter,i,`dnl
return (n & 1) ? -1 : 1;
return (x == 0) ? 1 / x : 0;
',`
- n = -n;
+ u = -n;
x = pow / x;
')dnl
}
- u = n;
+ else
+ {
+ u = n;
+ }
for (;;)
{
if (u & 1)
Attachment:
integer_exponentiation_1.f90
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |