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