Skip to content

Commit

Permalink
LoongArch: Fix warnings building libgcc
Browse files Browse the repository at this point in the history
We are excluding loongarch-opts.h from target libraries, but now struct
loongarch_target and gcc_options are not declared in the target
libraries, causing:

In file included from ../.././gcc/options.h:8,
                 from ../.././gcc/tm.h:49,
                 from ../../../gcc/libgcc/fixed-bit.c:48:
../../../gcc/libgcc/../gcc/config/loongarch/loongarch-opts.h:57:41:
warning: 'struct gcc_options' declared inside parameter list will not
be visible outside of this definition or declaration
   57 |                                  struct gcc_options *opts,
      |                                         ^~~~~~~~~~~

So exclude the declarations referring to the C++ structs as well.

gcc/ChangeLog:

	* config/loongarch/loongarch-opts.h (la_target): Move into #if
	for loongarch-def.h.
	(loongarch_init_target): Likewise.
	(loongarch_config_target): Likewise.
	(loongarch_update_gcc_opt_status): Likewise.
  • Loading branch information
xry111 committed Dec 12, 2023
1 parent 8c8b40e commit d3247be
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions gcc/config/loongarch/loongarch-opts.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,15 @@ along with GCC; see the file COPYING3. If not see
#ifndef LOONGARCH_OPTS_H
#define LOONGARCH_OPTS_H

/* This is a C++ header and it shouldn't be used by target libraries. */
/* The loongarch-def.h file is a C++ header and it shouldn't be used by
target libraries. Exclude it and everything using the C++ structs
(struct loongarch_target and gcc_options) from target libraries. */
#if !defined(IN_LIBGCC2) && !defined(IN_TARGET_LIBS) && !defined(IN_RTS)
#include "loongarch-def.h"
#endif

/* Target configuration */
extern struct loongarch_target la_target;

/* Flag status */
struct loongarch_flags {
int flt; const char* flt_str;
#define SX_FLAG_TYPE(x) ((x) < 0 ? -(x) : (x))
int sx[2];
};


/* Initialize loongarch_target from separate option variables. */
void
loongarch_init_target (struct loongarch_target *target,
Expand All @@ -56,7 +49,14 @@ void
loongarch_update_gcc_opt_status (struct loongarch_target *target,
struct gcc_options *opts,
struct gcc_options *opts_set);
#endif

/* Flag status */
struct loongarch_flags {
int flt; const char* flt_str;
#define SX_FLAG_TYPE(x) ((x) < 0 ? -(x) : (x))
int sx[2];
};

/* Macros for common conditional expressions used in loongarch.{c,h,md} */
#define TARGET_CMODEL_NORMAL (la_target.cmodel == CMODEL_NORMAL)
Expand Down

0 comments on commit d3247be

Please sign in to comment.