Re: [C++ Patch] PR 58647

2013-11-27 Thread Paolo Carlini
On 11/27/2013 04:35 PM, Jason Merrill wrote: On 11/27/2013 05:22 AM, Paolo Carlini wrote: Thus something like the below? Passes testing. Yep. With a comment that we can only get there in checking mode via build_non_dependent_expr, because any expression that calls or takes the address of th

Re: [C++ Patch] PR 58647

2013-11-27 Thread Jason Merrill
On 11/27/2013 05:22 AM, Paolo Carlini wrote: Thus something like the below? Passes testing. Yep. With a comment that we can only get there in checking mode via build_non_dependent_expr, because any expression that calls or takes the address of the function will have pull a FUNCTION_DECL out

Re: [C++ Patch] PR 58647

2013-11-27 Thread Paolo Carlini
Hi, On 11/26/2013 08:10 PM, Jason Merrill wrote: On 11/26/2013 11:43 AM, Paolo Carlini wrote: We have got a bunch of testcases, for example constexpr-ex4.C - attached for your convenience - which trigger the assert !really_overloaded_fn (t) ... What do you suggest? Aha. Well, in that case we

Re: [C++ Patch] PR 58647

2013-11-26 Thread Jason Merrill
On 11/26/2013 11:43 AM, Paolo Carlini wrote: We have got a bunch of testcases, for example constexpr-ex4.C - attached for your convenience - which trigger the assert !really_overloaded_fn (t) ... What do you suggest? Aha. Well, in that case we really can't get a constant value, so I'd assert

Re: [C++ Patch] PR 58647

2013-11-26 Thread Paolo Carlini
Hi, On 11/26/2013 04:30 PM, Jason Merrill wrote: A BASELINK isn't useful as a constant, either; I was thinking of the FUNCTION_DECL itself. Perhaps gcc_checking_assert (!really_overloaded_fn return get_first_fn We have got a bunch of testcases, for example constexpr-ex4.C - attached for your

Re: [C++ Patch] PR 58647

2013-11-26 Thread Jason Merrill
On 11/26/2013 05:40 AM, Paolo Carlini wrote: Hi, On 11/23/2013 11:35 PM, Jason Merrill wrote: On 10/20/2013 12:07 PM, Paolo Carlini wrote: case COMPONENT_REF: + if (is_overloaded_fn (TREE_OPERAND (t, 1))) +return t; Hmm, I'd be inclined to strip the COMPONENT_REF in this case t

Re: [C++ Patch] PR 58647

2013-11-26 Thread Paolo Carlini
Hi, On 11/23/2013 11:35 PM, Jason Merrill wrote: On 10/20/2013 12:07 PM, Paolo Carlini wrote: case COMPONENT_REF: + if (is_overloaded_fn (TREE_OPERAND (t, 1))) +return t; Hmm, I'd be inclined to strip the COMPONENT_REF in this case to produce something that's actually usable as

Re: [C++ Patch] PR 58647

2013-11-23 Thread Jason Merrill
On 10/20/2013 12:07 PM, Paolo Carlini wrote: case COMPONENT_REF: + if (is_overloaded_fn (TREE_OPERAND (t, 1))) + return t; Hmm, I'd be inclined to strip the COMPONENT_REF in this case to produce something that's actually usable as a constant. Does that work? Jason

[C++ Patch] PR 58647

2013-10-20 Thread Paolo Carlini
Hi, this ICE on valid, [4.7/4.8/4.9 Regression], happens only with -std=c++11 and is quite simple to analyze: cxx_eval_constant_expression sees a COMPONENT_REF and forwards to cxx_eval_component_reference, but the latter, evidently, only handles "fields" not functions (per the comment) and an