From: Mark Mitchell Date: Wed, 17 Jan 2001 07:13:39 +0000 (+0000) Subject: gen-num-limits.cc (INSTANTIATIONS): New macro. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5fdfba85be35635b2e37c62108dfa90acc36f74c;p=gcc.git gen-num-limits.cc (INSTANTIATIONS): New macro. * src/gen-num-limits.cc (INSTANTIATIONS): New macro. Use it do explicitly instantiate predicate and value for all the builtin Ts. From-SVN: r39086 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6e5468b4b46..4e28ed0ead1 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2001-01-16 Mark Mitchell + + * src/gen-num-limits.cc (INSTANTIATIONS): New macro. + Use it do explicitly instantiate predicate and value for + all the builtin Ts. + 2001-01-16 Nathan Sidwell * libsupc++/exception_support.cc (__cp_pop_exception): Fix diff --git a/libstdc++-v3/src/gen-num-limits.cc b/libstdc++-v3/src/gen-num-limits.cc index 8106c903275..aca1c841bd6 100644 --- a/libstdc++-v3/src/gen-num-limits.cc +++ b/libstdc++-v3/src/gen-num-limits.cc @@ -770,3 +770,28 @@ int main() // .__convert_long_double_d); } } +// G++ doesn't have support for automatic instantiation of static data +// members on platforms that don't have weak symbols. On AIX, in +// particular, static data members must be explicitly instantiated. +// So, we explicitly instantiate some of the ones we need. To save +// typing, we don't name the static data members explicitly; we +// instead name their containing types. + +#define INSTANTIATIONS(TYPE) \ + template struct predicate; \ + template struct value + +INSTANTIATIONS (bool); +INSTANTIATIONS (char); +INSTANTIATIONS (signed char); +INSTANTIATIONS (unsigned char); +INSTANTIATIONS (short); +INSTANTIATIONS (unsigned short); +INSTANTIATIONS (int); +INSTANTIATIONS (unsigned int); +INSTANTIATIONS (long); +INSTANTIATIONS (unsigned long); +INSTANTIATIONS (float); +INSTANTIATIONS (double); +INSTANTIATIONS (long double); +