Skip to content
Snippets Groups Projects
Commit dbcd32f8 authored by Jason Merrill's avatar Jason Merrill Committed by Jason Merrill
Browse files

re PR c++/86485 ("anonymous" maybe-uninitialized false positive with ternary operator)

	* class.c (is_really_empty_class): Add ignore_vptr parm.

While looking at PR86485, I noticed that many uses of is_really_empty_class
were overlooking that it returned true for a class with only a vptr;
initialization of such a class is not trivial.  Marek's P1064 patch fixed
one place in constexpr.c to also check for a vtable, but there are several
others that still don't.

This patch requires callers to explicitly choose which behavior they want.
Currently the uses in constexpr.c want to consider the vptr, and other uses
don't.

	* class.c (is_really_empty_class): Add ignore_vptr parm.
	(trivial_default_constructor_is_constexpr): Pass it.
	* call.c (build_over_call): Pass it.
	* constexpr.c (cxx_eval_constant_expression): Pass it instead of
	checking TYPE_POLYMORPHIC_P.
	(cxx_eval_component_reference, potential_constant_expression_1):
	Pass it.
	* cp-gimplify.c (simple_empty_class_p): Pass it.
	* init.c (expand_aggr_init_1): Pass it.

From-SVN: r269402
parent 9bf54c93
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment