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