Commit 6e03fa93 by Paolo Carlini

re PR c++/55708 (g++ crashes: constexpr function with reference parameters.)

2013-04-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/55708
	* g++.dg/cpp0x/constexpr-55708.C: New.

From-SVN: r198337
parent df93505e
2013-03-26 Richard Biener <rguenther@suse.de>
2013-04-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/55708
* g++.dg/cpp0x/constexpr-55708.C: New.
2013-04-26 Richard Biener <rguenther@suse.de>
* gcc.dg/tree-prof/update-loopch.c: Revert last change.
* gcc.dg/graphite/pr33766.c: Fix undefined behavior.
......
// PR c++/55708
// { dg-do compile { target c++11 } }
template<int N,int NNN>
struct AA { static constexpr int val = N; };
template<typename A,typename B>
//constexpr unsigned long long mymax(A a,B b){ // <-- compiles
constexpr unsigned long long mymax(A && a,const B& b){
return a<b?b:a;
}
template<char... List>
constexpr long long operator"" _y() noexcept
{
return AA<1, mymax(1,2)>::val; // <-- crashes gcc
// return mymax(1,2); // <-- compiles
// return AA<1,2>::val; // <-- compiles
}
template<char... List>
constexpr unsigned long long do_y() noexcept
{
return AA<1, mymax(1,2)>::val; // <-- crashes gcc
}
int main()
{
return 1_y + do_y();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment