re PR c++/47971 (ICE: in tsubst_copy, at cp/pt.c:11725 on valid code)
[gcc.git] / gcc / cp / ChangeLog
1 2011-03-04 Jason Merrill <jason@redhat.com>
2
3 PR c++/47971
4 * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
5 (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
6
7 PR c++/46220
8 * search.c (check_final_overrider): Allow pointer to same incomplete
9 class type with different cv-quals.
10
11 2011-03-03 Paolo Carlini <paolo.carlini@oracle.com>
12
13 PR c++/47974
14 * pt.c (tsubst_template_args): Check argument t for error_mark_node.
15
16 2011-03-03 Jason Merrill <jason@redhat.com>
17
18 PR c++/47950
19 * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
20
21 2011-03-02 Jason Merrill <jason@redhat.com>
22
23 PR c++/47950
24 * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
25
26 PR c++/47774
27 * tree.c (build_vec_init_elt): Split out from...
28 (build_vec_init_expr): ...here.
29 (diagnose_non_constexpr_vec_init): New fn.
30 * semantics.c (potential_constant_expression_1): Use it.
31 * cp-tree.h: Declare it.
32
33 2011-03-01 Jason Merrill <jason@redhat.com>
34
35 PR c++/46159
36 * parser.c (cp_parser_primary_expression): Don't warn about a
37 failed tentative parse.
38
39 PR c++/47200
40 * semantics.c (cxx_bind_parameters_in_call): Don't call
41 adjust_temp_type on non-constant args.
42
43 PR c++/47851
44 * call.c (standard_conversion): Provide requested cv-quals on
45 class rvalue conversion.
46
47 PR c++/46282
48 * decl2.c (grokbitfield): Handle type-dependent width.
49
50 2011-02-28 Jason Merrill <jason@redhat.com>
51
52 PR c++/47873
53 * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
54 after checking for a non-thunk.
55
56 2011-02-26 Jason Merrill <jason@redhat.com>
57
58 PR c++/47904
59 * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
60 * pt.c (iterative_hash_template_arg): And hash it.
61
62 PR c++/47897
63 * semantics.c (non_const_var_error): Split out from...
64 (cxx_eval_constant_expression): ...here.
65 (potential_constant_expression_1) [VAR_DECL]: Use it.
66 Allow dependent variables.
67
68 2011-02-24 Jason Merrill <jason@redhat.com>
69
70 * parser.c (cp_parser_constant_expression): Set
71 non_integral_constant_expression correctly for C++0x too.
72 (cp_parser_static_assert): Allow non-constant expression.
73 (cp_parser_direct_declarator): Expect non_constant_p to be set
74 properly for C++0x.
75 * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
76 * semantics.c (maybe_constant_value): Check type_unknown_p too.
77 (potential_rvalue_constant_expression): New.
78 (require_potential_rvalue_constant_expression): New.
79
80 2011-02-23 Jason Merrill <jason@redhat.com>
81
82 * cp-tree.h (DECL_PARM_LEVEL): New.
83 (struct lang_decl_parm): Add level field.
84 * name-lookup.c (function_parm_depth): New fn.
85 * name-lookup.h: Declare it.
86 * parser.c (cp_parser_parameter_declaration_list): Use it.
87 * mangle.c (struct globals): Add parm_depth field.
88 (write_bare_function_type): Adjust it.
89 (write_expression): Include the level delta in PARM_DECL mangling
90 for abi >= 6.
91
92 * semantics.c (finish_decltype_type): Remove shortcut for decltype
93 of id-expression.
94 * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
95
96 2011-02-23 Nathan Froyd <froydnj@codesourcery.com>
97
98 PR c++/46868
99 * parser.c (cp_parser_class_specifier): Require a closing brace
100 to attempt error recovery.
101
102 2011-02-23 Jakub Jelinek <jakub@redhat.com>
103
104 PR c++/47833
105 * pt.c (struct pending_template): Add chain_next GTY option.
106 * decl.c (struct named_label_use_entry): Likewise.
107
108 2011-02-22 Paolo Carlini <paolo.carlini@oracle.com>
109
110 PR c++/47242
111 * semantics.c (build_lambda_object): Bail out if a field is
112 error_mark_node.
113
114 2011-02-22 Dodji Seketeli <dodji@redhat.com>
115
116 PR c++/47666
117 * class.c (dfs_declare_virt_assop_and_dtor)
118 (declare_virt_assop_and_dtor): New static functions.
119 (add_implicitly_declared_members): Use
120 declare_virt_assop_and_dtor.
121
122 2011-02-21 Jason Merrill <jason@redhat.com>
123
124 PR c++/47207
125 * decl2.c (decl_constant_var_p): A constexpr var needs an
126 initializer to be constant.
127 * semantics.c (cxx_eval_constant_expression): Complain about
128 constexpr var used in its own initializer.
129 * call.c (set_up_extended_ref_temp): Set
130 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
131
132 2011-02-20 Jason Merrill <jason@redhat.com>
133
134 PR c++/47199
135 * semantics.c (cxx_eval_call_expression): Call
136 cxx_eval_constant_expression in trivial shortcut.
137
138 PR c++/46831
139 * call.c (convert_class_to_reference): Don't try to set up a
140 second conv sequence for non-viable candidates.
141
142 PR c++/47703
143 * error.c (location_of): Handle non-tagged types.
144
145 PR c++/46472
146 * method.c (process_subob_fn): Instantiate constexpr templates.
147 * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
148
149 2011-02-20 Dodji Seketeli <dodji@redhat.com>
150
151 PR c++/46394
152 * pt.c (tsubst_pack_expansion): do not use
153 cp_tree_equal/same_type_p to detect an expansion of a parameter
154 pack.
155
156 2011-02-19 Jason Merrill <jason@redhat.com>
157
158 PR c++/47503
159 * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
160
161 2011-02-18 Paolo Carlini <paolo.carlini@oracle.com>
162
163 PR c++/47795
164 * semantics.c (finish_non_static_data_member): Early return if
165 object is error_mark_node.
166
167 2011-02-18 Dodji Seketeli <dodji@redhat.com>
168
169 PR c++/47208
170 * pt.c (do_auto_deduction): Do not mention error_mark_node in
171 diagnostics.
172 * semantics.c (finish_id_expression): Do not pass erroneous decl
173 to decl_constant_var_p.
174
175 2011-02-17 Jakub Jelinek <jakub@redhat.com>
176
177 PR c++/47783
178 * cvt.c (convert_from_reference): Call mark_exp_read.
179
180 2011-02-11 Dodji Seketeli <dodji@redhat.com>
181
182 PR c++/47172
183 * pt.c (finish_call_expr): Consider a call expression that has a
184 dependent "this" pointer as being dependent. Add comments.
185 (dependent_type_p, type_dependent_expression_p): Update comments.
186
187 2011-02-16 Dodji Seketeli <dodji@redhat.com>
188
189 PR c++/47326
190 * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
191 expansion arguments are not evaluated.
192
193 2011-02-16 Jakub Jelinek <jakub@redhat.com>
194
195 PR c++/47704
196 * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
197 instead of TYPE_LANG_FLAG_3.
198 * pt.c (lookup_template_class): Copy over
199 ENUM_FIXED_UNDERLYING_TYPE_P.
200
201 2011-02-15 Jason Merrill <jason@redhat.com>
202
203 PR c++/46807
204 * method.c (synthesized_method_walk): Always exit early for
205 trivial fn in C++98 mode.
206
207 2011-02-14 Jason Merrill <jason@redhat.com>
208
209 PR c++/47482
210 * parser.c (cp_parser_enumerator_definition): Call
211 fold_non_dependent_expr.
212
213 2011-02-09 Jason Merrill <jason@redhat.com>
214
215 * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
216 * semantics.c (finish_fname): Only return the name if we're in
217 a function.
218
219 * decl.c (build_enumerator): Don't perform integral promotions on
220 non-integral constants.
221
222 * cvt.c (convert_to_void): Handle null op1.
223
224 * class.c (type_has_constexpr_default_constructor): Make sure the
225 caller stripped an enclosing array.
226 * init.c (perform_member_init): Strip arrays before calling it.
227
228 PR c++/47511
229 * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
230
231 2011-02-03 Dodji Seketeli <dodji@redhat.com>
232
233 PR c++/47398
234 * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
235 template parameters in account.
236
237 2011-02-03 Nathan Froyd <froydnj@codesourcery.com>
238
239 PR c++/46890
240 * parser.c (cp_parser_class_specifier): Fix setting of
241 want_semicolon.
242
243 2011-01-31 Jakub Jelinek <jakub@redhat.com>
244
245 PR c++/47416
246 * semantics.c (build_data_member_initialization): Handle
247 STATEMENT_LIST always instead of just for CLEANUP_BODY.
248
249 2011-01-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
250
251 * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
252 LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
253
254 2011-01-29 Dodji Seketeli <dodji@redhat.com>
255
256 PR c++/47311
257 * cp-tree.h (fixup_template_parms): Declare.
258 * pt.c (end_template_parm_list): Do not fixup template parms here.
259 (fixup_template_parms): Remove static. Fix typo in the
260 comments. Remove useless code statement.
261 (fixup_template_parm): For a template template parameter, fixup
262 its attributes before fixing up its type.
263 * parser.c
264 (cp_parser_template_declaration_after_export): After parsing
265 template parameters fixup their types.
266
267 2011-01-26 Jakub Jelinek <jakub@redhat.com>
268
269 PR c++/47476
270 * semantics.c (potential_constant_expression_1): Handle
271 TRUTH_XOR_EXPR.
272
273 2011-01-26 Dave Korn <dave.korn.cygwin@gmail.com>
274
275 PR c++/43601
276 * semantics.c (expand_or_defer_fn_1): Handle it.
277 * decl2.c (decl_needed_p): Likewise.
278
279 2011-01-21 Jason Merrill <jason@redhat.com>
280
281 PR c++/47041
282 * semantics.c (build_constexpr_constructor_member_initializers):
283 Handle trivial copy.
284
285 2011-01-21 Jakub Jelinek <jakub@redhat.com>
286
287 PR c++/47388
288 * semantics.c (begin_for_stmt): If -fno-for-scope, don't
289 assume init must be NULL if scope is NULL.
290 (begin_range_for_stmt): Likewise.
291
292 2011-01-21 Jason Merrill <jason@redhat.com>
293
294 PR c++/46552
295 * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
296
297 PR c++/46977
298 * semantics.c (potential_constant_expression_1): Split out from
299 potential_constant_expression. Add want_rval parm. Handle
300 template expression forms. Don't enforce restriction on address
301 of automatic variable here. Add a couple of diagnostics that
302 had been missing.
303 (require_potential_constant_expression): New entry point.
304 (build_data_member_initialization, register_constexpr_fundef): Adjust.
305 (maybe_constant_value): Check potential_constant_expression.
306 * pt.c (fold_non_dependent_expr_sfinae): Likewise.
307 * tree.c (build_vec_init_expr): Adjust.
308
309 2011-01-19 Jakub Jelinek <jakub@redhat.com>
310
311 PR c++/47303
312 * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
313 or DECL_EXTERNAL.
314
315 2011-01-17 Jason Merrill <jason@redhat.com>
316
317 PR c++/47067
318 * semantics.c (base_field_constructor_elt): New fn.
319 (cxx_eval_bare_aggregate): Use it.
320 (build_data_member_initialization): Leave COMPONENT_REF for
321 vfield inits.
322
323 2011-01-14 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
324
325 * parser.c (cp_parser_range_for): Remove the "unused variable" warning
326 workaround.
327
328 2011-01-15 Giovanni Funchal <gafunchal@gmail.com>
329 Jonathan Wakely <jwakely.gcc@gmail.com>
330
331 PR c++/33558
332 * decl.c (grokdeclarator): Reject mutable reference members.
333
334 2011-01-14 Jason Merrill <jason@redhat.com>
335
336 PR c++/47289
337 * pt.c (coerce_template_parms): Fix error recovery.
338
339 PR c++/46903
340 * typeck2.c (check_narrowing): Only check arithmetic types.
341
342 PR c++/46688
343 * tree.c (build_vec_init_expr): Handle flexible array
344 properly.
345
346 2011-01-13 Kai Tietz <kai.tietz@onevision.com>
347
348 PR c++/47213
349 * cp-tree.h (CLASSTYPE_VISIBILITY): Use
350 TYPE_MAIN_DECL instead of TYPE_NAME.
351 (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
352 * decl2.c (determine_visibility): Add check
353 of CLASS_TYPE_P for underlying_type.
354
355 2011-01-12 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
356
357 * cp-tree.h (begin_for_scope): New prototype.
358 (begin_for_stmt): Update prototype.
359 (begin_range_for_stmt): Update prototype.
360 * init.c (build_vec_init): Update call to begin_for_stmt.
361 * parser.c (cp_parser_for): New.
362 (cp_parser_c_for): Add three new parameters.
363 (cp_parser_range_for): Likewise. Most parsing code removed.
364 (cp_parser_iteration_statement): Call cp_parser_for instead of
365 cp_parser_c_for and cp_parser_range_for.
366 (cp_parser_for_init_statement): Add new parameter and return type.
367 (cp_parser_block_declaration): Update call to
368 cp_parser_simple_declaration.
369 (cp_parser_simple_declaration): Add new parameter.
370 Update call to cp_parser_init_declarator.
371 (cp_parser_init_declarator): Add new parameter.
372 * pt.c (tsubst_expr): Update call to begin_for_stmt.
373 * semantics.c (begin_for_scope): New.
374 (begin_for_stmt): Add two new parameters.
375 (begin_range_for_stmt): Likewise.
376
377 2011-01-12 Nicola Pero <nicola.pero@meta-innovation.com>
378
379 * parser.c (cp_parser_objc_at_property_declaration): Improved
380 error message.
381
382 2011-01-11 Dodji Seketeli <dodji@redhat.com>
383
384 PR debug/46955
385 * cp-lang.c (get_template_innermost_arguments_folded)
386 (get_template_argument_pack_elems_folded)
387 (template_arg_needs_folding, fold_cplus_constants): New static
388 functions.
389 (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
390 get_template_innermost_arguments_folded.
391 (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
392 get_template_argument_pack_elems_folded.
393
394 2011-01-11 Jason Merrill <jason@redhat.com>
395
396 PR c++/46658
397 * init.c (build_new_1): Handle value-init in templates differently.
398
399 PR c++/45520
400 * tree.c (maybe_dummy_object): Check current_class_ref against
401 context, not current_class_type.
402
403 2011-01-08 Nicola Pero <nicola.pero@meta-innovation.com>
404
405 PR objc/47078
406 * parser.c (cp_parser_objc_typename): If the type is unknown, for
407 error recovery purposes behave as if it was not specified so that
408 the default type is used.
409
410 2011-01-07 Jakub Jelinek <jakub@redhat.com>
411
412 PR c++/47022
413 * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
414 for the second build_x_va_arg argument.
415
416 2011-01-05 Tom Tromey <tromey@redhat.com>
417
418 * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
419 (lvalue_or_else): Likewise.
420
421 2011-01-01 Kai Tietz <kai.tietz@onevision.com>
422
423 PR target/38662
424 * tree.c (cxx_type_hash_eq):
425 Allow METHOD_TYPE, too.
426
427 \f
428 Copyright (C) 2011 Free Software Foundation, Inc.
429
430 Copying and distribution of this file, with or without modification,
431 are permitted in any medium without royalty provided the copyright
432 notice and this notice are preserved.