This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

[Patch, Fortran] Use -huge()-1 as most negative integer for maxval/maxloc (PR30512)


:ADDPATCH fortran:

As Brooks notice, we are using -HUGE() as smallest integer value in
maxval/maxloc, which has two effects:

(a) For zero-sized arrays, the result is -HUGE() rather than -HUGE()-1
(b) maxval( (/ -HUGE(i) /))  returns -HUGE().

There are actually two things competing:

As FX pointed out: "If I understand the standard correctly, -huge()-1,
although being representible by the hardware you have, is not "within
the representation" of this integer kind, because the range of the
representation of an integer kind is supposed to be symmetric."

and

  integer(1) :: a(2)
  a = -128
  print *, maxval(a)

which should print -128 and not -127. (I think the latter is convincing,
unless we want to have a special case for zero-size arrays which returns
-huge().)

Other compilers:  g95 and pathscale 2.4 use -huge() (and thus "-127"),
ifort, sunf95 and nagf95 use -huge()-1 ("-128").

Tobias
fortran/
2007-02-01  Tobias Burnus  <burnus@net-b.de>

        PR fortran/30512
        * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc,
	  gfc_conv_intrinsic_minmaxval): Use HUGE-1 for most negative integer.

testsuite/
2007-02-01  Tobias Burnus  <burnus@net-b.de>

        PR fortran/30512
        * gfortran.dg/maxlocval.f90: New test.

libgfortran/
2007-02-01  Thomas Koenig  <Thomas.Koenig@online.de>

        PR fortran/30512
        * m4/iparm.m4: Use HUGE-1 for most negative integer.
	* generated/maxloc1_4_r8.c: Regenerate.
	* generated/maxloc1_8_i4.c: Regenerate.
	* generated/maxloc0_4_r4.c: Regenerate.
	* generated/maxloc0_4_r16.c: Regenerate.
	* generated/maxloc1_8_r16.c: Regenerate.
	* generated/maxloc0_8_i8.c: Regenerate.
	* generated/maxloc1_16_r16.c: Regenerate.
	* generated/maxloc1_16_i4.c: Regenerate.
	* generated/maxloc0_16_i8.c: Regenerate.
	* generated/maxloc1_8_r8.c: Regenerate.
	* generated/maxval_i4.c: Regenerate.
	* generated/maxloc1_4_i8.c: Regenerate.
	* generated/maxloc0_16_i16.c: Regenerate.
	* generated/maxloc0_8_r4.c: Regenerate.
	* generated/maxloc1_4_i16.c: Regenerate.
	* generated/maxloc0_4_r10.c: Regenerate.
	* generated/maxloc0_8_i16.c: Regenerate.
	* generated/maxloc1_8_r10.c: Regenerate.
	* generated/maxloc0_16_r4.c: Regenerate.
	* generated/maxloc0_4_i4.c: Regenerate.
	* generated/maxloc1_16_r8.c: Regenerate.
	* generated/maxloc1_16_r10.c: Regenerate.
	* generated/maxloc1_4_r4.c: Regenerate.
	* generated/maxloc1_8_i8.c: Regenerate.
	* generated/maxloc0_4_r8.c: Regenerate.
	* generated/maxloc0_16_r16.c: Regenerate.
	* generated/maxloc1_4_r16.c: Regenerate.
	* generated/maxloc0_8_r16.c: Regenerate.
	* generated/maxloc0_8_i4.c: Regenerate.
	* generated/maxloc0_16_i4.c: Regenerate.
	* generated/maxloc1_16_i8.c: Regenerate.
	* generated/maxloc1_8_r4.c: Regenerate.
	* generated/maxloc1_4_i4.c: Regenerate.
	* generated/maxval_i8.c: Regenerate.
	* generated/maxloc0_16_r10.c: Regenerate.
	* generated/maxloc0_8_r8.c: Regenerate.
	* generated/maxloc0_4_i16.c: Regenerate.
	* generated/maxloc1_4_r10.c: Regenerate.
	* generated/maxloc1_8_i16.c: Regenerate.
	* generated/maxloc0_8_r10.c: Regenerate.
	* generated/maxloc1_16_r4.c: Regenerate.
	* generated/maxloc0_16_r8.c: Regenerate.
	* generated/maxloc0_4_i8.c: Regenerate.
	* generated/maxloc1_16_i16.c: Regenerate.
	* generated/maxval_i16.c: Regenerate.

Index: gcc/fortran/trans-intrinsic.c
===================================================================
--- gcc/fortran/trans-intrinsic.c	(Revision 121416)
+++ gcc/fortran/trans-intrinsic.c	(Arbeitskopie)
@@ -1984,11 +1984,16 @@
       gcc_unreachable ();
     }
 
