Jason Merrill <ja...@redhat.com> writes:

> commit e52e82e56507d1de1932abcafd80683c4dc00d1e
> Author: Jason Merrill <ja...@redhat.com>
> Date:   Sun Nov 16 17:14:12 2014 -0500
>
>       * constexpr.c (use_new_call): Always use new call handling.
>
> diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c
> index 57d0c46..8881271 100644
> --- a/gcc/cp/constexpr.c
> +++ b/gcc/cp/constexpr.c
> @@ -1021,8 +1021,8 @@ adjust_temp_type (tree type, tree temp)
>  }
>  
>  /* True if we want to use the new handling of constexpr calls based on
> -   DECL_SAVED_TREE.  Currently only active for C++14 mode.  */
> -#define use_new_call (cxx_dialect >= cxx14)
> +   DECL_SAVED_TREE.  */
> +#define use_new_call true
>  
>  /* Subroutine of cxx_eval_call_expression.
>     We are processing a call expression (either CALL_EXPR or

FAIL: 18_support/numeric_limits/requirements/constexpr_functions.cc (test for 
excess errors)

$ gcc/xg++ -shared-libgcc -Bgcc -nostdinc++ -Lm68k-linux/libstdc++-v3/src 
-Lm68k-linux/libstdc++-v3/src/.libs -Lm68k-linux/libstdc++-v3/libsupc++/.libs 
-B/daten/cross/m68k-linux/m68k-linux/bin/ 
-B/daten/cross/m68k-linux/m68k-linux/lib/ -isystem 
/daten/cross/m68k-linux/m68k-linux/include -isystem 
/daten/cross/m68k-linux/m68k-linux/sys-include 
-Bm68k-linux/./libstdc++-v3/src/.libs -D_GLIBCXX_ASSERT -fmessage-length=0 
-ffunction-sections -fdata-sections -O2 -g -D_GNU_SOURCE -DLOCALEDIR="." 
-nostdinc++ -Im68k-linux/libstdc++-v3/include/m68k-linux 
-Im68k-linux/libstdc++-v3/include -I../libstdc++-v3/libsupc++ 
-I../libstdc++-v3/include/backward -I../libstdc++-v3/testsuite/util 
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc
 -std=gnu++14 -S -o constexpr_functions.s
In file included from 
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:21:0:
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:
 In instantiation of ‘void 
__gnu_test::constexpr_member_functions::operator()()::_Concept::__constraint() 
[with _Ttesttype = std::numeric_limits<char>; _Tbasetype = char]’:
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:55:2:
   required from ‘void __gnu_test::constexpr_member_functions::operator()() 
[with _Ttesttype = std::numeric_limits<char>; _Tbasetype = char]’
m68k-linux/libstdc++-v3/include/ext/typelist.h:197:2:   required from ‘void 
__gnu_cxx::typelist::detail::apply_generator2_<Gn, 
__gnu_cxx::typelist::chain<Hd, Tl>, __gnu_cxx::typelist::chain<Hd2, TlV> 
>::operator()(Gn&) [with Gn = __gnu_test::constexpr_member_functions; Hd1 = 
std::numeric_limits<char>; TlT = 
__gnu_cxx::typelist::chain<std::numeric_limits<signed char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<wchar_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char16_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char32_t>, 
__gnu_cxx::typelist::null_type> > > > > > > > > > > > >; Hd2 = char; TlV = 
__gnu_cxx::typelist::chain<signed char, __gnu_cxx::typelist::chain<unsigned 
char, __gnu_cxx::typelist::chain<short int, __gnu_cxx::typelist::chain<short 
unsigned int, __gnu_cxx::typelist::chain<int, 
__gnu_cxx::typelist::chain<unsigned int, __gnu_cxx::typelist::chain<long int, 
__gnu_cxx::typelist::chain<long unsigned int, __gnu_cxx::typelist::chain<long 
long int, __gnu_cxx::typelist::chain<long long unsigned int, 
__gnu_cxx::typelist::chain<wchar_t, __gnu_cxx::typelist::chain<char16_t, 
__gnu_cxx::typelist::chain<char32_t, __gnu_cxx::typelist::null_type> > > > > > 
> > > > > > >]’
m68k-linux/libstdc++-v3/include/ext/typelist.h:199:6:   required from ‘void 
__gnu_cxx::typelist::detail::apply_generator2_<Gn, 
__gnu_cxx::typelist::chain<Hd, Tl>, __gnu_cxx::typelist::chain<Hd2, TlV> 
>::operator()(Gn&) [with Gn = __gnu_test::constexpr_member_functions; Hd1 = 
std::numeric_limits<bool>; TlT = 
__gnu_cxx::typelist::chain<std::numeric_limits<char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<signed char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<wchar_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char16_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char32_t>, 
__gnu_cxx::typelist::null_type> > > > > > > > > > > > > >; Hd2 = bool; TlV = 
__gnu_cxx::typelist::chain<char, __gnu_cxx::typelist::chain<signed char, 
__gnu_cxx::typelist::chain<unsigned char, __gnu_cxx::typelist::chain<short int, 
__gnu_cxx::typelist::chain<short unsigned int, __gnu_cxx::typelist::chain<int, 
__gnu_cxx::typelist::chain<unsigned int, __gnu_cxx::typelist::chain<long int, 
__gnu_cxx::typelist::chain<long unsigned int, __gnu_cxx::typelist::chain<long 
long int, __gnu_cxx::typelist::chain<long long unsigned int, 
__gnu_cxx::typelist::chain<wchar_t, __gnu_cxx::typelist::chain<char16_t, 
__gnu_cxx::typelist::chain<char32_t, __gnu_cxx::typelist::null_type> > > > > > 
> > > > > > > >]’
m68k-linux/libstdc++-v3/include/ext/typelist.h:424:8:   required from ‘void 
__gnu_cxx::typelist::apply_generator(Gn&, TypelistT, TypelistV) [with Gn = 
__gnu_test::constexpr_member_functions; TypelistT = 
__gnu_cxx::typelist::node<__gnu_cxx::typelist::chain<std::numeric_limits<bool>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<signed char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<wchar_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char16_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char32_t>, 
__gnu_cxx::typelist::null_type> > > > > > > > > > > > > > > >; TypelistV = 
__gnu_cxx::typelist::node<__gnu_cxx::typelist::chain<bool, 
__gnu_cxx::typelist::chain<char, __gnu_cxx::typelist::chain<signed char, 
__gnu_cxx::typelist::chain<unsigned char, __gnu_cxx::typelist::chain<short int, 
__gnu_cxx::typelist::chain<short unsigned int, __gnu_cxx::typelist::chain<int, 
__gnu_cxx::typelist::chain<unsigned int, __gnu_cxx::typelist::chain<long int, 
__gnu_cxx::typelist::chain<long unsigned int, __gnu_cxx::typelist::chain<long 
long int, __gnu_cxx::typelist::chain<long long unsigned int, 
__gnu_cxx::typelist::chain<wchar_t, __gnu_cxx::typelist::chain<char16_t, 
__gnu_cxx::typelist::chain<char32_t, __gnu_cxx::typelist::null_type> > > > > > 
> > > > > > > > > >]’
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:68:50:
   required from here
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:37:25:
   in constexpr expansion of ‘std::numeric_limits<char>::min()’
m68k-linux/libstdc++-v3/include/limits:456:44: error: ‘(1u * 8u)’ is not a 
constant expression
       min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min(char); }
                                            ^
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:39:25:
   in constexpr expansion of ‘std::numeric_limits<char>::max()’
m68k-linux/libstdc++-v3/include/limits:459:44: error: ‘(1u * 8u)’ is not a 
constant expression
       max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max(char); }
                                            ^
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:41:28:
   in constexpr expansion of ‘std::numeric_limits<char>::lowest()’
m68k-linux/libstdc++-v3/include/limits:463:37:   in constexpr expansion of 
‘std::numeric_limits<char>::min()’
m68k-linux/libstdc++-v3/include/limits:456:44: error: ‘(1u * 8u)’ is not a 
constant expression
       min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min(char); }
                                            ^
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:
 In instantiation of ‘void 
__gnu_test::constexpr_member_functions::operator()()::_Concept::__constraint() 
[with _Ttesttype = std::numeric_limits<wchar_t>; _Tbasetype = wchar_t]’:
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:55:2:
   required from ‘void __gnu_test::constexpr_member_functions::operator()() 
[with _Ttesttype = std::numeric_limits<wchar_t>; _Tbasetype = wchar_t]’
m68k-linux/libstdc++-v3/include/ext/typelist.h:199:6:   recursively required 
from ‘void __gnu_cxx::typelist::detail::apply_generator2_<Gn, 
__gnu_cxx::typelist::chain<Hd, Tl>, __gnu_cxx::typelist::chain<Hd2, TlV> 
>::operator()(Gn&) [with Gn = __gnu_test::constexpr_member_functions; Hd1 = 
std::numeric_limits<char>; TlT = 
__gnu_cxx::typelist::chain<std::numeric_limits<signed char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<wchar_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char16_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char32_t>, 
__gnu_cxx::typelist::null_type> > > > > > > > > > > > >; Hd2 = char; TlV = 
__gnu_cxx::typelist::chain<signed char, __gnu_cxx::typelist::chain<unsigned 
char, __gnu_cxx::typelist::chain<short int, __gnu_cxx::typelist::chain<short 
unsigned int, __gnu_cxx::typelist::chain<int, 
__gnu_cxx::typelist::chain<unsigned int, __gnu_cxx::typelist::chain<long int, 
__gnu_cxx::typelist::chain<long unsigned int, __gnu_cxx::typelist::chain<long 
long int, __gnu_cxx::typelist::chain<long long unsigned int, 
__gnu_cxx::typelist::chain<wchar_t, __gnu_cxx::typelist::chain<char16_t, 
__gnu_cxx::typelist::chain<char32_t, __gnu_cxx::typelist::null_type> > > > > > 
> > > > > > >]’
m68k-linux/libstdc++-v3/include/ext/typelist.h:199:6:   required from ‘void 
__gnu_cxx::typelist::detail::apply_generator2_<Gn, 
__gnu_cxx::typelist::chain<Hd, Tl>, __gnu_cxx::typelist::chain<Hd2, TlV> 
>::operator()(Gn&) [with Gn = __gnu_test::constexpr_member_functions; Hd1 = 
std::numeric_limits<bool>; TlT = 
__gnu_cxx::typelist::chain<std::numeric_limits<char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<signed char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<wchar_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char16_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char32_t>, 
__gnu_cxx::typelist::null_type> > > > > > > > > > > > > >; Hd2 = bool; TlV = 
__gnu_cxx::typelist::chain<char, __gnu_cxx::typelist::chain<signed char, 
__gnu_cxx::typelist::chain<unsigned char, __gnu_cxx::typelist::chain<short int, 
__gnu_cxx::typelist::chain<short unsigned int, __gnu_cxx::typelist::chain<int, 
__gnu_cxx::typelist::chain<unsigned int, __gnu_cxx::typelist::chain<long int, 
__gnu_cxx::typelist::chain<long unsigned int, __gnu_cxx::typelist::chain<long 
long int, __gnu_cxx::typelist::chain<long long unsigned int, 
__gnu_cxx::typelist::chain<wchar_t, __gnu_cxx::typelist::chain<char16_t, 
__gnu_cxx::typelist::chain<char32_t, __gnu_cxx::typelist::null_type> > > > > > 
> > > > > > > >]’
m68k-linux/libstdc++-v3/include/ext/typelist.h:424:8:   required from ‘void 
__gnu_cxx::typelist::apply_generator(Gn&, TypelistT, TypelistV) [with Gn = 
__gnu_test::constexpr_member_functions; TypelistT = 
__gnu_cxx::typelist::node<__gnu_cxx::typelist::chain<std::numeric_limits<bool>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<signed char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned char>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<short unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<long long unsigned int>, 
__gnu_cxx::typelist::chain<std::numeric_limits<wchar_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char16_t>, 
__gnu_cxx::typelist::chain<std::numeric_limits<char32_t>, 
__gnu_cxx::typelist::null_type> > > > > > > > > > > > > > > >; TypelistV = 
__gnu_cxx::typelist::node<__gnu_cxx::typelist::chain<bool, 
__gnu_cxx::typelist::chain<char, __gnu_cxx::typelist::chain<signed char, 
__gnu_cxx::typelist::chain<unsigned char, __gnu_cxx::typelist::chain<short int, 
__gnu_cxx::typelist::chain<short unsigned int, __gnu_cxx::typelist::chain<int, 
__gnu_cxx::typelist::chain<unsigned int, __gnu_cxx::typelist::chain<long int, 
__gnu_cxx::typelist::chain<long unsigned int, __gnu_cxx::typelist::chain<long 
long int, __gnu_cxx::typelist::chain<long long unsigned int, 
__gnu_cxx::typelist::chain<wchar_t, __gnu_cxx::typelist::chain<char16_t, 
__gnu_cxx::typelist::chain<char32_t, __gnu_cxx::typelist::null_type> > > > > > 
> > > > > > > > > >]’
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:68:50:
   required from here
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:37:25:
   in constexpr expansion of ‘std::numeric_limits<wchar_t>::min()’
m68k-linux/libstdc++-v3/include/limits:666:44: error: ‘(4u * 8u)’ is not a 
constant expression
       min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min (wchar_t); }
                                            ^
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:39:25:
   in constexpr expansion of ‘std::numeric_limits<wchar_t>::max()’
m68k-linux/libstdc++-v3/include/limits:669:44: error: ‘(4u * 8u)’ is not a 
constant expression
       max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max (wchar_t); }
                                            ^
../libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc:41:28:
   in constexpr expansion of ‘std::numeric_limits<wchar_t>::lowest()’
m68k-linux/libstdc++-v3/include/limits:673:37:   in constexpr expansion of 
‘std::numeric_limits<wchar_t>::min()’
m68k-linux/libstdc++-v3/include/limits:666:44: error: ‘(4u * 8u)’ is not a 
constant expression
       min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min (wchar_t); }
                                            ^

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."

Reply via email to