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]

Re: Workaround for building trunk with GCC 4.4.7


On Wed, Aug 29, 2018 at 6:45 PM Jose E. Marchesi
<jose.marchesi@oracle.com> wrote:
>
>
> Hi people!
>
> I found this compilation problem while building today's trunk with GCC
> 4.4.7 [1] in a RHEL 6.9 derivative in sparc64:
>
> g++ -fno-PIE -c   -g  -DIN_GCC     -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual -Wno-format -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common -Wno-unused -DHAVE_CONFIG_H -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include -I/home/jemarch/couts3/gcc/build/./gmp -I/home/jemarch/couts3/gcc/gmp -I/home/jemarch/couts3/gcc/build/./mpfr/src -I/home/jemarch/couts3/gcc/mpfr/src -I/home/jemarch/couts3/gcc/mpc/src  -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/dpd -I../libdecnumber -I../../gcc/../libbacktrace -I/home/jemarch/couts3/gcc/build/./isl/include -I/home/jemarch/couts3/gcc/isl/include  -o gimple-match.o -MT gimple-match.o -MMD -MP -MF ./.deps/gimple-match.TPo gimple-match.c
> In file included from ../../gcc/backend.h:33,
>                  from ../../gcc/gimple-match-head.c:23,
>                  from gimple-match.c:4:
> ../../gcc/cfg.h: In constructor ‘auto_edge_flag::auto_edge_flag(function*)’:
> ../../gcc/cfg.h:172: error: class ‘auto_edge_flag’ does not have any field named ‘auto_flag’
> ../../gcc/cfg.h:172: error: no matching function for call to ‘auto_flag<int>::auto_flag()’
> ../../gcc/cfg.h:137: note: candidates are: auto_flag<T>::auto_flag(T*) [with T = int]
> ../../gcc/cfg.h:134: note:                 auto_flag<int>::auto_flag(const auto_flag<int>&)
> ../../gcc/cfg.h: In constructor ‘auto_bb_flag::auto_bb_flag(function*)’:
> ../../gcc/cfg.h:181: error: class ‘auto_bb_flag’ does not have any field named ‘auto_flag’
> ../../gcc/cfg.h:181: error: no matching function for call to ‘auto_flag<int>::auto_flag()’
> ../../gcc/cfg.h:137: note: candidates are: auto_flag<T>::auto_flag(T*) [with T = int]
> ../../gcc/cfg.h:134: note:                 auto_flag<int>::auto_flag(const auto_flag<int>&)
>
>
> I reckon the code in question (the definition of the classes
> auto_edge_class and auto_bb_flag) is perfectly valid C++, and indeed GCC
> 6.3.0 compiles it with no problem.
>
> However, I used the following local modification to workaround the
> problem:

The patch is OK - thanks for noticing.
Richard.

> diff --git a/gcc/cfg.h b/gcc/cfg.h
> index 9fff135..3d660bd 100644
> --- a/gcc/cfg.h
> +++ b/gcc/cfg.h
> @@ -169,7 +169,7 @@ class auto_edge_flag : public auto_flag<int>
>  {
>  public:
>    auto_edge_flag (function *fun)
> -    : auto_flag (&fun->cfg->edge_flags_allocated) {}
> +    : auto_flag<int> (&fun->cfg->edge_flags_allocated) {}
>  };
>
>  /* RAII class to allocate a bb flag for temporary use.  You have
> @@ -178,7 +178,7 @@ class auto_bb_flag : public auto_flag<int>
>  {
>  public:
>    auto_bb_flag (function *fun)
> -    : auto_flag (&fun->cfg->bb_flags_allocated) {}
> +    : auto_flag<int> (&fun->cfg->bb_flags_allocated) {}
>  };
>
>  #endif /* GCC_CFG_H */
>
>
> Considering that 4.4.7 is the default compiler in RHEL 6.x, you may be
> interested in installing a similar workaround, or a better one.
>
> Hence this email :)
> Salud!
>
> [1] gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18.0.4)


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