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] GCC LTO-bootstrap -Wodr fix


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
>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


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