Discussion:
Building with old gcc
Paul Koning
2018-10-09 13:30:13 UTC
Permalink
I'm trying to build the current code on Linux with GCC 4.3.2 (stock compiler in Fedora 10 which is my old test system). It fails like this:

In file included from /mnt/hgfs/pkoning/Documents/svn/gcc/gcc/tree-data-ref.h:27,
from /mnt/hgfs/pkoning/Documents/svn/gcc/gcc/gimple-loop-interchange.cc:44:
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h: In constructor ‘opt_result::opt_result(bool, opt_problem*)’:
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:217: error: class ‘opt_result’ does not have any field named ‘opt_wrapper’
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:217: error: no matching function for call to ‘opt_wrapper<bool>::opt_wrapper()’
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:160: note: candidates are: opt_wrapper<T>::opt_wrapper(T, opt_problem*) [with T = bool]
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:147: note: opt_wrapper<bool>::opt_wrapper(const opt_wrapper<bool>&)
make[3]: *** [gimple-loop-interchange.o] Error 1

Is 9.0 supposed to build with a build compiler this old? The documentation on the GCC web page says an ISO C++ compiler is required but it doesn't tell me whether the C++ compiler in GCC 4.3.2 is adequate. Since many people will be installing GCC using an older version of GCC, it would be good for the documentation to state what the minimum version of GCC is.

paul
Richard Biener
2018-10-09 13:43:00 UTC
Permalink
Post by Paul Koning
In file included from /mnt/hgfs/pkoning/Documents/svn/gcc/gcc/tree-data-ref.h:27,
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:217: error: class ‘opt_result’ does not have any field named ‘opt_wrapper’
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:217: error: no matching function for call to ‘opt_wrapper<bool>::opt_wrapper()’
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:160: note: candidates are: opt_wrapper<T>::opt_wrapper(T, opt_problem*) [with T = bool]
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:147: note: opt_wrapper<bool>::opt_wrapper(const opt_wrapper<bool>&)
make[3]: *** [gimple-loop-interchange.o] Error 1
Is 9.0 supposed to build with a build compiler this old?
Yes.
GCC 4.3 doesn't define the injected-class-name for the base, so this
OK.
--- a/gcc/opt-problem.h
+++ b/gcc/opt-problem.h
@@ -214,7 +214,7 @@ class opt_result : public opt_wrapper <bool>
/* Private ctor. Instances should be created by the success and failure
static member functions. */
opt_result (wrapped_t result, opt_problem *problem)
- : opt_wrapper (result, problem)
+ : opt_wrapper<bool> (result, problem)
{}
};
Paolo Carlini
2018-10-09 13:47:50 UTC
Permalink
Hi,
Post by Paul Koning
In file included from /mnt/hgfs/pkoning/Documents/svn/gcc/gcc/tree-data-ref.h:27,
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:217: error: class ‘opt_result’ does not have any field named ‘opt_wrapper’
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:217: error: no matching function for call to ‘opt_wrapper<bool>::opt_wrapper()’
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:160: note: candidates are: opt_wrapper<T>::opt_wrapper(T, opt_problem*) [with T = bool]
/mnt/hgfs/pkoning/Documents/svn/gcc/gcc/opt-problem.h:147: note: opt_wrapper<bool>::opt_wrapper(const opt_wrapper<bool>&)
make[3]: *** [gimple-loop-interchange.o] Error 1
Is 9.0 supposed to build with a build compiler this old?
Yes.
GCC 4.3 doesn't define the injected-class-name for the base, so this
--- a/gcc/opt-problem.h
+++ b/gcc/opt-problem.h
@@ -214,7 +214,7 @@ class opt_result : public opt_wrapper <bool>
/* Private ctor. Instances should be created by the success and failure
static member functions. */
opt_result (wrapped_t result, opt_problem *problem)
- : opt_wrapper (result, problem)
+ : opt_wrapper<bool> (result, problem)
{}
};
At the end of August my colleague Jose Marchesi fixed another instance
of the same issue, affecting classes auto_edge_flag and auto_bb_flag. I
think we can commit this change too as obvious.

Paolo.

Loading...