-  /* Most negative(+HUGE) for maxval, most negative (-HUGE) for minval.  */
+  /* Most negative(-HUGE) for maxloc, most positiv (+HUGE) for minloc.  */
   if (op == GT_EXPR)
     tmp = fold_build1 (NEGATE_EXPR, TREE_TYPE (tmp), tmp);
   gfc_add_modify_expr (&se->pre, limit, tmp);
 
+  /* Most negative for BT_INTEGER is -HUGE-1.  */
+  if (op == GT_EXPR && expr->ts.type == BT_INTEGER)
+    tmp = build2 (MINUS_EXPR, TREE_TYPE (tmp), tmp,
+		  build_int_cst (type, 1));
+
   /* Initialize the scalarizer.  */
   gfc_init_loopinfo (&loop);
   gfc_add_ss_to_loop (&loop, arrayss);
@@ -2143,9 +2148,15 @@
       gcc_unreachable ();
     }
 
-  /* Most negative(-HUGE) for maxval, most positive (-HUGE) for minval.  */
+  /* Most negative(-HUGE) for maxval, most positive (+HUGE) for minval.  */
   if (op == GT_EXPR)
     tmp = fold_build1 (NEGATE_EXPR, TREE_TYPE (tmp), tmp);
+
+  /* Most negative for BT_INTEGER is -HUGE-1.  */
+  if (op == GT_EXPR && expr->ts.type == BT_INTEGER)
+    tmp = build2 (MINUS_EXPR, TREE_TYPE (tmp), tmp,
+		  build_int_cst (type, 1));
+
   gfc_add_modify_expr (&se->pre, limit, tmp);
 
   /* Walk the arguments.  */
