aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/ChangeLog
blob: 95eb2a7d765d3fc5c1aca33843f5970ae6a7a617 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
2020-01-15  Jason Merrill  <jason@redhat.com>

	PR c++/93257 - consteval void function.
	* constexpr.c (verify_constant): Allow void_node.

	PR c++/92871 - bad code with xvalue and GNU ?: extension.
	* call.c (prevent_lifetime_extension): New.
	(build_conditional_expr_1): Use it.

2020-01-14  Nathan Sidwell  <nathan@acm.org>

	PR c++/90916
	* pt.c (retrieve_specialization): Use get_template_info, not open
	coding access.

	PR c++/90916
	* pt.c (retrieve_specialization): Get the TI from the decl or the
	classtype as appropriate.

2020-01-14  David Malcolm  <dmalcolm@redhat.com>

	* cp-gimplify.c (source_location_table_entry_hash::empty_zero_p):
	New static constant.
	* cp-tree.h (named_decl_hash::empty_zero_p): Likewise.
	(struct named_label_hash::empty_zero_p): Likewise.
	* decl2.c (mangled_decl_hash::empty_zero_p): Likewise.

2020-01-14  Jason Merrill  <jason@redhat.com>

	PR c++/92590 - wrong handling of inherited default ctor.
	* class.c (add_method): A constrained inherited ctor doesn't hide an
	implicit derived ctor.
	Revert:
	PR c++/92552 - ICE with inherited constrained default ctor.
	* pt.c (instantiate_class_template_1): Copy
	TYPE_HAS_USER_CONSTRUCTOR.
	PR c++/91930 - ICE with constrained inherited default ctor.
	* name-lookup.c (do_class_using_decl): Set TYPE_HAS_USER_CONSTRUCTOR
	for inherited constructor.
	PR c++/92594 - ICE with inherited trivial default ctor.
	* method.c (trivial_fn_p): Treat an inherited default constructor
	like a normal default constructor.

	PR c++/92594 - ICE with inherited trivial default ctor.
	* method.c (trivial_fn_p): Treat an inherited default constructor
	like a normal default constructor.

	PR c++/92009 - ICE with punning of typeid.
	* rtti.c (get_tinfo_desc): Call xref_basetypes.
	* constexpr.c (cxx_fold_indirect_ref): Don't strip
	REINTERPRET_CAST_P.

2020-01-13  Jason Merrill  <jason@redhat.com>

	PR c++/92746 - ICE with noexcept of function concept check.
	* except.c (check_noexcept_r): Handle concept-check.

	PR c++/92582 - ICE with member template as requirement.
	* pt.c (struct find_template_parameter_info): Add ctx_parms.
	(any_template_parm_r): Handle TEMPLATE_DECL.
	(find_template_parameters): Take parms instead of their depth.
	* constraint.cc (build_parameter_mapping): Pass them.

	PR c++/33799 - destroy return value if local cleanup throws.
	* cp-tree.h (current_retval_sentinel): New macro.
	* decl.c (start_preparsed_function): Set up cleanup for retval.
	* typeck.c (check_return_expr): Set current_retval_sentinel.

	PR c++/93238 - short right-shift with enum.
	* typeck.c (cp_build_binary_op): Use folded op1 for short_shift.

2020-01-10  Jason Merrill  <jason@redhat.com>

	* typeck.c (cp_build_binary_op): Restore short_shift code.

	PR c++/93143 - incorrect tree sharing with constexpr.
	* constexpr.c (cxx_eval_outermost_constant_expr): Don't assume
	CONSTRUCTORs are already unshared.

	PR c++/93173 - incorrect tree sharing.
	PR c++/93033
	* cp-gimplify.c (cp_gimplify_init_expr, cp_gimplify_expr): Use
	copy_if_shared after cp_genericize_tree.
	* typeck2.c (split_nonconstant_init): Don't unshare here.

2020-01-08  Jason Merrill  <jason@redhat.com>

	* cp-gimplify.c (cp_gimplify_expr) [TARGET_EXPR]: Check
	TARGET_EXPR_DIRECT_INIT_P.
	* constexpr.c (cxx_eval_constant_expression): Likewise.

2020-01-08  Jason Merrill  <jason@redhat.com>

	PR c++/91369 - constexpr destructor and member initializer.
	* constexpr.c (cxx_eval_store_expression): Look through TARGET_EXPR
	when not preevaluating.

2020-01-08  Jason Merrill  <jason@redhat.com>

	* constexpr.c (cxx_eval_call_expression): Remove DECL_BY_REFERENCE
	support.

2020-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

	* init.c (build_new): Add location_t parameter and use it throughout.
	(build_raw_new_expr): Likewise.
	* parser.c (cp_parser_new_expression): Pass the combined_loc.
	* pt.c (tsubst_copy_and_build): Adjust call.
	* cp-tree.h: Update declarations.

2020-01-07  Jason Merrill  <jason@redhat.com>

	PR c++/47877 - -fvisibility-inlines-hidden and member templates.
	* decl2.c (determine_visibility): -fvisibility-inlines-hidden beats
	explicit class visibility for a template.

2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>

	* mangle.c (mangle_type_attribute_p): New function, split out from...
	(write_CV_qualifiers_for_type): ...here.  Don't mangle attributes
	that contain a space.

2020-01-07  Jakub Jelinek  <jakub@redhat.com>

	PR c++/91369
	* constexpr.c (struct constexpr_global_ctx): Add heap_alloc_count
	member, initialize it to zero in ctor.
	(cxx_eval_call_expression): Bump heap_dealloc_count when deleting
	a heap object.  Don't cache calls to functions which allocate some
	heap objects and don't deallocate them or deallocate some heap
	objects they didn't allocate.

2020-01-06  Jason Merrill  <jason@redhat.com>

	PR c++/92552 - ICE with inherited constrained default ctor.
	* pt.c (instantiate_class_template_1): Copy
	TYPE_HAS_USER_CONSTRUCTOR.
	* class.c (one_inherited_ctor): Don't set it here.

2020-01-06  Andrew Sutton  <asutton@lock3software.com>

	PR c++/92739 - parsing requires clause with attributes.
	* parser.c (cp_parser_constraint_requires_parens): Exclude
	attributes as postfix expressions.

2020-01-05  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93138
	* parser.c (cp_parser_check_class_key): Disable access checks for the
	simple name lookup.
	(cp_parser_maybe_warn_enum_key): Likewise.  Return early if
	!warn_redundant_tags.

2010-01-05  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93046
	* cp-gimplify.c (cp_gimplify_init_expr): Don't look through
	TARGET_EXPR if it has been gimplified already.

2020-01-03  Jason Merrill  <jason@redhat.com>

	PR c++/93033 - incorrect tree node sharing with array init.
	* typeck2.c (split_nonconstant_init): Unshare non-decl.
	* cp-gimplify.c (cp_gimplify_init_expr): Only split if -fexceptions.

2020-01-02  Jason Merrill  <jason@redhat.com>

	* pt.c (invalid_nontype_parm_type_p): Reject class placeholder in
	C++17.

2020-01-02  Jakub Jelinek  <jakub@redhat.com>

	PR c/90677
	* cp-objcp-common.c (identifier_global_tag): Return NULL_TREE if name
	has not been found, rather than error_mark_node.

2020-01-01  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

Copyright (C) 2020 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.