http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54677
Bug #: 54677 Summary: [4.8 Regression] FAIL: g++.dg/cpp0x/decltype32.C (test for excess errors) with -m64 after revision 191564 Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: testsuite AssignedTo: unassig...@gcc.gnu.org ReportedBy: domi...@lps.ens.fr CC: hjl.to...@gmail.com, paolo.carl...@oracle.com After revision 191564 the tests g++.dg/cpp0x/decltype32.C fails when compiled with -m64: [macbook] f90/bug% g++48 -std=c++0x /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C: In function 'int main()': /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:11:23: error: no matching function for call to 'make_array(int)' int z = make_array(1); // { dg-error "no matching" } ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:11:23: note: candidate is: /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:5:6: note: template<class T> decltype (make_array(il)) make_array(const T&) auto make_array(const T& il) -> ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:5:6: note: template argument deduction/substitution failed: /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C: In substitution of 'template<class T> decltype (make_array(il)) make_array(const T&) [with T = int]': /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:11:23: required from here /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: error: 'make_array' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] decltype(make_array(il)) // { dg-error "not declared|no matching|exceeds" } ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:5:6: note: 'template<class T> decltype (make_array(il)) make_array(const T&)' declared here, later in the translation unit auto make_array(const T& il) -> ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: error: no matching function for call to 'make_array(const int&)' decltype(make_array(il)) // { dg-error "not declared|no matching|exceeds" } ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: note: candidate is: /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:5:6: note: template<class T> decltype (make_array(il)) make_array(const T&) auto make_array(const T& il) -> ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:5:6: note: template argument deduction/substitution failed: /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C: In substitution of 'template<class T> decltype (make_array(il)) make_array(const T&) [with T = int]': /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: required by substitution of 'template<class T> decltype (make_array(il)) make_array(const T&) [with T = int]' /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:11:23: required from here /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: error: 'make_array' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] decltype(make_array(il)) // { dg-error "not declared|no matching|exceeds" } ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:5:6: note: 'template<class T> decltype (make_array(il)) make_array(const T&)' declared here, later in the translation unit auto make_array(const T& il) -> ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: error: no matching function for call to 'make_array(const int&)' decltype(make_array(il)) // { dg-error "not declared|no matching|exceeds" } ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: note: candidate is: /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:5:6: note: template<class T> decltype (make_array(il)) make_array(const T&) auto make_array(const T& il) -> ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:5:6: note: template argument deduction/substitution failed: /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C: In substitution of 'template<class T> decltype (make_array(il)) make_array(const T&) [with T = int]': /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: recursively required by substitution of 'template<class T> decltype (make_array(il)) make_array(const T&) [with T = int]' ... a lot of errors ... /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) substituting 'template<class T> decltype (make_array(il)) make_array(const T&) [with T = <missing>]' decltype(make_array(il)) // { dg-error "not declared|no matching|exceeds" } ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: recursively required by substitution of 'template<class T> decltype (make_array(il)) make_array(const T&) [with T = int]' /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: required by substitution of 'template<class T> decltype (make_array(il)) make_array(const T&) [with T = int]' /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:11:23: required from here /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: error: no matching function for call to 'make_array(const int&)' /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:6:23: note: candidate is: /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:5:6: note: template<class T> decltype (make_array(il)) make_array(const T&) auto make_array(const T& il) -> ^ /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/decltype32.C:5:6: note: substitution of deduced template arguments resulted in errors seen above