Index: libgfortran/m4/iparm.m4
===================================================================
--- libgfortran/m4/iparm.m4	(Revision 121416)
+++ libgfortran/m4/iparm.m4	(Arbeitskopie)
@@ -28,6 +28,6 @@
 define(rtype_qual,`_'rtype_kind)dnl
 ')dnl
 define(atype_max, atype_name`_HUGE')dnl
-define(atype_min, `-'atype_max)dnl
+define(atype_min,ifelse(rtype_letter,`i',`(-'atype_max`-1)',`-'atype_max))dnl
 define(name, regexp(regexp(file, `[^/]*$', `\&'), `^\([^_]*\)_', `\1'))dnl
 define(rtype_ccode,ifelse(rtype_letter,`i',rtype_kind,rtype_code))dnl

Index: gcc/testsuite/gfortran.dg/maxlocval.f90
===================================================================
--- gcc/testsuite/gfortran.dg/maxlocval.f90	(revision 0)
+++ gcc/testsuite/gfortran.dg/maxlocval.f90	(revision 0)
@@ -0,0 +1,44 @@
+! { dg-do run }
+! Check that maxval uses for integers HUGE()-1.
+! PR fortran/30512
+
+program main
+implicit none
+integer(1) :: i1(3), a1(3:2)
+integer(2) :: i2(3), a2(3:2)
+integer(4) :: i4(3), a4(3:2)
+integer(8) :: i8(3), a8(3:2)
+
+integer(kind=4), allocatable :: a(:,:)
+integer(kind=8), allocatable :: b(:,:)
+
+logical :: msk(3)
+msk = .false.
+
+i1 = 1
+i2 = 1
+i4 = 1
+i8 = 1
+
+if(-huge(i1)-1 /= maxval(i1, msk)) call abort()
+if(-huge(a1)-1 /= maxval(a1))      call abort()
+
+if(-huge(i2)-1 /= maxval(i2, msk)) call abort()
+if(-huge(a2)-1 /= maxval(a2))      call abort()
+
+if(-huge(i4)-1 /= maxval(i4, msk)) call abort() ! { dg-warning "outside symmetric range implied by Standard Fortran" }
+if(-huge(a4)-1 /= maxval(a4))      call abort() ! { dg-warning "outside symmetric range implied by Standard Fortran" }
+
+if(-huge(i8)-1 /= maxval(i8, msk)) call abort() ! { dg-warning "outside symmetric range implied by Standard Fortran" }
+if(-huge(a8)-1 /= maxval(a8))      call abort() ! { dg-warning "outside symmetric range implied by Standard Fortran" }
+
+allocate (a(0:-1,1:1))
+allocate (b(0:-1,1:1))
+
+if(any(maxval(a,dim=1) /= -huge(a)-1)) call abort() ! { dg-warning "outside symmetric range implied by Standard Fortran" }
+if(any(minval(a,dim=1) /=  huge(a)  )) call abort()
+
+if(any(maxval(b,dim=1) /= -huge(b)-1)) call abort() ! { dg-warning "outside symmetric range implied by Standard Fortran" }
+if(any(minval(b,dim=1) /=  huge(b)  )) call abort()
+
+end program main
Index: libgfortran/generated/maxloc1_4_r8.c
===================================================================
--- libgfortran/generated/maxloc1_4_r8.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_4_r8.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_8 maxval;
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_8 maxval;
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc1_8_i4.c
===================================================================
--- libgfortran/generated/maxloc1_8_i4.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_8_i4.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_INTEGER_4 maxval;
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_INTEGER_4 maxval;
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc0_4_r4.c
===================================================================
--- libgfortran/generated/maxloc0_4_r4.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_4_r4.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_4 maxval;
 
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_4 maxval;
 
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc0_4_r16.c
===================================================================
--- libgfortran/generated/maxloc0_4_r16.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_4_r16.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_16 maxval;
 
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_16 maxval;
 
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc1_8_r16.c
===================================================================
--- libgfortran/generated/maxloc1_8_r16.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_8_r16.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_16 maxval;
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_16 maxval;
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc0_8_i8.c
===================================================================
--- libgfortran/generated/maxloc0_8_i8.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_8_i8.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_INTEGER_8 maxval;
 
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_INTEGER_8 maxval;
 
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc1_16_r16.c
===================================================================
--- libgfortran/generated/maxloc1_16_r16.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_16_r16.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_16 maxval;
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_16 maxval;
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc1_16_i4.c
===================================================================
--- libgfortran/generated/maxloc1_16_i4.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_16_i4.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_INTEGER_4 maxval;
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_INTEGER_4 maxval;
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc0_16_i8.c
===================================================================
--- libgfortran/generated/maxloc0_16_i8.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_16_i8.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_INTEGER_8 maxval;
 
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_INTEGER_8 maxval;
 
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc1_8_r8.c
===================================================================
--- libgfortran/generated/maxloc1_8_r8.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_8_r8.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_8 maxval;
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_8 maxval;
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxval_i4.c
===================================================================
--- libgfortran/generated/maxval_i4.c	(Revision 121416)
+++ libgfortran/generated/maxval_i4.c	(Arbeitskopie)
@@ -138,9 +138,9 @@
       src = base;
       {
 
-  result = -GFC_INTEGER_4_HUGE;
+  result = (-GFC_INTEGER_4_HUGE-1);
         if (len <= 0)
-	  *dest = -GFC_INTEGER_4_HUGE;
+	  *dest = (-GFC_INTEGER_4_HUGE-1);
 	else
 	  {
 	    for (n = 0; n < len; n++, src += delta)
@@ -308,9 +308,9 @@
       msrc = mbase;
       {
 
-  result = -GFC_INTEGER_4_HUGE;
+  result = (-GFC_INTEGER_4_HUGE-1);
         if (len <= 0)
-	  *dest = -GFC_INTEGER_4_HUGE;
+	  *dest = (-GFC_INTEGER_4_HUGE-1);
 	else
 	  {
 	    for (n = 0; n < len; n++, src += delta, msrc += mdelta)
@@ -404,7 +404,7 @@
     dest = retarray->data;
 
     for (n = 0; n < rank; n++)
-      dest[n * dstride] = -GFC_INTEGER_4_HUGE ;
+      dest[n * dstride] = (-GFC_INTEGER_4_HUGE-1) ;
 }
 
 #endif
Index: libgfortran/generated/maxloc1_4_i8.c
===================================================================
--- libgfortran/generated/maxloc1_4_i8.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_4_i8.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_INTEGER_8 maxval;
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_INTEGER_8 maxval;
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc0_16_i16.c
===================================================================
--- libgfortran/generated/maxloc0_16_i16.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_16_i16.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_INTEGER_16 maxval;
 
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_INTEGER_16 maxval;
 
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc0_8_r4.c
===================================================================
--- libgfortran/generated/maxloc0_8_r4.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_8_r4.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_4 maxval;
 
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_4 maxval;
 
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc1_4_i16.c
===================================================================
--- libgfortran/generated/maxloc1_4_i16.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_4_i16.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_INTEGER_16 maxval;
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_INTEGER_16 maxval;
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc0_4_r10.c
===================================================================
--- libgfortran/generated/maxloc0_4_r10.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_4_r10.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_10 maxval;
 
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_10 maxval;
 
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc0_8_i16.c
===================================================================
--- libgfortran/generated/maxloc0_8_i16.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_8_i16.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_INTEGER_16 maxval;
 
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_INTEGER_16 maxval;
 
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc1_8_r10.c
===================================================================
--- libgfortran/generated/maxloc1_8_r10.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_8_r10.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_10 maxval;
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_10 maxval;
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc0_16_r4.c
===================================================================
--- libgfortran/generated/maxloc0_16_r4.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_16_r4.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_4 maxval;
 
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_4 maxval;
 
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc0_4_i4.c
===================================================================
--- libgfortran/generated/maxloc0_4_i4.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_4_i4.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_INTEGER_4 maxval;
 
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_INTEGER_4 maxval;
 
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc1_16_r8.c
===================================================================
--- libgfortran/generated/maxloc1_16_r8.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_16_r8.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_8 maxval;
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_8 maxval;
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc1_16_r10.c
===================================================================
--- libgfortran/generated/maxloc1_16_r10.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_16_r10.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_10 maxval;
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_10 maxval;
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc1_4_r4.c
===================================================================
--- libgfortran/generated/maxloc1_4_r4.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_4_r4.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_4 maxval;
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_4 maxval;
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc1_8_i8.c
===================================================================
--- libgfortran/generated/maxloc1_8_i8.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_8_i8.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_INTEGER_8 maxval;
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_INTEGER_8 maxval;
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc0_4_r8.c
===================================================================
--- libgfortran/generated/maxloc0_4_r8.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_4_r8.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_8 maxval;
 
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_8 maxval;
 
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc0_16_r16.c
===================================================================
--- libgfortran/generated/maxloc0_16_r16.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_16_r16.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_16 maxval;
 
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_16 maxval;
 
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc1_4_r16.c
===================================================================
--- libgfortran/generated/maxloc1_4_r16.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_4_r16.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_16 maxval;
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_16 maxval;
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc0_8_r16.c
===================================================================
--- libgfortran/generated/maxloc0_8_r16.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_8_r16.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_16 maxval;
 
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_16 maxval;
 
-  maxval = -GFC_REAL_16_HUGE;
+  maxval = (-GFC_REAL_16_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc0_8_i4.c
===================================================================
--- libgfortran/generated/maxloc0_8_i4.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_8_i4.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_INTEGER_4 maxval;
 
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_INTEGER_4 maxval;
 
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc0_16_i4.c
===================================================================
--- libgfortran/generated/maxloc0_16_i4.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_16_i4.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_INTEGER_4 maxval;
 
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_INTEGER_4 maxval;
 
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc1_16_i8.c
===================================================================
--- libgfortran/generated/maxloc1_16_i8.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_16_i8.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_INTEGER_8 maxval;
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_INTEGER_8 maxval;
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc1_8_r4.c
===================================================================
--- libgfortran/generated/maxloc1_8_r4.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_8_r4.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_4 maxval;
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_4 maxval;
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc1_4_i4.c
===================================================================
--- libgfortran/generated/maxloc1_4_i4.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_4_i4.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_INTEGER_4 maxval;
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_INTEGER_4 maxval;
-  maxval = -GFC_INTEGER_4_HUGE;
+  maxval = (-GFC_INTEGER_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxval_i8.c
===================================================================
--- libgfortran/generated/maxval_i8.c	(Revision 121416)
+++ libgfortran/generated/maxval_i8.c	(Arbeitskopie)
@@ -138,9 +138,9 @@
       src = base;
       {
 
-  result = -GFC_INTEGER_8_HUGE;
+  result = (-GFC_INTEGER_8_HUGE-1);
         if (len <= 0)
-	  *dest = -GFC_INTEGER_8_HUGE;
+	  *dest = (-GFC_INTEGER_8_HUGE-1);
 	else
 	  {
 	    for (n = 0; n < len; n++, src += delta)
@@ -308,9 +308,9 @@
       msrc = mbase;
       {
 
-  result = -GFC_INTEGER_8_HUGE;
+  result = (-GFC_INTEGER_8_HUGE-1);
         if (len <= 0)
-	  *dest = -GFC_INTEGER_8_HUGE;
+	  *dest = (-GFC_INTEGER_8_HUGE-1);
 	else
 	  {
 	    for (n = 0; n < len; n++, src += delta, msrc += mdelta)
@@ -404,7 +404,7 @@
     dest = retarray->data;
 
     for (n = 0; n < rank; n++)
-      dest[n * dstride] = -GFC_INTEGER_8_HUGE ;
+      dest[n * dstride] = (-GFC_INTEGER_8_HUGE-1) ;
 }
 
 #endif
Index: libgfortran/generated/maxloc0_16_r10.c
===================================================================
--- libgfortran/generated/maxloc0_16_r10.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_16_r10.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_10 maxval;
 
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_10 maxval;
 
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc0_8_r8.c
===================================================================
--- libgfortran/generated/maxloc0_8_r8.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_8_r8.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_8 maxval;
 
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_8 maxval;
 
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc0_4_i16.c
===================================================================
--- libgfortran/generated/maxloc0_4_i16.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_4_i16.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_INTEGER_16 maxval;
 
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_INTEGER_16 maxval;
 
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc1_4_r10.c
===================================================================
--- libgfortran/generated/maxloc1_4_r10.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_4_r10.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_10 maxval;
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_10 maxval;
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc1_8_i16.c
===================================================================
--- libgfortran/generated/maxloc1_8_i16.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_8_i16.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_INTEGER_16 maxval;
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_INTEGER_16 maxval;
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc0_8_r10.c
===================================================================
--- libgfortran/generated/maxloc0_8_r10.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_8_r10.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_10 maxval;
 
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_10 maxval;
 
-  maxval = -GFC_REAL_10_HUGE;
+  maxval = (-GFC_REAL_10_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc1_16_r4.c
===================================================================
--- libgfortran/generated/maxloc1_16_r4.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_16_r4.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_REAL_4 maxval;
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_REAL_4 maxval;
-  maxval = -GFC_REAL_4_HUGE;
+  maxval = (-GFC_REAL_4_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxloc0_16_r8.c
===================================================================
--- libgfortran/generated/maxloc0_16_r8.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_16_r8.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_REAL_8 maxval;
 
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_REAL_8 maxval;
 
-  maxval = -GFC_REAL_8_HUGE;
+  maxval = (-GFC_REAL_8_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc0_4_i8.c
===================================================================
--- libgfortran/generated/maxloc0_4_i8.c	(Revision 121416)
+++ libgfortran/generated/maxloc0_4_i8.c	(Arbeitskopie)
@@ -103,7 +103,7 @@
 
   GFC_INTEGER_8 maxval;
 
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
 
   while (base)
     {
@@ -227,7 +227,7 @@
 
   GFC_INTEGER_8 maxval;
 
-  maxval = -GFC_INTEGER_8_HUGE;
+  maxval = (-GFC_INTEGER_8_HUGE-1);
 
   while (base)
     {
Index: libgfortran/generated/maxloc1_16_i16.c
===================================================================
--- libgfortran/generated/maxloc1_16_i16.c	(Revision 121416)
+++ libgfortran/generated/maxloc1_16_i16.c	(Arbeitskopie)
@@ -140,7 +140,7 @@
       {
 
   GFC_INTEGER_16 maxval;
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
@@ -315,7 +315,7 @@
       {
 
   GFC_INTEGER_16 maxval;
-  maxval = -GFC_INTEGER_16_HUGE;
+  maxval = (-GFC_INTEGER_16_HUGE-1);
   result = 0;
         if (len <= 0)
 	  *dest = 0;
Index: libgfortran/generated/maxval_i16.c
===================================================================
--- libgfortran/generated/maxval_i16.c	(Revision 121416)
+++ libgfortran/generated/maxval_i16.c	(Arbeitskopie)
@@ -138,9 +138,9 @@
       src = base;
       {
 
-  result = -GFC_INTEGER_16_HUGE;
+  result = (-GFC_INTEGER_16_HUGE-1);
         if (len <= 0)
-	  *dest = -GFC_INTEGER_16_HUGE;
+	  *dest = (-GFC_INTEGER_16_HUGE-1);
 	else
 	  {
 	    for (n = 0; n < len; n++, src += delta)
@@ -308,9 +308,9 @@
       msrc = mbase;
       {
 
-  result = -GFC_INTEGER_16_HUGE;
+  result = (-GFC_INTEGER_16_HUGE-1);
         if (len <= 0)
-	  *dest = -GFC_INTEGER_16_HUGE;
+	  *dest = (-GFC_INTEGER_16_HUGE-1);
 	else
 	  {
 	    for (n = 0; n < len; n++, src += delta, msrc += mdelta)
@@ -404,7 +404,7 @@
     dest = retarray->data;
 
     for (n = 0; n < rank; n++)
-      dest[n * dstride] = -GFC_INTEGER_16_HUGE ;
+      dest[n * dstride] = (-GFC_INTEGER_16_HUGE-1) ;
 }
 
 #endif

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]