diff mbox

GCC LTO-bootstrap -Wodr fix

Message ID 54EF2B90.5070902@suse.cz
State New
Headers show

Commit Message

Martin Liška Feb. 26, 2015, 2:20 p.m. UTC
Hello.

Following error message can be seen for LTO boostrap:

../../gcc/fortran/resolve.c:3812:1: error: type ‘comparison’ violates one definition rule [-Werror=odr]
  comparison;
  ^
../../gcc/compare-elim.c:95:0: note: a different type is defined in another translation unit
    rtx_insn *insn;
  ^
lto1: all warnings being treated as errors
lto-wrapper: fatal error: /home/marxin/Programming/gcc3/objdir/./prev-gcc/xg++ returned 1 exit status

I've removed enum type in resolve.c, which is quite small change (I hope so).
With patch applied, GCC can bootstrap.
Ready for trunk?

Thanks,
Martin

Comments

Tobias Burnus Feb. 26, 2015, 3:05 p.m. UTC | #1
Martin Liska wrote:
> Following error message can be seen for LTO boostrap:
> ../../gcc/fortran/resolve.c:3812:1: error: type âcomparisonâ violates one definition rule [-Werror=odr]
> comparison;
> ^
>../../gcc/compare-elim.c:95:0: note: a different type is defined in another translation unit
>   rtx_insn *insn;

> I've removed enum type in resolve.c, which is quite small change (I hope so).
> With patch applied, GCC can bootstrap.
> Ready for trunk?

> gcc/fortran/ChangeLog:
>
> 2015-02-26  Martin Liska  <mliska@suse.cz>
> 
>	* resolve.c: Rename enum 'comparison' to 'compare_result' as
>	solution for -Wodr issue.


OK. Thanks for the patch!

Tobias

PS: For Fortran patches, it helps to have fortran@ CCed as not all developers
also read gcc-patches@.
diff mbox

Patch

From 248d92eb9d9131d0643eb32bce273444bf1ac968 Mon Sep 17 00:00:00 2001
From: mliska <mliska@suse.cz>
Date: Thu, 26 Feb 2015 13:23:38 +0100
Subject: [PATCH] Fix LTO bootstrap.

gcc/fortran/ChangeLog:

2015-02-26  Martin Liska  <mliska@suse.cz>

	* resolve.c: Rename enum 'comparison' to 'compare_result' as
	solution for -Wodr issue.
---
 gcc/fortran/resolve.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index b1111cc..675cb15 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -3809,11 +3809,11 @@  bad_op:
 
 typedef enum
 { CMP_LT, CMP_EQ, CMP_GT, CMP_UNKNOWN }
-comparison;
+compare_result;
 
 /* Compare two integer expressions.  */
 
-static comparison
+static compare_result
 compare_bound (gfc_expr *a, gfc_expr *b)
 {
   int i;
@@ -3840,7 +3840,7 @@  compare_bound (gfc_expr *a, gfc_expr *b)
 
 /* Compare an integer expression with an integer.  */
 
-static comparison
+static compare_result
 compare_bound_int (gfc_expr *a, int b)
 {
   int i;
@@ -3863,7 +3863,7 @@  compare_bound_int (gfc_expr *a, int b)
 
 /* Compare an integer expression with a mpz_t.  */
 
-static comparison
+static compare_result
 compare_bound_mpz_t (gfc_expr *a, mpz_t b)
 {
   int i;
@@ -4002,7 +4002,7 @@  check_dimension (int i, gfc_array_ref *ar, gfc_array_spec *as)
 #define AR_START (ar->start[i] ? ar->start[i] : as->lower[i])
 #define AR_END (ar->end[i] ? ar->end[i] : as->upper[i])
 
-	comparison comp_start_end = compare_bound (AR_START, AR_END);
+	compare_result comp_start_end = compare_bound (AR_START, AR_END);
 
 	/* Check for zero stride, which is not allowed.  */
 	if (compare_bound_int (ar->stride[i], 0) == CMP_EQ)
-- 
2.1.2