This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] GCC LTO-bootstrap -Wodr fix
- From: Martin LiÅka <mliska at suse dot cz>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 26 Feb 2015 15:20:00 +0100
- Subject: [PATCH] GCC LTO-bootstrap -Wodr fix
- Authentication-results: sourceware.org; auth=none
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