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