diff mbox

[Fortran] PR64771 - Fix coarray ICE

Message ID ydd386wkxws.fsf@lokon.CeBiTec.Uni-Bielefeld.DE
State New
Headers show

Commit Message

Rainer Orth Jan. 27, 2015, 4:09 p.m. UTC
Jakub Jelinek <jakub@redhat.com> writes:

>> The problem is (as so often) that <algorithm> was included *before*
>> config.h.  Moving it after the other includes allows interface.c to
>> compile without warnings.
>
> Why don't you use MAX macro instead of std::max as everywhere else
> in the gcc sources?

No idea, ask Tobias :-)  Anyway, the original patch would most likely
have worked: system.h already includes <algorithm>.

This one compiles just as well, of course.

	Rainer


2015-01-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* interface.c: Remove <algorithm>.
	(check_dummy_characteristics): Use MAX instead of std::max.

Comments

Tobias Burnus Jan. 27, 2015, 4:41 p.m. UTC | #1
Rainer Orth wrote:
> > Why don't you use MAX macro instead of std::max as everywhere else
> > in the gcc sources?
>
> No idea, ask Tobias :-)

No real reason - presumably, because I had MAX not in mind and thought
of the general move towards standard features.

> Anyway, the original patch would most likely
> have worked: system.h already includes <algorithm>.

It did on my system :-)

> This one compiles just as well, of course.

From my side, that patch (using MAX) is fine. Thanks for
bearing the bootstrap failure and for the patch.

Tobias


> 2015-01-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
> 
> 	* interface.c: Remove <algorithm>.
> 	(check_dummy_characteristics): Use MAX instead of std::max.
> 
> # HG changeset patch
> # Parent a742f8ce2a00e481ddf92dbecaf8d1ee01448911
> Avoid std::max
> 
> diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c
> --- a/gcc/fortran/interface.c
> +++ b/gcc/fortran/interface.c
> @@ -63,8 +63,6 @@ along with GCC; see the file COPYING3.  
>     formal argument list points to symbols within the same namespace as
>     the program unit name.  */
>  
> -#include <algorithm>  /* For std::max.  */
> -
>  #include "config.h"
>  #include "system.h"
>  #include "coretypes.h"
> @@ -1215,7 +1213,7 @@ check_dummy_characteristics (gfc_symbol 
>  	}
>  
>        if (s1->as->type == AS_EXPLICIT)
> -	for (i = 0; i < s1->as->rank + std::max(0, s1->as->corank-1); i++)
> +	for (i = 0; i < s1->as->rank + MAX (0, s1->as->corank-1); i++)
>  	  {
> 	    shape1 = gfc_subtract (gfc_copy_expr (s1->as->upper[i]),
> 				  gfc_copy_expr (s1->as->lower[i]));
Tobias Burnus Jan. 27, 2015, 7:20 p.m. UTC | #2
Tobias Burnus wrote:
>> This one compiles just as well, of course.
>  From my side, that patch (using MAX) is fine. Thanks for
> bearing the bootstrap failure and for the patch.

I have now committed it (i.e. Rainer's patch) as Rev. 220182.
I have also committed the fixed-up/combined patch to the 4.9 branch as 
Rev. 220184.

(BTW: The original patch was approved by Paul on IRC.)

Tobias
diff mbox

Patch

# HG changeset patch
# Parent a742f8ce2a00e481ddf92dbecaf8d1ee01448911
Avoid std::max

diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c
--- a/gcc/fortran/interface.c
+++ b/gcc/fortran/interface.c
@@ -63,8 +63,6 @@  along with GCC; see the file COPYING3.  
    formal argument list points to symbols within the same namespace as
    the program unit name.  */
 
-#include <algorithm>  /* For std::max.  */
-
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
@@ -1215,7 +1213,7 @@  check_dummy_characteristics (gfc_symbol 
 	}
 
       if (s1->as->type == AS_EXPLICIT)
-	for (i = 0; i < s1->as->rank + std::max(0, s1->as->corank-1); i++)
+	for (i = 0; i < s1->as->rank + MAX (0, s1->as->corank-1); i++)
 	  {
 	    shape1 = gfc_subtract (gfc_copy_expr (s1->as->upper[i]),
 				  gfc_copy_expr (s1->as->lower[i]));