]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/cp/ChangeLog
Makefile.in (libgcc-support, [...]): Add emutls.c.
[thirdparty/gcc.git] / gcc / cp / ChangeLog
CommitLineData
8893239d
RH
12007-02-10 Richard Henderson <rth@redhat.com>, Jakub Jelinek <jakub@redhat.com>
2
3 * decl.c (grokvardecl): Don't error if !have_tls.
4 (grokdeclarator): Likewise.
5 * parser.c (cp_parser_omp_threadprivate): Likewise.
6
e02a048f
JJ
72007-02-07 Jakub Jelinek <jakub@redhat.com>
8
9 PR c++/30703
10 * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
11 parameters and result decls in omp clauses.
12 (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
13 by reference.
14
583c0b05
DM
152007-02-05 Dirk Mueller <dmueller@suse.de>
16
17 PR bootstrap/30510
18 * parser.c (cp_parser_class_specifier): Always initialize bases.
19
4fe70b31
PB
202007-02-05 Paolo Bonzini <bonzini@gnu.org>
21
22 * cp-tree.h (OMP_ATOMIC_CODE): Delete.
23 (OMP_ATOMIC_DEPENDENT_P): Rewrite.
24 * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
25 expressions.
26 * semantics.c (finish_omp_atomic): Store a whole expression node
27 in operand 1, and integer_zero_node in operand 0, for dependent
28 OMP_ATOMIC. Rewrite to make flow easier to understand.
29
b10fc6f5
GDR
302007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
31
32 * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
33
3b426391
KH
342007-02-04 Kazu Hirata <kazu@codesourcery.com>
35
36 * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
37 parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
38
f1283f8f
DG
392007-02-03 Douglas Gregor <doug.gregor@gmail.com>
40
41 * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
42 keyword warning to -Wc++0x-compat.
43
5e32a5cf
GDR
442007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
45
46 * decl.c (grokdeclarator): Update documentation.
47
3e66d096
JJ
482007-02-02 Jakub Jelinek <jakub@redhat.com>
49
50 PR c++/30536
51 * decl.c (grokdeclarator): If __thread is used together with
52 a storage class other than extern and static, clear thread_p
53 after issuing diagnostics and fall through to checking the
54 storage class.
55
5e203bf8
RS
562007-01-30 Roger Sayle <roger@eyesopen.com>
57
58 * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
59 calculating the size of an array (to avoid recursive errors).
60
b9edb4b1
MLI
612007-01-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
62
63 PR c++/24745
64 * typeck.c (build_binary_op): Fix logic for warning. Move warning
65 to -Wpointer-arith.
66 * call.c (convert_like_real): Don't warn when converting to
67 boolean type.
68
c616e51b
MLI
692007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
70
71 * decl.c (pop_label): Replace warning with call to
72 warn_for_unused_label.
73
5cf10afb
AP
742007-01-28 Andrew Pinski <pinskia@gmail.com>
75
76 PR C++/28988
77 * semantics.c (finish_pseudo_destructor_expr): Check the
78 destrutor name by calling check_dtor_name.
79
54654d29
DG
802007-01-24 Douglas Gregor <dgregor@osl.iu.edu>
81
82 * lex.c (D_CPP0X): Rename.
83 (D_CXX0X): To this.
84 (reswords): D_CPP0X -> D_CXX0X.
85 (init_reswords): Ditto.
86 * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
87 of C++0x keywords as identifiers.
88
815951d8
SM
892007-01-23 Simon Martin <simartin@users.sourceforge.net>
90
91 PR c++/27492
92 * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
93 function decls.
94
a99e5cb4
ILT
952007-01-23 Ian Lance Taylor <iant@google.com>
96
97 * typeck.c (convert_for_assignment): Only warn about a = b = c
98 when converting to bool.
99
dc569621
RS
1002007-01-23 Roger Sayle <roger@eyesopen.com>
101
102 * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
103 TREE_OVERFLOW.
104 * typeck.c (ignore_overflows): Remove the remaining uses of
105 TREE_CONSTANT_OVERFLOW.
106
77dbd49b
JH
1072007-01-20 Jan Hubicka <jh@suse.cz>
108
109 * decl2.c (start_objects, start_static_storage_duration_function):
110 Do not make the functions uninlinable.
111
efb7e1e0
ILT
1122007-01-17 Ian Lance Taylor <iant@google.com>
113
114 * class.c (add_method): Call VEC_reserve_exact rather than passing
115 a negative size to VEC_reserve.
116
6f9f76e3
SM
1172007-01-11 Simon Martin <simartin@users.sourceforge.net>
118
119 PR c++/29573
120 * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
121
50ef2c18
MM
1222007-01-10 Mark Mitchell <mark@codesourcery.com>
123
124 PR c++/28999
125 * decl.c (make_typename_type): If the qualified name is not a
126 type, issue an error.
127 * parser.c (cp_parser_elaborated_type_specifier): Fix comment
128 formatting.
129
157600d0
GK
1302007-01-08 Geoffrey Keating <geoffk@apple.com>
131
132 * rtti.c: Include target.h.
133 (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
134 don't emit typeinfo for fundamental types as weak.
135 * Make-lang.in (cp/rtti.o): Update and correct dependencies.
136
2ac7cbb5
RG
1372007-01-08 Richard Guenther <rguenther@suse.de>
138
139 * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
140
00c8e9f6
MS
1412007-01-08 Mark Shinwell <shinwell@codesourcery.com>
142
143 * call.c (standard_conversion): Pass flag to
144 vector_types_convertible_p to disallow emission of note.
145 * typeck.c (convert_for_assignment): Pass flag to
146 vector_types_convertible_p to allow emission of note.
147 (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
148 to disallow emission of note.
149
16fd4d2d
MLI
1502007-01-07 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
151
152 PR c++/28986
153 * typeck.c (build_binary_op): Call overflow_warning if
154 TREE_OVERFLOW_P is true for the result and not for any of the
155 operands.
156
fc40d49c
LM
1572007-01-06 Lee Millward <lee.millward@codesourcery.com>
158
159 PR c++/19439
160 * class.c (add_method): Don't wait until template
161 instantiation time to complain about duplicate methods.
162
59c0753d
MLI
1632007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
164
165 PR c/19978
166 * semantics.c (finish_unary_op_expr): Warn only if result
167 overflowed and operands did not.
168
b3c6d2ea
ILT
1692007-01-05 Ian Lance Taylor <iant@google.com>
170
171 * typeck.c (build_binary_op): Warn about comparing a non-weak
172 address to NULL.
173
3d761c46
DG
1742007-01-05 Douglas Gregor <doug.gregor@gmail.com>
175
176 * pt.c (tsubst): Propagate the need for structural equality checks
177 when reducing the level of template parameters.
178
c3e188fc
KH
1792007-01-03 Kazu Hirata <kazu@codesourcery.com>
180
181 * pt.c: Fix a comment typo.
182
fbc8d2d3
ILT
1832006-01-02 Ian Lance Taylor <iant@google.com>
184
185 * semantics.c (maybe_convert_cond): Optionally warn when using an
186 assignment as a condition.
187 * typeck.c (convert_for_assignment): Optionally warn about
188 assigning the result of an assignment to a bool.
189
410cf6e6
DG
1902007-01-02 Douglas Gregor <doug.gregor@gmail.com>
191
192 * pt.c (canonical_template_parms): Correct typo in comment.
193
06d40de8
DG
1942007-01-02 Douglas Gregor <doug.gregor@gmail.com>
195
196 * typeck.c (structural_comptypes): Renamed from "comptypes".
197 (comptypes): Use canonical type information to perform fast type
198 comparison. When VERIFY_CANONICAL_TYPES, verify that the
199 canonical type comparison returns the same results as we would see
200 from the current, structural check. Support COMPARE_STRUCTURAL
201 when we need structural checks.
202 * decl.c (typename_compare): Fix comment.
203 (build_typename_type): TYPENAME_TYPE nodes require structural
204 equality checks, because they resolve different based on the
205 current class type.
206 (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
207 require structural equality checks (for now).
208 (build_ptrmemfunc_type): Build the canonical pointer to member
209 function type.
210 (compute_array_index_type): Whenever we build a new index type
211 to represent the size of an array in a template, we need to mark
212 this index type as requiring structural equality. This goes for
213 arrays with value-dependent sizes with the current ABI, or all
214 arrays with ABI-1.
215 * tree.c (cplus_array_hash): New.
216 (struct cplus_array_info): New.
217 (cplus_array_compare): New.
218 (cplus_array_htab): New.
219 (build_cplus_array_type_1): Use a hash table to cache the array
220 types we build. Build the canonical array type for each array
221 type.
222 (cp_build_qualified_type_real): When building a cv-qualified array
223 type, use the hash table of array types and build canonical array
224 types as necessary.
225 (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
226 use structural equality (for now).
227 * cp-tree.h (COMPARE_STRUCTURAL): New.
228 * pt.c (canonical_template_parms): New.
229 (canonical_type_parameter): New.
230 (process_template_parm): Find the canonical type parameter.
231 (lookup_template_class): When we have named the primary template
232 type, set the canonical type for our template class to the primary
233 template type. If any of the template arguments need structural
234 equality checks, the template class needs structural equality
235 checks.
236 (tsubst): When reducing the level of a template template
237 parameter, we require structural equality tests for the resulting
238 parameter because its template parameters have not had their types
239 canonicalized. When reducing a template type parameter, find the
240 canonical reduced type parameter.
241 (any_template_arguments_need_structural_equality_p): New.
242
7c2da05e
SM
2432006-12-31 Simon Martin <simartin@users.sourceforge.net>
244
245 PR c++/29731
246 * parser.c (cp_parser_primary_expression): Return error_mark_node when
247 a statement-expression is found outside of a function body.
248
44cbf6e4 2492006-12-28 Kazu Hirata <kazu@codesourcery.com>
ca01388d 250
036bcce8
KH
251 * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
252 Remove.
ca01388d 253
44cbf6e4
KH
254 * decl2.c: Fix a comment typo.
255
e5b44dfb
AP
2562006-12-21 Andrew Pinski <pinskia@gmail.com>
257
258 PR C++/30225
259 * decl.c (cxx_builtin_function): Only copy the decl if adding
260 it to the std namespace.
261
b3c4918f
AP
2622006-12-21 Andrew Pinski <pinskia@gmail.com>
263
264 PR C++/30168
265 * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
266
48c9a7f0
KH
2672006-12-22 Kazu Hirata <kazu@codesourcery.com>
268
269 * decl.c: Fix a coment typo.
270
dfdec7a7
ILT
2712006-12-18 Ian Lance Taylor <iant@google.com>
272
273 * decl.c (start_preparsed_function): Add support for
274 -Wmissing-declarations.
275
d6b418fa
SM
2762006-12-16 Simon Martin <simartin@users.sourceforge.net>
277
278 PR c++/29475
279 * cp-tree.h (struct deferred_access_check): New structure to represent a
280 deferred access check. It replaces the previous representation as a tree.
281 (get_deferred_access_checks): Return a vector of struct
282 deferred_access_check instead of a tree list.
283 (perform_access_checks): Take a vector of struct deferred_access_check
284 instead of a tree list.
285 * semantics.c (struct deferred_access): Store the deferred access checks
286 as a vector of struct deferred_access_check instead of a tree list.
287 (push_deferring_access_checks): Handle the change in struct
288 deferred_access.
289 (get_deferred_access_checks): Likewise.
290 (pop_to_parent_deferring_access_checks): Likewise.
291 (perform_or_defer_access_check): Likewise.
292 (perform_access_checks): Take a vector of struct deferred_access_check
293 instead of a tree list.
294 * parser.c (struct tree_check): New structure to store various data
295 associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
296 (struct cp_token): Changed the value field to be a union with a pointer to
297 a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
298 tokens and a tree field for all other tokens.
299 (eof_token): Adjusted due to the change in struct cp_token.
300 (cp_lexer_get_preprocessor_token): Likewise.
301 (cp_lexer_purge_token): Likewise.
302 (cp_lexer_purge_tokens_after): Likewise.
303 (cp_lexer_print_token): Likewise.
304 (cp_parser_error): Likewise.
305 (cp_parser_identifier): Likewise.
306 (cp_parser_string_literal): Likewise.
307 (cp_parser_primary_expression): Likewise.
308 (cp_parser_unqualified_id): Likewise.
309 (cp_parser_parenthesized_expression_list): Likewise.
310 (cp_parser_storage_class_specifier_opt): Likewise.
311 (cp_parser_function_specifier_opt): Likewise.
312 (cp_parser_type_specifier): Likewise.
313 (cp_parser_simple_type_specifier): Likewise.
314 (cp_parser_initializer_list): Likewise.
315 (cp_parser_member_specification_opt): Likewise.
316 (cp_parser_attribute_list): Likewise.
317 (cp_parser_objc_expression): Likewise.
318 (cp_parser_objc_protocol_qualifiers): Likewise.
319 (cp_parser_objc_selector): Likewise.
320 (cp_parser_objc_declaration): Likewise.
321 (cp_parser_objc_statement): Likewise.
322 (cp_parser_omp_clause_name): Likewise.
323 (cp_parser_omp_clause_default): Likewise.
324 (cp_parser_omp_clause_schedule): Likewise.
325 (cp_parser_omp_parallel): Likewise.
326 (cp_parser_initial_pragma): Likewise.
327 (pragma_lex): Likewise.
328 (cp_parser_pre_parsed_nested_name_specifier): Likewise.
329 (cp_parser_nested_name_specifier_opt): Likewise.
330 Use cp_token::u::tree_check_value to save the token's value, the
331 associated deferred checks and its qualifying scope.
332 (cp_parser_template_id): Likewise.
333 (cp_parser_template_declaration_after_export): Adjusted the call to
334 get_deferred_access_checks.
335 (cp_parser_init_declarator): Take the access checks as a vector of struct
336 deferred_access_check instead of a tree list.
337 (cp_parser_single_declaration): Likewise.
338 (cp_parser_perform_template_parameter_access_checks): Likewise.
339 (cp_parser_simple_declaration): Adjusted the call to
340 cp_parser_init_declarator.
341 (cp_parser_explicit_specialization): Adjusted the call to
342 cp_parser_single_declaration.
343
2a67bec2
ILT
3442006-12-13 Ian Lance Taylor <iant@google.com>
345
346 PR c++/19564
347 PR c++/19756
348 * parser.c (cp_parser_expression_stack_entry): Add field
349 lhs_type.
350 (cp_parser_binary_expression): Track tree code of left hand side
351 of expression. Use it when calling build_x_binary_op.
352 (cp_parser_selection_statement): Add if_p parameter. Change all
353 callers. Warn about ambiguous else.
354 (cp_parser_statement): Add if_p parameter. Change all callers.
355 (cp_parser_implicitly_scoped_statement): Likewise.
356 * typeck.c (build_x_binary_op): Add parameters arg1_code and
357 arg2_code. Change all callers. Call warn_about_parentheses.
358 * cp-tree.h (build_x_binary_op): Update declaration.
359
253e0d15
MLI
3602006-12-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
361
362 * decl.c (build_enumerator): Update error message to match C
363 front-end.
364
8a4a83ed
JH
3652006-12-11 Jan Hubicka <jh@suse.cz>
366
367 * decl2.c (var_finalized_p): Update for renamed varpool functions.
368
566c6181
ZW
3692006-12-09 Zack Weinberg <zackw@panix.com>
370
371 * parser.c (yydebug, enum pragma_omp_clause): Delete.
372
9ba7a2f2
MM
3732006-12-07 Mark Mitchell <mark@codesourcery.com>
374
375 PR c++/29732
376 * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
377 (explicit_class_specialization_p): Declare.
378 * pt.c (explicit_class_specialization_p): New function.
379 * parser.c (cp_parser_init_declarator): Check correct number of
380 template parameters for in-class function definitions.
381 (cp_parser_check_declrator_template_parameters): Stop looking for
382 template classes when we find an explicit specialization.
383
baa5bf11
LM
3842006-12-07 Lee Millward <lee.millward@codesourcery.com>
385
566c6181
ZW
386 PR c++/29980
387 * cp_parser_elaborated_type_specifier: Check
388 the return value of check_elaborated_type_specifier.
389
277264f8
MM
3902006-12-06 Mark Mitchell <mark@codesourcery.com>
391
392 PR c++/29730
393 * parser.c (cp_parser_init_declarator): Reject initialization of
394 functions.
395
76239779
MM
3962006-12-05 Mark Mitchell <mark@codesourcery.com>
397
7f1ba716
MM
398 PR c++/29729
399 * decl2.c (check_member_template): Move check for member
400 templates in local classes to ...
401 * parser.c (cp_parser_template_declaration_after_export):
402 ... here.
403
76239779
MM
404 PR c++/29728
405 * decl.c (check_array_designated_initializer): New function.
406 (maybe_deduce_size_from_array_init): Use it.
407 (reshape_init_array): Likewise.
408
07beea0d
AH
4092006-12-05 Aldy Hernandez <aldyh@redhat.com>
410
411 Merge from gimple-tuples-branch.
566c6181 412
07beea0d
AH
413 2006-10-05 Aldy Hernandez <aldyh@redhat.com>
414
415 * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
416 (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
417 (cxx_omp_clause_copy_ctor): Same.
418 (cxx_omp_clause_assign_op): Same.
419
420 2006-09-28 Aldy Hernandez <aldyh@redhat.com>
421
566c6181 422 * cp-tree.h (union lang_tree_node): Gimple statements do not
07beea0d
AH
423 have a TREE_CHAIN.
424 (TREE_INDIRECT_USING): Look in base.
425
26979bc2
JH
4262006-12-04 Jan Hubicka <jh@suse.cz>
427
428 * cp-objcp-common.c (cp_expr_size): Return NULL in the case
429 size is undefined.
430
7b5d1e27
MM
4312006-12-04 Mark Mitchell <mark@codesourcery.com>
432
2c05d05e
MM
433 PR c++/29733
434 * pt.c (tsubst_decl): Disallow variables of function type.
435
7b5d1e27
MM
436 PR c++/29632
437 * call.c (add_builtin_candidate): Do not permit NULL pointer
438 constants to be compared with template parameters.
439
8f6e6bf3
EB
4402006-12-04 Eric Botcazou <ebotcazou@adacore.com>
441
442 * pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
443 Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
444
dd90d2b2 4452006-12-03 Richard Henderson <rth@redhat.com>
566c6181 446 Andrew Pinski <pinskia@gmail.com>
dd90d2b2
RH
447
448 PR C++/14329
449 * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
450
54e67af0
AP
4512006-12-02 Andrew Pinski <andrew_pinski@playstation.sony.com>
452
453 PR C++/30033
454 * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
455
811895d5
KH
4562006-12-02 Kazu Hirata <kazu@codesourcery.com>
457
458 * name-lookup.c: Follow spelling conventions.
459
72c4a4ca
GK
4602006-12-01 Geoffrey Keating <geoffk@apple.com>
461
462 * decl.c (poplevel): Check DECL_INITIAL invariant.
463 (duplicate_decls): Preserve DECL_INITIAL when eliminating
464 a new definition in favour of an old declaration.
465 (start_preparsed_function): Define and document value of
466 DECL_INITIAL before and after routine.
467 (finish_function): Check DECL_INITIAL invariant.
566c6181
ZW
468 * parser.c
469 (cp_parser_function_definition_from_specifiers_and_declarator):
72c4a4ca
GK
470 Skip duplicate function definitions.
471
01c15146
VR
4722006-12-01 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
473
474 PR c++/30022
475 * typeck.c (type_after_usual_arithmetic_conversions):
476 Fix assertion for vector types.
477 (build_binary_op): Use temporary for inner type of vector types.
478
c3a88be8
RM
4792006-12-01 Ryan Mansfield <rmansfield@qnx.com>
480
54e67af0 481 PR c++/29066
c3a88be8
RM
482 * typeck.c (build_binary_op): Fix pointer to member function
483 comparison for ptrmemfunc_vbit_in_delta targets.
484
1891dec4
DM
4852006-12-01 Dirk Mueller <dmueller@suse.de>
486
487 PR c++/18313
488 * decl.c (grokdeclarator): Warn for type qualifiers on return
489 type for non-dependent types.
490 * pt.c (tsubst_function_type): Warn for type qualifiers on
491 return type for dependent types.
492
d71176b6
GK
4932006-11-30 Geoffrey Keating <geoffk@apple.com>
494
495 * rtti.c (get_tinfo_decl): Handle return value from
496 pushdecl_top_level_and_finish.
497
566c6181 4982006-11-29 Lee Millward <lee.millward@codesourcery.com>
7f9faf5e
LM
499
500 PR c++/29022
501 * parser.c (cp_parser_class_head): Move processing
502 of any base classes to...
503 (cp_parser_class_specifier) ...here. Take an extra
504 tree* parameter for any base classes. Only process
505 them if the opening brace was found.
566c6181 506
da337784
JJ
5072006-11-28 Jakub Jelinek <jakub@redhat.com>
508
509 PR c++/29735
510 * decl.c (grokfndecl): Check main's type after applying
511 attributes, not before.
512
b9302915
MM
5132006-11-27 Mark Mitchell <mark@codesourcery.com>
514
515 * class.c (build_vcall_offset_vtbl_entries): Do not add vcall
516 entries for a primary construction virtual table.
517
56c7f9c1
MM
5182006-11-26 Mark Mitchell <mark@codesourcery.com>
519
520 PR c++/29886
521 * parser.c (cp_parser): Add in_function_body.
522 (cp_parser_new): Initialize it.
523 (cp_parser_primary_expression): Use parser->in_function_body
524 instead of at_function_scope_p.
525 (cp_parser_asm_definition): Likewise.
526 (cp_parser_direct_declarator): Likewise.
527 (cp_parser_class_specifier): Clear parser->in_function_body.
528 (cp_parser_constructor_declarator_p): Use parser->in_function_body
529 instead of at_function_scope_p.
530 (cp_parser_function_body_after_declarator): Set
531 parser->in_function_body.
532
55a3debe
DG
5332006-11-21 Douglas Gregor <doug.gregor@gmail.com>
534
566c6181 535 * cp-tree.def (STATIC_ASSERT): New.
55a3debe
DG
536 * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
537 * error.c (dump_decl): Handle STATIC_ASSERT.
538 * cp-tree.h (STATIC_ASSERT_CONDITION): New.
566c6181 539 (STATIC_ASSERT_MESSAGE): New.
55a3debe
DG
540 (STATIC_ASSERT_SOURCE_LOCATION): New.
541 (struct tree_static_assert): New.
542 (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
543 (union lang_tree_node): Add static_assertion.
566c6181 544 (finish_static_assert): Declare.
55a3debe
DG
545 * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
546 (pp_cxx_declaration): Handle STATIC_ASSERT.
547 * pt.c (instantiate_class_template): Handle
548 STATIC_ASSERT members.
566c6181 549 (tsubst_expr): Handle STATIC_ASSERT statements.
55a3debe 550 * semantics.c (finish_static_assert): New.
566c6181
ZW
551 * lex.c (D_CPP0X): New.
552 (reswords): Add static_assert keyword.
553 (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
554 * parser.c (cp_parser_block_declaration): Parse static
55a3debe 555 assertions.
566c6181
ZW
556 (cp_parser_static_assert): New.
557 (cp_parser_member_declaration): Parse static assertions.
55a3debe 558
4576ceaf
JJ
5592006-11-21 Jakub Jelinek <jakub@redhat.com>
560
fd5b5108
JJ
561 PR c++/29570
562 * decl.c (cp_finish_decl): Check for value dependent brace enclosed
563 scalar initializer.
564
4576ceaf
JJ
565 PR c++/29734
566 * cp-tree.h (WANT_VECTOR): Define.
567 (WANT_ARITH): Add WANT_VECTOR.
568 * cvt.c (build_expr_type_conversion): Handle vector types.
569 * typeck.c (build_unary_op): Add WANT_VECTOR to
570 build_expr_type_conversion flags.
571
02022f3a
SM
5722006-11-20 Simon Martin <simartin@users.sourceforge.net>
573
574 PR c++/29475
575 * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
576 extra argument that represents the declaration to use to print
577 potential error messages.
578 * init.c (build_offset_ref): Adjusted the call to
579 perform_or_defer_access_check.
580 * class.c (alter_access, resolve_address_of_overloaded_function):
581 Likewise.
566c6181 582 * decl.c (make_typename_type, make_unbound_class_template): Likewise.
02022f3a
SM
583 * search.c (lookup_member): Likewise.
584 * friend.c (add_friend): Likewise.
585 * parser.c (cp_parser_template_id,
586 cp_parser_pre_parsed_nested_name_specifier): Likewise.
587 * semantics.c (finish_non_static_data_member,
588 check_accessibility_of_qualified_id, finish_id_expression): Likewise.
589 (pop_to_parent_deferring_access_checks, perform_access_checks,
590 perform_or_defer_access_check): Adjusted the call to enforce_access.
591 * call.c (enforce_access): Use the new extra argument to build the
592 error message.
593 (build_op_delete_call): Adjusted the call to
594 perform_or_defer_access_check.
595 (build_over_call): Likewise.
566c6181 596
b9eae1a9
DM
5972006-11-16 Dirk Mueller <dmueller@suse.de>
598
599 * name-lookup.c (begin_scope): Use GGC_CNEW instead of
600 GGC_NEW and memset.
601
07b183fd
RS
6022006-11-13 Roger Sayle <roger@eyesopen.com>
603
604 * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
605 base type info initializer has the correct type.
606
48ffd0ef
MM
6072006-11-13 Mark Mitchell <mark@codesourcery.com>
608
609 PR c++/29518
610 * pt.c (coerce_template_parms): Do not skip_evaluation while
611 substituting template arguments.
612
f9f770a8
RG
6132006-11-11 Richard Guenther <rguenther@suse.de>
614
615 * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
616 FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
617
c79154c4
RS
6182006-11-03 Roger Sayle <roger@eyesopen.com>
619
620 * call.c (build_op_delete_call): Test user-visible type against
621 size_type_node, instead of against the internal type, sizetype.
622 * class.c (type_requires_array_cookie): Likewise.
623 * mangle.c (write_builtin_type) <INTEGER_TYPE>: Remove special
624 handling of TYPE_IS_SIZETYPE.
625 * typeck.c (type_after_usual_arithmetic_conversions): Remove
626 special case handling of TYPE_IS_SIZETYPE.
627 (comptypes): Likewise.
628
97388150
DS
6292006-11-01 Danny Smith <dannysmith@users.sourceforge.net>
630
631 * decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
632 if targetm.cxx.use_atexit_for cxa_atexit.
633 (start_cleanup_fn): Likewise.
634 (register_dtor_fn): Likewise.
635
e4305460
GK
6362006-09-25 Geoffrey Keating <geoffk@apple.com>
637
638 * decl2.c (cp_write_global_declarations): Rename from
639 cp_finish_file.
640 * cp-lang.c (finish_file): Don't call cp_finish_file.
641 * cp-tree.h (cp_write_global_declarations): Rename from
642 cp_finish_file.
643 * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
644 cp_write_global_declarations.
645
5880f14f
GK
6462006-10-31 Geoffrey Keating <geoffk@apple.com>
647
648 * name-lookup.c (get_anonymous_namespace_name): New.
649 (push_namespace_with_attribs): Use get_anonymous_namespace_name.
650 * decl2.c (start_objects): Update for rename of
651 get_file_function_name_long.
652
ebbc3ce1
DM
6532006-10-30 Dirk Mueller <dmueller@suse.de>
654
655 PR c++/28704
656 * decl.c (grokdeclarator): Duplicate diagnostic message
657 for easier translation.
f88d05c0 658 * decl.c (grokdeclarator): Fix line-wrapping.
ebbc3ce1 659
a1e45ff0
DM
6602006-10-30 Dirk Mueller <dmueller@suse.de>
661
662 PR c++/6321
663 * decl.c (grokfndecl): Use check_main_parameter_types.
664
e7c41c99
DM
6652006-10-30 Dirk Mueller <dmueller@suse.de>
666
667 PR c++/28669
668 * decl.c (grokfndecl): Duplicate warning message for
669 easier translation.
670
ff84991f
DM
6712006-10-30 Dirk Mueller <dmueller@suse.de>
672
673 * typeck.c (build_unary_op): Fix indenting. Use G_().
674
153ae66a
DM
6752006-10-29 Dirk Mueller <dmueller@suse.de>
676
677 PR c++/29089
678 * typeck.c (build_unary_op): Duplicate warning message
679 for easier translation.
680
0958b0d3
DM
6812006-10-29 Dirk Mueller <dmueller@suse.de>
682
683 PR c++/16307
684 * typeck.c (build_array_ref): Warn for char subscriptions
685 on pointers.
686
bd6f7848
KH
6872006-10-29 Kazu Hirata <kazu@codesourcery.com>
688
689 * decl.c: Fix a comment typo.
690
857d325a
AP
6912006-10-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
692
693 PR C++/29295
566c6181 694 * typeck.c (build_unary_op): Use same_type_p when comparing to
857d325a
AP
695 boolean type.
696
85f37826
DM
6972006-10-29 Dirk Mueller <dmueller@suse.de>
698
699 PR c++/29033
700 * typeck.c (build_binary_op): Duplicate warning message
701 for better translation.
702
7032006-10-23 Rafael Avila de Espindola <rafael.espindola@gmail.com>
c79efc4d
RÁE
704
705 * decl.c (builtin_function_1): Move common code to
706 add_builtin_function.
707 (builtin_function): Rename to cxx_builtin_function.
708 Change the signature.
709 * call.c: Include langhooks.h.
710 (build_java_interface_fn_ref): Replace calls to
711 builtin_function with add_builtin_function.
712 * Make-lang.in (cp/call.o): Depend on langhooks.h.
713 * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
714 cxx_builtin_function.
715 * cp-tree.h (builtin_function): Rename to cxx_builtin_function.
716 Change the signature.
717
6e4be1fa
NS
7182006-10-22 Nathan Sidwell <nathan@codesourcery.com>
719
720 PR c++/20647
721 * rtti.c (tinfo_base_init): The type info string is always global.
722
4c9fb870 7232006-10-20 Lee Millward <lee.millward@codesourcery.com>
566c6181
ZW
724 Mark Mitchell <mark@codesourcery.com>
725
726 PR c++/28053
727 * decl2.c (grokbitfield): Detect invalid non-integral
728 types earlier when possible.
4c9fb870 729
8e76c2bf
MS
7302006-10-18 Mark Shinwell <shinwell@codesourcery.com>
731
732 PR c++/26884
733 * typeck2.c (digest_init): Raise error upon attempts to
734 initialize arrays with variables.
735
566c6181
ZW
7362006-10-17 Lee Millward <lee.millward@codesourcery.com>
737
738 PR c++/27952
739 * cp-tree.h (xref_basetypes): Return bool instead of void.
740 * decl.c (xref_basetypes): Adjust definition. Return false
741 if the class bases are invalid.
742 * parser.c (cp_parser_class_head): Check the return value
743 from xref_basetypes.
72f8fc59 744
d19b84e9
MM
7452006-10-17 Mark Mitchell <mark@codesourcery.com>
746
4ac6f4c5
MM
747 PR c++/28261
748 * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
749 comment.
750
d19b84e9
MM
751 PR c++/28261
752 * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
753 function.
754 (cp_parser_constructor_declarator_p): Use it.
755 (cp_parser_check_type_definition): Return a value indicating
756 whether or not the definition is valid.
757 (cp_parser_enum_specifier): Skip invalid enum definitions.
758
c7b0e027
MM
7592006-10-17 Mark Mitchell <mark@codesourcery.com>
760
761 PR c++/29039
762 * typeck2.c (build_functional_cast): Don't zero-initialize
763 non-PODs; instead, call their constructors.
764 * method.c (synthesize_method): Always build mem-initializers, if
765 we're synthesizing the default constructor.
766
05b22df9
MM
7672006-10-17 Mark Mitchell <mark@codesourcery.com>
768
769 PR c++/27270
770 * decl.c (reshape_init_class): Move check for designated
771 to ...
772 * parser.c (cp_parser_initializer_list): ... here.
773 * pt.c (tsubst_copy_and_build): Use finish_compound_literal.
774
1082fd10
MM
7752006-10-16 Mark Mitchell <mark@codesourcery.com>
776
fb8549a1
MM
777 PR c++/27270
778 * typeck2.c (process_init_constructor_array): Reword comment.
779 * pt.c (tsubst_copy_and_built): Call reshape_init before calling
780 digest_init.
781
21864445
MM
782 PR c++/29408
783 * parser.c (cp_parser_using_declaration): Stop parsing when
784 something goes wrong with an access declaration.
785
b4c74ba2
MM
786 PR c++/29435
787 * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
788 types when their sizes are required. Refine test for VLAs.
789
1082fd10
MM
790 PR c++/28211
791 * parser.c (cp_parser_template_argument): Don't consider "&var" a
792 possible constant-expression.
793 * pt.c (convert_nontype_argument): Refine handling of arguments of
794 pointer type.
795
0b45aedd
MM
7962006-10-13 Mark Mitchell <mark@codesourcery.com>
797
798 PR c++/28506
799 * parser.c (function_declarator_p): New function.
800 (cp_parser_init_declarator): Use it.
801 (cp_parser_member_declaration): Likewise.
802
f19218e5
MM
8032006-10-12 Mark Mitchell <mark@codesourcery.com>
804
805 PR c++/29318
806 * rtti.c (get_tinfo_decl): Refuse to create type info objects for
807 variably modified types.
808
650fcd07
LM
8092006-10-12 Lee Millward <lee.millward@codesourcery.com>
810
811 PR c++/27961
812 * decl.c (start_decl): Return error_mark_node if a
813 function is initialized like a variable.
814 (check_var_type): If a variable of field is declared void,
815 set the type to error_mark_node.
816 (grokdeclarator): Check the return type of check_var_type.
817 * class.c (finish_struct_1): Robustify.
566c6181 818
f724eac4
MM
8192006-10-11 Mark Mitchell <mark@codesourcery.com>
820
821 PR c++/29175
822 * decl.c (check_initializer): Issue errors about trying to
823 initialize arrays whose elements have variable size.
824
26106542
LM
8252006-10-11 Lee Millward <lee.millward@codesourcery.com>
826
827 PR c++/29024
566c6181
ZW
828 * cp-tree (struct cp_decl_specifier_seq): Rename to
829 conflicting_specifiers_p
830 * parser.c (cp_parser_set_storage_class): Set
831 conflicting_specifiers_p for the input decl specifier
832 if a typedef specifier is present. Rename uses of
833 multiple_specifiers_p to conflicting_specifiers_p.
834 (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
835 class specifier has already been set for this declaration,
836 set conflicting_specifiers_p to true on the decl_specs.
837 * decl.c (grokdeclarator): Rename uses of
838 multiple_specifiers_p to conflicting_specifiers_p.
26106542 839
b5422ad7
BM
8402006-10-10 Brooks Moses <bmoses@stanford.edu>
841
842 * Make-lang.in: Added "c++.pdf" target support.
843
be0436d7
RG
8442006-10-10 Richard Guenther <rguenther@suse.de>
845
846 PR rtl-optimization/29323
847 * decl.c (finish_function): Set TREE_NOTHROW only for
848 functions that bind local.
849
a98d4769
RH
8502006-10-09 Richard Henderson <rth@redhat.com>
851
852 Revert emutls patch.
853
e701a32a
RH
8542006-10-04 Richard Henderson <rth@redhat.com>
855 Jakub Jelinek <jakub@redhat.com>
856
857 * decl.c (grokvardecl): Don't error if !have_tls.
858 (grokdeclarator): Likewise.
859 * parser.c (cp_parser_omp_threadprivate): Likewise.
860
981114e1
MM
8612006-10-03 Mark Mitchell <mark@codesourcery.com>
862
1cd7d7bf
MM
863 PR c++/29020
864 * friend.c (do_friend): Improve comments; add assertion.
865 * parser.c (cp_parser_nested_name_specifier_opt): Resolve
866 typenames for qualified names used in declarations, even when
867 caching qualified name lookup.
868
981114e1
MM
869 PR c++/29138
870 * decl2.c (grokfield): Don't handle access declarations here.
871 * parser.c (cp_parser_using_declaration): Handle access
872 declarations too.
873 (cp_parser_block_declaration): Adjust calls to
874 cp_parser_using_declaration.
875 (cp_parser_member_declaration): Likewise. Use
876 cp_parser_using_declaration to look for access_declarations.
877
95fb85c6
VR
8782006-10-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
879
880 PR c++/29291
881 * init.c (build_new): Check for invalid init.
882
3c17e16e
MM
8832006-10-02 Mark Mitchell <mark@codesourcery.com>
884
885 PR c++/29226
886 * typeck.c (cxx_sizeof_or_alignof_type): Tidy. In templates, do
887 not try to actually evaluate sizeof for a VLA type.
888
297d4105
MM
8892006-10-01 Mark Mitchell <mark@codesourcery.com>
890
891 PR c++/29105
892 * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
893 * semantics.c (baselink_for_fns): Build a baselink, even when
894 processing a template.
895
896 PR c++/29080
897 * parser.c (cp_parser_postfix_dot_deref_expression): Use
898 BASELINK_ACCESS_BINFO as the qualifying scope when calling
566c6181 899 adjust_result_of_qualified_name_lookup.
297d4105 900
60feef2c
LM
9012006-09-25 Lee Millward <lee.millward@codesourcery.com>
902
566c6181
ZW
903 PR c++/27329
904 PR c++/26938
905 * cp-tree.h (redeclare_class_template): Adjust declaration
906 to return bool instead of void.
907 * pt.c (redeclare_class_template): Update definition.
60feef2c 908 Return false on error.
566c6181 909 * decl.c (xref_tag): Return error_mark_node if
60feef2c 910 redeclare_class_template returned false.
9b910171
LM
911
912 PR c++/27667
566c6181 913 * cp-tree.h (begin_specialization): Return bool
9b910171 914 instead of void.
566c6181
ZW
915 * pt.c (check_specialization_scope): Likwise.
916 Adjust comment. Return false if a specialization
9b910171 917 isn't permitted in the current scope.
566c6181
ZW
918 (begin_specialization): Use the return value of
919 check_specialization_scope.
920 * parser.c (cp_parser_explicit_specialization): If
921 begin_specialization returned false, skip the rest
9b910171 922 of the specialization.
566c6181 923
b76d34e9
MM
9242006-09-21 Mark Mitchell <mark@codesourcery.com>
925
926 PR c++/29016
927 * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
928 BASELINK.
929
d2a8ac2c
LM
9302006-09-21 Lee Millward <lee.millward@codesourcery.com>
931
932 PR c++/28861
933 * decl.c (shadow_tag): Return error_mark_node
566c6181 934 if maybe_process_partial_specialization failed.
32273f9f
LM
935
936 PR c++/28303
566c6181
ZW
937 * decl.c (grokdeclarator): Return error_mark_node on
938 declaration with two or more data types.
939
756ccd2a
DS
9402006-09-20 Danny Smith <dannysmith@users.sourceforge.net>
941
942 PR target/27650
943 * class.c (check_for_override): Remove dllimport from virtual
944 methods.
945
ddd039d5
SB
9462006-09-18 Steven Bosscher <steven@gcc.gnu.org>
947
948 PR c++/29087
949 * parser.c (cp_parser_labeled_statement): Return nothing. Do
950 not take in_statement_expr and in_compound as arguments. Rename
951 to cp_parser_label_for_labeled_statement. Parse only the label,
952 not the statement.
953 (cp_parser_statement): Parse the statement of a labeled-statement
954 from here, using tail recursion.
955
9bdb04a2
AP
9562006-09-14 Andrew Pinski <pinskia@physics.uc.edu>
957
958 PR C++/29002
959 * init.c (build_zero_init): If we have an error mark node for
960 the array size, return.
961
bc70af52
MM
9622006-09-10 Mark Mitchell <mark@codesourcery.com>
963
964 PR c++/28991
965 * cp-objcp-common.c (cxx_staticp): New function.
966 * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
967 * cp-tree.h (cxx_staticp): New function.
968
05f8c2d5
JM
9692006-09-09 Jason Merrill <jason@redhat.com>
970
971 PR c++/28996
972 * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
973
a7b9d08c
VR
9742006-09-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
975
976 PR c++/28858
977 * parser.c (cp_parser_skip_until_found): Rename to
978 cp_parser_skip_to_end_of_template_parameter_list. Remove last two
979 parameters. Track levels of '< ... >'. Stop at '{', '}', or ';'.
980 Reorganize. Adjust comment.
981 (cp_parser_template_declaration_after_export): Adjust call.
982 (cp_parser_enclosed_template_argument_list): Likewise.
983
158d56c4
AP
9842006-09-07 Andrew Pinski <pinskia@physics.uc.edu>
985
986 PR C++/28906
987 * init.c (build_new_1): Build a distinct type copy
988 for the array type that was returned from
989 build_cplus_array_type.
990
dbb87a8a
JM
9912006-09-07 Jason Merrill <jason@redhat.com>
992
5de1a1eb
JM
993 PR c++/27371
994 * cvt.c (convert_to_void): Enable previous change.
995
dbb87a8a
JM
996 PR c++/26957
997 * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
998 parms.
999
d4a200d3
SM
10002006-09-07 Simon Martin <simartin@users.sourceforge.net>
1001
1002 PR c++/28284
dbb87a8a
JM
1003 * pt.c (fold_non_dependent_expr): Make sure expr is not
1004 dereferenced if it is NULL.
d4a200d3 1005
c533e34d
ZK
10062006-09-06 Zak Kipling <zak@transversal.com>
1007
158d56c4 1008 PR c++/26195
c533e34d
ZK
1009 * decl.c (make_rtl_for_nonlocal_decl),
1010 (start_preparsed_function): Don't use lbasename on
1011 input_filename when calling get_fileinfo.
1012 * semantics.c (begin_class_definition): Likewise.
1013 * lex.c (cxx_make_type): Likewise.
1014 (handle_pragma_interface): Call get_fileinfo on input_filename,
1015 not on the parameter to the directive.
1016
6ee3ffe8
MM
10172006-09-06 Mark Mitchell <mark@codesourcery.com>
1018
1019 PR c++/28903
1020 * pt.c (tsubst): Use fold_non_dependent_expr to fold array
1021 dimensions.
1022
1023 PR c++/28886
1024 * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
1025 dimensions.
1026
ccbe00a4
JM
10272006-09-06 Jason Merrill <jason@redhat.com>
1028
c08cd4c1
JM
1029 PR c++/27371
1030 * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
1031 * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
1032 * tree.c (build_cplus_new): Set it.
1033
ccbe00a4 1034 PR c++/26696
566c6181 1035 * cvt.c (convert_to_void): Replace a subexpression with no side
ccbe00a4
JM
1036 effects with void_zero_node.
1037 * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
1038 (get_first_fn): Ditto.
1039 * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
1040
99818a52
JM
10412006-09-05 Jason Merrill <jason@redhat.com>
1042
5df1740d
JM
1043 PR c++/26571
1044 * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
1045 where the name is a type used incorrectly.
1046
a1a95249 1047 PR c++/26671
566c6181
ZW
1048 * typeck.c (maybe_warn_about_returning_address_of_local): Look
1049 through COMPONENT_REF and ARRAY_REF.
a1a95249 1050
99818a52
JM
1051 PR c++/26102
1052 * name-lookup.c (do_class_using_decl): Try to find the base even
1053 if bases_dependent_p.
566c6181 1054 * pt.c (type_dependent_expression_p): A USING_DECL is dependent.
99818a52
JM
1055
1056 PR c++/19809
1057 * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
1058
88525e1b
NS
10592006-09-04 Nathan Sidwell <nathan@codesourcery.com>
1060
1061 PR 23287 Revert my 2006-09-01 patch.
1062 * parser.c: Reverted.
1063 * pt.c: Reverted.
1064
b89c561c
LM
10652006-09-02 Lee Millward <lee.millward@codesourcery.com>
1066
88525e1b
NS
1067 PR c++/27670
1068 PR c++/27493
1069 PR c++/27494
1070 PR c++/27397
1071 * parser.c (cp_parser_template_parameter_list): Add
1072 invalid template parameters to the parameter list as
1073 error_mark_node.
b89c561c 1074
b2a06efa
JJ
10752006-09-02 Jakub Jelinek <jakub@redhat.com>
1076
07515729
JJ
1077 PR c++/28878
1078 * except.c (build_throw): Only set current_function_returns_abnormally
1079 if cfun is not NULL.
1080
b2a06efa
JJ
1081 PR c++/26917
1082 * repo.c (repo_file): Remove.
1083 (open_repo_file, reopen_repo_file_for_write): Return fopened
1084 FILE * instead of setting global repo_file variable.
1085 (init_repo): Adjust caller.
1086 (finish_repo): Likewise. Return instead of goto out before
1087 reopen_repo_file_for_write has been called.
1088
429b876b
NS
10892006-09-01 Nathan Sidwell <nathan@codesourcery.com>
1090
4860b874
NS
1091 PR c++/28705
1092 * semantics.c (finish_call_expr): Add assert.
1093 * name-lookup.c (lookup_arg_dependent): Check we found an overload
1094 or an object.
1095
429b876b
NS
1096 PR c++/23287
1097 * parser.c (cp_parser_id_expression): Add member_p
1098 argument. Update all callers.
1099 (cp_parser_unqualified_id): Likewise. Lookup a destructor name in
1100 the object's scope, if valid.
1101 (cp_parser_global_scope_opt): Add object_scope_valid_p. Update
1102 callers.
1103 (cp_parser_postfix_dot_deref_expression): Set object_scope.
1104 * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
1105
22002050
JM
11062006-08-30 Jason Merrill <jason@redhat.com>
1107
1108 PR c++/26670
1109 * class.c (check_field_decls): Don't unset TYPE_PACKED until all
1110 the fields have been processed.
1111
a2ef0979
AP
11122006-08-29 Andrew Pinski <pinskia@physics.uc.edu>
1113
1114 PR C++/28349
1115 * call.c (build_x_va_arg): Remove the reference type
1116 from the type before creating the pointer type.
1117
2de9107a
R
11182006-08-29 J"orn Rennecke <joern.rennecke@st.com>
1119
1120 PR c++/28139
1121 * except.c (expand_start_catch_block): Use correct types for bitwise
1122 copy.
1123
bed02d89
JM
11242006-08-28 Jason Merrill <jason@redhat.com>
1125
e883464c
JM
1126 PR c++/26670
1127 * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
1128 fields can't be packed.
1129
bed02d89 1130 PR c++/26577
566c6181 1131 * cvt.c (convert_to_void): Don't automatically load from volatiles
bed02d89
JM
1132 of TREE_ADDRESSABLE type.
1133
9ce387d9
VR
11342006-08-28 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1135
1136 PR c++/28860
1137 * cp-tree.h (maybe_process_partial_specialization): Return
1138 tree instead of void.
1139 * parser.c (cp_parser_class_head): Use return value of
1140 maybe_process_partial_specialization.
1141 * pt.c (maybe_process_partial_specialization): Return error_mark_node
1142 for broken specializations, TYPE otherwise. Check for template
1143 template parameters.
1144
99f4234a
MM
11452006-08-27 Mark Mitchell <mark@codesourcery.com>
1146
1147 PR c++/28058
1148 * pt.c (register_specialization): Return error_mark_node for
1149 specialization-after-instantiation.
1150 * decl2.c (mark_used): Mark the main function used when one of its
1151 clones is used.
566c6181 1152
bf87e098
LM
11532006-08-27 Lee Millward <lee.millward@codesourcery.com>
1154
e753d130
AP
1155 PR c++/26573
1156 * class.c (check_field_decls): Don't issue error about
1157 local classes containing static data members.
566c6181 1158
02ec74b9
JM
11592006-08-26 Joseph S. Myers <joseph@codesourcery.com>
1160
1161 PR c++/24009
1162 * parser.c (struct cp_token): Add input_file_stack_index.
1163 (eof_token): Update.
1164 (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
1165 (cp_lexer_set_source_position_from_token): Restore input file
1166 stack.
1167
0f67a82f
LM
11682006-08-26 Lee Millward <lee.millward@codesourcery.com>
1169
e753d130
AP
1170 PR c++/28736
1171 PR c++/28737
1172 PR c++/28738
1173 * pt.c (process_template_parm): Store invalid template
1174 parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
1175 (push_inline_template_parms_recursive): Check for template
1176 parameters having a TREE_VALUE of error_mark_node rather than
1177 check the parameter itself.
1178 (mangle_class_name_for_template): Likewise.
1179 (comp_template_parms): When comparing the individual template
1180 parameters, return 1 if either is error_mark_node.
1181 (current_template_args): Robustify.
1182 (redeclare_class_template): Likewise.
566c6181 1183
eff3a276
MM
11842006-08-26 Mark Mitchell <mark@codesourcery.com>
1185
1186 PR c++/28588
1187 * class.c (resolve_address_of_overloaded_function): Add
1188 access_path parameter. Perform access checks.
1189 (instantiate_type): Adjust call to
1190 resolve_address_of_overloaded_function. Remove unnecessary code.
1191 * tree.c (is_overloaded_fn): Document. Return 2 when there are
1192 acutally multiple functions.
1193 (really_overloaded_fn): Use is_overloaded_fn.
1194 * mangle.c (write_expression): Handle BASELINKs.
1195 * cp-tree.h (really_overloaded_fn): Return bool.
1196 (baselink_for_fns): Declare.
1197 * search.c (lookup_member): Check access for single static
1198 functions here.
1199 * pt.c (convert_nontype_argument_function): Handle BASELINKs.
1200 (tsubst_copy_and_build): Generate BASELINKs for template-ids.
1201 * semantics.c (finish_call_expr): Use baselink_for_fns.
1202 (baselink_for_fns): New function.
1203 (finish_id_expression): Use it.
1204 * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
1205
1206 PR c++/28595
1207 * pt.c (tsubst): Issue errors about attempts to create VLAs at
1208 template-instantiation time.
1209
398cd199
VR
12102006-08-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1211
7acf7efa
VR
1212 PR c++/28853
1213 * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
1214 template parameters. Improve error message for template type
1215 parameters.
1216
398cd199
VR
1217 PR c++/28852
1218 * cp-tree.h (grok_op_properties): Return bool instead of void.
1219 * decl.c (grokfndecl): Discard invalid operator declarations.
1220 (copy_fn_p): Revert change for PR 27547.
1221 (grok_op_properties): Return error status (true on success).
1222 * pt.c (tsubst_decl): Discard invalid operator declarations.
1223
2884e22c
MM
12242006-08-25 Mark Mitchell <mark@codesourcery.com>
1225
1226 PR c++/28056
1227 * decl.c (grokdeclarator): Disallow declarations with qualified
1228 names in local scopes.
1229
7d3bec9d
NS
12302006-08-25 Nathan Sidwell <nathan@codesourcery.com>
1231
1232 PR c++/27787
1233 * decl.c (make_typename_type): Only try and resolve it when
1234 context is not dependent. Refactor.
1235 * decl2.c (check_classfn): Push to class scope before looking for
1236 the function.
1237
a073516d
DS
12382006-08-24 Danny Smith <dannysmith@users.sourceforge.net>
1239
1240 PR driver/28528
1241 * g++spec.c (lang_specific_driver): Always check if we need to
1242 swallow a space-separated arg to '-x'.
1243 * lang-specs.h: Don't create ouput files for '-xc++-header'
1244 if -fsyntax-only.
1245
c9cbfca6
JM
12462006-08-23 Jason Merrill <jason@redhat.com>
1247
1248 PR c++/27714
566c6181 1249 * pt.c (push_template_decl_real): A friend template with class
c9cbfca6
JM
1250 scope isn't primary.
1251
12522006-08-23 Benjamin Smedberg <benjamin@smedbergs.us>
6c9384c3
BS
1253
1254 PR c++/28687
1255 * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
1256 Move -fno-rtti check to be more specific.
1257
a5c42740
JM
12582006-08-22 Jason Merrill <jason@redhat.com>
1259
1260 PR c++/23372
566c6181 1261 * call.c (build_over_call): Don't make a copy here if build_call
a5c42740
JM
1262 will make one too.
1263
c846e8cd
AP
12642006-08-22 Andrew Pinski <pinskia@physics.uc.edu>
1265
1266 PR C++/28450
1267 * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
1268 COMPLEX_TYPEs.
1269
5e8c38c2
SM
12702006-08-22 Simon Martin <simartin@users.sourceforge.net>
1271
1272 PR c++/28420
1273 * parser.c (cp_parser_postfix_expression): Make sure that the
1274 saved value for parser->type_definition_forbidden_message is
1275 restored before returning to avoid an invalid free().
1276
8e30dcf3
JM
12772006-08-22 Jason Merrill <jason@redhat.com>
1278
1279 PR c++/28659
566c6181 1280 * typeck.c (merge_types): If either of the types have the right
8e30dcf3
JM
1281 attributes, return that one.
1282
1283 * tree.c (cp_build_type_attribute_variant): Make sure we aren't
1284 doing this to class types.
1285 * typeck.c (original_type): Deal with type quals properly.
1286
c6c7698d
JM
12872006-08-21 Jason Merrill <jason@redhat.com>
1288
1289 PR c++/27115
1290 * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
1291 just leave the expression as it is.
1292 (finish_stmt_expr): If the statement-expression has class type,
1293 wrap it in a TARGET_EXPR.
1294 * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
1295 CLEANUP_POINT_EXPR.
1296 * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
1297
18ff35c6
LM
12982006-08-21 Lee Millward <lee.millward@codesourcery.com>
1299
1300 PR c++/26269
c6c7698d
JM
1301 * decl.c (duplicate_decls): Return early if either
1302 newdecl or olddecl is error_mark_node.
623c65f1
LM
1303
1304 PR c++/28505
c6c7698d
JM
1305 * decl.c (grokdeclarator): Return early after
1306 issuing diagnostic about an incomplete type.
653109bd
LM
1307
1308 PR c++/28741
c6c7698d
JM
1309 * tree.c (decl_anon_ns_mem_p): Robustify.
1310 * decl2.c (determine_visibility): Likewise.
566c6181 1311
015c2c66
MM
13122006-08-20 Mark Mitchell <mark@codesourcery.com>
1313
1314 PR c++/28341
1315 * tree.c (cast_valid_in_integral_constant_expression_p): New
1316 function.
1317 * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
1318 * pt.c (tsubst_expr): Add integral_constant_expression_p
1319 parameter.
1320 (fold_non_dependent_expr): Adjust callers of
1321 tsubst_{expr,copy_and_build}.
1322 (tsubst_friend_function): Likewise.
1323 (tsubst_template_arg): Likewise.
1324 (tsubst_default_argument): Likewise.
1325 (tsubst_decl): Likewise.
1326 (tsubst): Likewise.
1327 (tsubst_omp_clasuses): Likewise.
1328 (regenerate_decl_fromp_template): Likewise.
1329 (instantiate_decl): Likewise.
1330 (tsubst_initializer_list): Likewise.
1331 (tsubst_enum): Likewise.
1332 (tsubst_expr): Use RECUR throughout.
1333 (tsubst_copy_and_build): Change definition of RECUR. Do not allow
1334 invalid casts in integral constant expressions.
1335 * parser.c (cp_parser_postfix_expression): Use
1336 cast_valid_in_integral_constant_expression_p.
1337 (cp_parser_cast_expression): Likewise.
1338 (cp_parser_functional_cast): Likewise.
1339
1340 PR c++/28346
1341 * pt.c (tsubst_qualified_id): Do not strip references from
566c6181 1342 OFFSET_REFs.
015c2c66 1343
a97728cf
VR
13442006-08-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1345
04499540
VR
1346 PR c++/28606
1347 * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
1348 Fix formatting.
1349 (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
1350 for valid type-names.
1351 (cp_parser_unqualified_id): Fix error handling for destructors.
1352
b646edb8
VR
1353 PR c++/28710
1354 * decl.c (xref_tag): Improve error message. Return early on error.
1355
a97728cf
VR
1356 PR c++/28711
1357 * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.
1358
6d4d7b0e
PB
13592006-08-17 Paolo Bonzini <bonzini@gnu.org>
1360
1361 PR c++/28573
1362 * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
1363
bd289f54
AP
13642006-08-16 Andrew Pinski <pinskia@physics.uc.edu>
1365
1366 PR c++/28302
1367 * typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
6d4d7b0e 1368 perform_integral_promotions for non integral type.
bd289f54 1369
9180c238
JM
13702006-08-16 Jason Merrill <jason@redhat.com>
1371
1372 PR c++/28385
1373 * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
1374 if arg is a function.
1375
d5d1d256
VR
13762006-08-16 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1377
1378 PR c++/28593
1379 * init.c (build_new): Return early on invalid placement.
1380
d47e3adf
LM
13812006-08-15 Lee Millward <lee.millward@codesourcery.com>
1382
1383 PR c++/28594
1384 * pt.c (process_template_parm): Robustify.
566c6181 1385
b52dbbf8
SE
13862006-08-14 Steve Ellcey <sje@cup.hp.com>
1387
1388 PR c++/28288
1389 PR c++/14556
1390 * operators.def: Remove <?, ?>, <?=, and >?= operators.
1391 * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
1392 (cp_parser_warn_min_max): Remove.
1393
abab4604
JM
13942006-08-11 Jason Merrill <jason@redhat.com>
1395
1396 PR c++/28559
1397 * parser.c (cp_parser_elaborated_type_specifier): Also ignore
1398 attributes applied to a TYPENAME_TYPE.
1399
2d8ba2c7
LM
14002006-08-09 Lee Millward <lee.millward@codesourcery.com>
1401
abab4604
JM
1402 PR c++/28637
1403 * pt.c (coerce_template_parms): Copy across the
1404 invalid template arguments to the new template inner arguments.
1405 (retrieve_specialization): Robustify.
2d8ba2c7 1406
abab4604
JM
1407 PR c++/28638
1408 * pt.c (coerce_template_template_parms): Robustify.
2d8ba2c7 1409
abab4604
JM
1410 PR c++/28639
1411 * error.c (dump_template_parms): Robustify.
2d8ba2c7 1412
abab4604
JM
1413 PR c++/28640
1414 * pt.c (redeclare_class_template): Robustify.
2d8ba2c7 1415
abab4604
JM
1416 PR c++/28641
1417 * pt.c (type_unification_real): Robustify.
566c6181 1418
cc011e7f
LM
14192006-08-03 Lee Millward <lee.millward@codesourcery.com>
1420
abab4604
JM
1421 PR c++/28347
1422 * decl.c (start_decl): Return error_mark_node if a
1423 diagnostic was issed for an invalid typedef initialization.
566c6181 1424
4a2f6dc0
VR
14252006-08-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1426
c0dc47a8
VR
1427 PR c++/27508
1428 * parser.c (cp_parser_unqualified_id): Check for invalid scopes
1429 when parsing destructor names.
1430
4a2f6dc0
VR
1431 PR c++/28274
1432 * decl.c (duplicate_decls): Call check_default_args here.
1433 (start_preparsed_function): Do not call check_default_args.
1434 * name-lookup.c (pushdecl_maybe_friend): Only call
1435 check_default_args if duplicate_decls got bypassed.
1436
cfc581fe
RG
14372006-08-02 Richard Guenther <rguenther@suse.de>
1438
1439 PR c++/28479
1440 Revert
1441 2006-07-05 Richard Guenther <rguenther@suse.de>
1442 Andrew Pinski <pinskia@gcc.gnu.org>
1443
1444 PR c++/27084
1445 * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1446 top level qualifiers for pointer type comparisons.
1447
6f67f000
MM
14482006-08-02 Mark Mitchell <mark@codesourcery.com>
1449
1450 PR c++/28557
1451 * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
1452
9beafc83
MM
14532006-07-31 Mark Mitchell <mark@codesourcery.com>
1454
1455 PR c++/28523
1456 * tree.c (stabilize_expr): Tweak documentation. Add assertion.
1457 (stabilize_call): Tweak documentation.
1458 (stabilize_init): Only call stabilize_call for calls.
1459
a82f93ac
SE
14602006-08-01 Steve Ellcey <sje@cup.hp.com>
1461
1462 PR c++/28432
1463 * decl2.c (check_classfn): Remove early return.
1464 * search.c (lookup_member): Return NULL with bad type.
1465
f47165c9
SE
14662006-08-01 Steve Ellcey <sje@cup.hp.com>
1467
1468 PR c++/28256
1469 * decl.c (check_initializer): Check for 1 initializer on scalar types.
1470
6193b8b7
DJ
14712006-08-01 Daniel Jacobowitz <dan@codesourcery.com>
1472
1473 PR debug/23336
1474 * pt.c (tsubst_copy_and_build): Mark used enum types.
1475 * semantics.c (finish_id_expression): Likewise.
1476
5d48268f
VR
14772006-07-31 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1478
1479 PR c++/6634
1480 * decl.c (grokdeclarator): Check whether "long" or "short" was
1481 specified for non-integral types.
1482
48779194
VR
14832006-07-28 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1484
1485 * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
1486
42b304f1
LM
14872006-07-28 Lee Millward <lee.millward@codesourcery.com>
1488
c6c7698d
JM
1489 PR c++/27668
1490 PR c++/27962
1491 * pt.c (process_template_parm) Store invalid template
1492 parameters as error_mark_node in the paramater list.
1493 (push_inline_template_parms_recursive): Handle invalid
1494 template parameters.
1495 (comp_template_parms): Likewise.
1496 (check_default_tmpl_arg): Likewise.
1497 (coerce_template_template_parms): Likewise.
1498 (mangle_class_name_for_template): Likewise.
1499 (tsubst_template_parms): Likewise.
1500 * error.c (dump_template_argument_list): Likewise.
566c6181 1501
85661c41
KH
15022006-07-28 Kazu Hirata <kazu@codesourcery.com>
1503
1504 * cp-tree.h: Fix a comment typo.
1505
709f9dcf
VR
15062006-07-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1507
1508 PR c++/27572
1509 * decl.c (grokdeclarator): Return error_mark_node after invalid
1510 typedef.
1511
74b0d490
DJ
15122006-07-23 Daniel Jacobowitz <dan@codesourcery.com>
1513
1514 PR c++/28460
1515 * decl.c (grokvardecl): Use FROB_CONTEXT.
1516 * pt.c (register_specialization): Likewise.
1517
105d72c5
MM
15182006-07-23 Mark Mitchell <mark@codesourcery.com>
1519
1520 PR c++/28025
1521 * cp-tree.h (LOOKUP_HIDDEN): New macro. Reformat comments.
1522 * name-lookup.c (unqualified_namespace_lookup): There is no way to
1523 have a hidden name in non-namespace scopes.
1524 * pt.c (tsubst_friend_class): Look for hidden names.
1525 * decl.c (lookup_and_check_tag): Fix typo in comment.
1526
1527 * semantics.c (finish_compound_literal): Fix typo in comment.
1528
bd741f34
JM
15292006-07-21 Jason Merrill <jason@redhat.com>
1530
1531 * decl2.c (determine_visibility): Don't propagate visibility from
1532 type to decl.
1533 (constrain_class_visibility): Don't warn in system headers.
1534 Don't warn about pointer fields.
1535
dfb84d62
MS
15362006-07-20 Mike Stump <mrs@apple.com>
1537
1538 * decl2.c (determine_visibility_from_class): Don't use hidden
1539 visibility for explicit instantiations.
1540
e488a090
VR
15412006-07-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1542
3a2419a7
VR
1543 PR c++/28250
1544 * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
1545 valid decls. Cleanup.
1546
e488a090
VR
1547 PR c++/28363
1548 * semantics.c (check_template_template_default_arg): Simplify
1549 error handling.
1550
b70f0f48
JM
15512006-07-20 Jason Merrill <jason@redhat.com>
1552
1553 PR c++/28407
1554 * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
1555 const variables with implicit internal linkage.
1556 * tree.c (decl_linkage): Only return lk_external if it's set.
1557
1558 PR c++/28409
566c6181 1559 * decl2.c (constrain_visibility): Ignore the anonymous namespace
b70f0f48
JM
1560 for extern "C" decls.
1561 (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
1562
566c6181 1563 * decl2.c (constrain_visibility): Remove specified and reason
b70f0f48 1564 parameters. Don't touch decls that already have explicit visibility.
566c6181 1565 (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
b70f0f48 1566 template.
566c6181 1567 (determine_visibility_from_class): Reverse sense of
b70f0f48
JM
1568 DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
1569 (constrain_class_visibility): Only complain about member visibility
1570 if the member type is another class. Don't change visibility of the
1571 current class.
1572
d23f3d60
MM
15732006-07-19 Mark Mitchell <mark@codesourcery.com>
1574
1575 PR c++/28338
1576 * decl.c (layout_var_decl): Don't call push_local_name here.
1577 (initialize_artificial_var): Assert artificiality.
1578 (cp_finish_decl): Call push_local_name here.
1579
0225a19d
MM
15802006-07-18 Mark Mitchell <mark@codesourcery.com>
1581
1582 PR c++/28337
1583 * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
1584 templates.
1585
f604fc3b
MM
15862006-07-18 Mark Mitchell <mark@codesourcery.com>
1587
fc429748
MM
1588 PR c++/28048
1589 * semantics.c (check_accessibility_of_qualified_id): Robustify.
1590
f604fc3b
MM
1591 PR c++/28235
1592 * pt.c (tsubst_decl): Handling substitutions into a static data
1593 member from within the scope of the tempalte itself.
1594
492b73bd
LM
15952006-07-18 Lee Millward <lee.millward@gmail.com>
1596
1597 PR c++/28258
1598 * method.c (locate_copy): Check for non_reference
1599 returning error_mark_node.
1600
e753d130 1601 PR c++/28260
492b73bd
LM
1602 * decl.c (duplicate_decls): Return error_mark_node
1603 on ambiguous declaration.
566c6181 1604
9c23e505
SE
16052006-07-18 Steve Ellcey <sje@cup.hp.com>
1606
1607 PR c++/27495
1608 * search.c (adjust_result_of_qualified_name_lookup): Change
1609 assert to part of if statement.
1610
77bffd4c
SE
16112006-07-17 Steve Ellcey <sje@cup.hp.com>
1612
1613 PR c++/28291
1614 * decl.c (reshape_init_class): Return error_mark_node on error.
1615
f566cc1b
SE
16162006-07-17 Steve Ellcey <sje@cup.hp.com>
1617
1618 PR c++/28304
1619 * decl2.c (check_classfn): Return NULL_TREE on error.
1620
2a50edcd
VR
16212006-07-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1622
1623 PR c++/28250
1624 * name-lookup.c (pushdecl_maybe_friend): Return early on
1625 error_mark_node.
1626 * except.c (expand_start_catch_block): Use error_mark_node instead
1627 of NULL_TREE for invalid decls.
1628 * parser.c (cp_parser_exception_declaration): Return error_mark_node
1629 on invalid catch parameter. Simplify.
1630
42ccbf3d
JJ
16312006-07-16 Jakub Jelinek <jakub@redhat.com>
1632
1633 PR c++/28370
1634 * decl2.c (note_vague_linkage_var): Removed.
1635 (finish_static_data_member_decl): Add decl to pending_statics vector
1636 directly. Do it even for non-public decls.
1637
662c2e83
LM
16382006-07-15 Lee Millward <lee.millward@gmail.com>
1639
1640 PR c++/28292
1641 * decl2.c (acceptable_java_type): Robustify. Use
1642 proper Boolean return type instead of return 1.
1643 (check_java_method): Don't issue error about
566c6181 1644 type not being an acceptable Java parameter if
662c2e83 1645 it's error_mark_node.
566c6181 1646
31b29c62
LM
1647 PR c++/28269
1648 * parser.c (cp_parser_elaborated_type_specifier):
1649 Return early if an invalid type was detected.
566c6181 1650
6ae9b875
VR
16512006-07-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1652
856367df
VR
1653 PR c++/28249
1654 * parser.c (cp_parser_check_decl_spec): New function.
1655 (cp_parser_decl_specifier_seq): Factor out check for repeated
1656 decl-specifiers into cp_parser_check_decl_spec. Use it.
e3beea68 1657 (cp_parser_type_specifier_seq): Use it.
856367df 1658
0a9367cb
VR
1659 PR c++/28294
1660 * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
1661 only.
1662
6ae9b875
VR
1663 PR c++/28387
1664 * decl2.c (cplus_decl_attributes): Check for invalid decls.
1665
4f543d15
VR
16662006-07-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1667
1668 PR c++/28343
1669 * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
1670 * decl2.c (grokfield): Likewise.
1671
7c0de6a5
GK
16722006-07-12 Geoffrey Keating <geoffk@apple.com>
1673
1674 * decl2.c (determine_visibility): Don't change visibility of
1675 function locals because of -fvisibility-inlines-hidden.
1676
ec0897de
JM
16772006-07-12 Jason Merrill <jason@redhat.com>
1678
1679 PR c++/28217
1680 * semantics.c (note_decl_for_pch): Don't premangle templates.
1681
4b641750
MM
16822006-07-12 Martin Michlmayr <tbm@cyrius.com>
1683
1684 * typeck.c (string_conv_p): Remove spurious quotation mark in
1685 warning.
1686
e6044ece 16872006-07-07 Lee Millward <lee.millward@gmail.com>
417fa55b
LM
1688 Andrew Pinski <pinskia@gmail.com>
1689
1690 PR c++/27820
1691 * decl.c (define_label): Return error_mark_node on error.
1692 * semantics.c (finish_label_stmt): Don't call
1693 add_stmt for invalid labels.
566c6181 1694
1f0b926a
JM
16952006-07-06 Jason Merrill <jason@redhat.com>
1696
1697 PR c++/28279
1698 * decl2.c (finish_static_data_member_decl): Don't assert
1699 TREE_PUBLIC.
1700
03b1c206
JM
17012006-07-05 Jason Merrill <jason@redhat.com>
1702
1937f939
JM
1703 PR c++/13983
1704 PR c++/17519
1705 * class.c (check_field_decls): Check TYPE_PACKED after
1706 stripping array types.
1707 (finish_struct_bits): Don't copy TYPE_SIZE here.
1708
03b1c206
JM
1709 PR c++/18681
1710 * friend.c (is_friend): Fix DR 45 implementation.
1711
09b86855
RG
17122006-07-05 Richard Guenther <rguenther@suse.de>
1713 Andrew Pinski <pinskia@gcc.gnu.org>
1714
1715 PR c++/27084
1716 * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1717 top level qualifiers for pointer type comparisons.
1718
cf5131b4
JM
17192006-07-01 Jason Merrill <jason@redhat.com>
1720
1721 PR c++/28215
566c6181 1722 * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
cf5131b4
JM
1723 DECL_TEMPLATE_INFO.
1724
481ac1e9
JM
17252006-06-30 Jason Merrill <jason@redhat.com>
1726
1727 PR c++/26577
566c6181 1728 * call.c (build_new_method_call): Force evaluation of the
481ac1e9
JM
1729 instance pointer, not the object.
1730
e7d35a88
KH
17312006-06-30 Kazu Hirata <kazu@codesourcery.com>
1732
1733 * decl2.c: Fix a comment typo.
1734
444762df
JM
17352006-06-30 Jason Merrill <jason@redhat.com>
1736
1737 PR c++/18698
566c6181 1738 * decl2.c (grokfield): Only try to treat the decl as an access
444762df
JM
1739 declaration if the scope is a class.
1740
b9e75696
JM
17412006-06-29 Jason Merrill <jason@redhat.com>
1742
1743 PR c++/26905
1744 PR c++/26612
1745 PR c++/27000
1746 PR c++/26984
1747 PR c++/19134
1748 * decl2.c (determine_visibility): Overhaul.
1749 (determine_visibility_from_class): Likewise.
1750 (min_vis_r, type_visibility, constrain_visibility): New fns.
1751 (constrain_visibility_for_template): Likewise.
1752 (constrain_class_visibility): Likewise.
1753 * decl.c (cp_finish_decl): Call determine_visibility for function
1754 decls, too.
1755 * name-lookup.c (pushtag): Call determine_visibility.
1756 * decl.c (duplicate_decls): Don't copy visibility from template to
1757 specialization.
1758 * pt.c (check_explicit_specialization): Likewise.
1759 (lookup_template_class, tsubst_decl): Call determine_visibility.
1760 * class.c (finish_struct_1): Call constrain_class_visibility.
1761
1762 PR c++/26905
1763 PR c++/21675
1764 PR c++/17470
1765 * parser.c (cp_parser_explicit_instantiation): Pass the attributes
1766 to grokdeclarator.
1767 (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
1768 (cp_parser_enum_specifier): Likewise.
1769 (cp_parser_elaborated_type_specifier): Apply attributes if this
1770 declares only the class.
1771 (cp_parser_class_specifier): Apply leading attributes immediately.
1772 * semantics.c (begin_class_definition): Add attributes parameter,
1773 apply them to the type.
1774
1775 PR c++/21581
1776 PR c++/25915
1777 * tree.c (decl_anon_ns_mem_p): New function.
1778 * cp-tree.h: Declare it.
1779 * decl2.c (determine_visibility): Make anonymous namespace
1780 members static.
1781 (min_vis_r, constrain_visibility): Likewise.
1782 * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
1783 pseudo-types.
1784 * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
1785 global_namespace.
1786 * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
1787 on anonymous namespaces.
1788
6150b602
JM
17892006-06-28 Jason Merrill <jason@redhat.com>
1790
1791 PR c++/27424
566c6181 1792 * pt.c (convert_template_argument): Pass all template arguments
6150b602
JM
1793 on to coerce_template_template_parms.
1794
344f237b
LM
17952006-06-25 Lee Millward <lee.millward@gmail.com>
1796 Mark Mitchell <mark@codesuorcery.com>
1797
1798 PR c++/28054
1799 * decl2.c (grokbitfied): Remove check for grokdeclarator
1800 returning NULL_TREE, instead check for error_mark_node
1801 to indicate failure.
1802 * decl.c (grokdeclarator): Adjust block comment.
566c6181 1803
0fdc23b9
LM
18042006-06-25 Lee Millward <lee.millward@gmail.com>
1805
1806 PR c++/28051
1807 * mangle.c (mangle_conv_op_name_for_type): Check for
1808 invalid types.
1809 * name-lookup.c (push_class_level_binding): Robustify.
1810 (do_class_using_decl): Return early if name is error_mark_node.
566c6181 1811
c5f8391c
SE
18122006-06-23 Steve Ellcey <sje@cup.hp.com>
1813
1814 PR c++/28114
1815 * name-lookup.c (pushtag): Return if we have error_mark_node.
1816
e135a637
SE
18172006-06-23 Steve Ellcey <sje@cup.hp.com>
1818
1819 PR c++/27019
1820 * typeck2.c (process_init_constructor_array): Set ce->value on errors.
1821
a3d536f1
VR
18222006-06-23 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1823
0b9cb8c2
VR
1824 PR c++/28112
1825 * parser.c (cp_parser_attribute_list): Skip attributes with invalid
1826 arguments. Fix comment.
1827
a3d536f1
VR
1828 PR c++/11468
1829 * init.c (build_new_1): Handle error_mark_nodes returned by
1830 build_java_class_ref.
1831 (build_java_class_ref): Do not abort compilation, but return
1832 error_mark_node. Improve error message. Fix indentation.
1833
4e2bb0a4
DS
18342006-06-23 Danny Smith <dannysmith@users.sourceforge.net>
1835
1836 PR target/27789
1837 * decl.c (start_decl): Check that dllimports are not initialized.
1838
a8fe5a30
LM
18392006-06-22 Lee Millward <lee.millward@gmail.com>
1840
1841 PR c++/27805
1842 * typeck2.c (build_m_component_ref): Use error_operand_p.
9a171ca4
LM
1843
1844 PR c++/27821
1845 * decl.c (grokdeclarator): Return error_mark_node on
1846 invalid uses of the scope resolution operator.
566c6181 1847
717f8053
VR
18482006-06-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1849
728da672
VR
1850 PR c++/28111
1851 * pt.c (determine_specialization): Check for invalid decls.
1852
3e9ac7e5
VR
1853 PR c++/28110
1854 * pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
1855 parameters.
1856
717f8053
VR
1857 PR c++/28109
1858 * rtti.c (get_tinfo_decl_dynamic): Robustify.
1859
2e5d2970
VR
18602006-06-20 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1861
1862 PR c++/28052
1863 * init.c (push_base_cleanups): Skip members with invalid types.
1864 * typeck.c (build_class_member_access_expr): Robustify.
1865
a1d08991
MM
18662006-06-19 Mark Mitchell <mark@codesourcery.com>
1867
1868 * pt.c (instantiate_template): Fix typo in comment.
1869
5ff5e6c8
RG
18702006-06-19 Richard Guenther <rguenther@suse.de>
1871
1872 * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
1873 power-of-two token vector size.
1874
75a82978
MM
18752006-06-16 Mark Mitchell <mark@codesourcery.com>
1876
da71e18c
MM
1877 PR c++/28016
1878 * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
1879 members.
1880
80eb9ddd
MM
1881 PR c++/27979
1882 * call.c (standard_conversion): Strip cv-qualifiers from bitfield
1883 types.
1884
75a82978
MM
1885 PR c++/27884
1886 * decl.c (have_extern_spec): Remove.
1887 (start_decl): Do not check have_extern_spec.
1888 (start_function): Likewise.
1889 * cp-tree.h (have_extern_spec): Remove.
1890 * parser.c (cp_parser_linkage_specification): Don't set
1891 have_extern_spec.
1892 (cp_parser_init_declarator): Likewise.
1893 (cp_parser_parameter_declaration): Do not treat parameters as
1894 within the scope of an unbraced linkage specification.
1895
a95799ec
MM
18962006-06-15 Mark Mitchell <mark@codesourcery.com>
1897
4e95268d
MM
1898 PR c++/27689
1899 * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
1900 macro.
1901 * pt.c (unify): Use it.
1902
2954333a
MM
1903 PR c++/27666
1904 * call.c (build_conditional_expr): Robustify.
1905
a95799ec
MM
1906 PR c++/27640
1907 * pt.c (instantiate_template): Set processing_template_decl to
1908 zero while performing substitutions.
1909
cf24598a
MM
19102006-06-14 Mark Mitchell <mark@codesourcery.com>
1911
4c4e648c
MM
1912 PR c++/27665
1913 * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
1914 identify destructors.
1915 (cp_parser_nested_name_specifier_opt): Remove invalid
1916 optimization.
1917 (cp_parser_template_id): Refine heuristic for determining whether
1918 we are entering a scope.
1919
0c926bff 1920 PR c++/27648
84019f23
MM
1921 * parser.c (cp_parser_declarator): Robustify.
1922
fe89d797
MM
1923 PR c++/26559
1924 * pt.c (tsubst_expr): Use finish_omp_atomic.
1925 (value_dependent_expression_p): All CALL_EXPRs are dependent.
1926 * semantics.c (finish_omp_atomic): Rework to use standard
1927 paradigms for handling non-dependent expressions.
1928
070809e3
MM
19292006-06-14 Gabriel Dos Reis <gdr@integrable-solutions.net>
1930
1931 * typeck.c (build_modify_expr): Tidy diagnostic message.
1932
19332006-06-14 Mark Mitchell <mark@codesourcery.com>
1934
cf24598a
MM
1935 PR c++/28018
1936 * typeck.c (build_modify_expr): Disallow array assignment.
1937
438d94ed
GDR
19382006-06-14 Gabriel Dos Reis <gdr@integrable-solutions.net>
1939
1940 * cp-tree.def: Fix typo.
1941
ace4831d
MM
19422006-06-13 Mark Mitchell <mark@codesourcery.com>
1943
1944 PR c++/27227
1945 * decl.c (decls_match): Allow an extern "C" variable declarations
1946 from different namespaces to match.
1947 (duplicate_decls): Disallow redeclaring a variable with a
1948 different linkage specification.
1949
10827cd8
JJ
19502006-06-13 Jakub Jelinek <jakub@redhat.com>
1951
1952 PR middle-end/27793
1953 * cp-tree.h (cxx_int_tree_map): New struct.
1954 (struct language_function): Add extern_decl_map field.
1955 * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
1956 to cp_function_chain->extern_decl_map hash table instead of
1957 copying over DECL_UID.
1958 * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
1959 functions.
1960 (cp_genericize_r): Remap DECL_EXTERN local decls using
1961 cp_function_chain->extern_decl_map hash table.
1962 * decl.c (finish_function): Clear extern_decl_map.
1963
8bdb09cb
VR
19642006-06-12 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1965
4c65a534
VR
1966 PR c++/27601
1967 * semantics.c (finish_offsetof): Handle pseudo-destructors.
1968
ff8fe3e0
VR
1969 PR c++/27933
1970 * name-lookup.c (lookup_qualified_name): Always return error_mark_node
1971 if lookup fails.
1972
8bdb09cb
VR
1973 PR c++/27951
1974 * decl2.c (finish_anon_union): Return early if build_anon_union_vars
1975 fails.
1976
f0b99d6c
RS
19772006-06-12 Roger Sayle <roger@eyesopen.com>
1978
1979 PR c++/21210
1980 * typeck2.c (build_functional_cast): Use cp_convert to construct
1981 non-aggregate initializers instead of the user-level build_c_cast.
1982
c291f8b1
VR
19832006-06-07 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1984
1985 PR c++/27601
1986 * cp-tree.h (finish_offsetof): Add prototype.
1987 * semantics.c (finish_offsetof): New function.
1988 * parser.c (cp_parser_builtin_offsetof): Call it instead of
1989 fold_offsetof.
1990 * pt.c (tsubst_copy_and_build): Likewise.
1991
b6ca28e6
MM
19922006-06-06 Mark Mitchell <mark@codesourcery.com>
1993
1994 PR c++/27177
1995 * call.c (standard_conversion): Require that the derived type be
1996 complete when performing a derived-to-base conversion.
1997
2b643eda
MM
19982006-06-04 Mark Mitchell <mark@codesourcery.com>
1999
2000 PR c++/27819
2001 * decl.c (cp_finish_decl): Process initializers for static data
2002 members with non-dependent initializers, even in templates.
2003
2004 PR c++/27722
2005 * decl.c (maybe_deduce_size_from_array_init): If the declaration
2006 is erroneous, give it an erroneous type.
2007 (layout_var_decl): If the type is erroneous, give up.
2008 (check_initializer): Likewise.
2009
2010 PR c++/27807
2011 * cp-tree.h (TYPE_OBJ_P): New macro.
2012 (TYPE_PTROB_P): Use it.
2013 (TYPE_REF_OBJ_P): Likewise.
2014 * semantics.c (finish_compound_literal): Do not permit compound
2015 literals of non-object types.
2016
2017 PR c++/27806
2018 * typeck.c (original_type): Robustify.
2019
1ac8104c
VR
20202006-06-05 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2021
2022 PR c++/27804
2023 * init.c (constant_value_1): Return decl instead of error_mark_node
2024 for invalid initializers.
2025
a0c04f8e
AP
20262006-06-01 Andrew Pinski <pinskia@physics.uc.edu>
2027
2028 PR c++/27592
2029 * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
2030 on operand of the COND_EXPR for the null pointer check.
2031
5c147e22
AP
20322006-06-01 Andrew Pinski <pinskia@physics.uc.edu>
2033
2034 PR c++/26740
2035 * typeck.c (build_unary_op): Mark the function as being used.
2036
f3d5aeeb
AO
20372006-06-01 Alexandre Oliva <aoliva@redhat.com>
2038
2039 PR c++/26660
2040 * parser.c (cp_parser_initial_pragma): Read one more token for
2041 caller after reading PCH file in.
2042
07471dfb
MM
20432006-05-31 Mark Mitchell <mark@codesourcery.com>
2044
2045 PR c++/27801
2046 * call.c (perform_implicit_conversion): Do not actually perform
2047 conversions in templates.
2048
2049 PR c++/26496
2050 * call.c (resolve_args): Check for invalid uses of bound
2051 non-static member functions.
2052 * init.c (build_offset_ref): Return error_mark_node for errors.
2053
2054 PR c++/27385
2055 * decl.c (reshape_init): Robustify.
2056 (reshape_init_array_1): Likewise.
2057
606791f6
MM
20582006-05-30 Mark Mitchell <mark@codesourcery.com>
2059
c7baf9e9
MM
2060 PR c++/27808
2061 * parser.c (cp_parser_decl_specifier_seq): Issue errors about
2062 "friend" specifiers that do not appear in class scopes.
2063
606791f6
MM
2064 PR c++/27803
2065 * class.c (check_bitfield_decl): Ensure that all bitfields have
2066 integral type.
2067
944fd207
KH
20682006-05-29 Kazu Hirata <kazu@codesourcery.com>
2069
2070 * pt.c (convert_nontype_argument): Fix a typo in an error
2071 message.
2072
ddd0b831
KH
20732006-05-28 Kazu Hirata <kazu@codesourcery.com>
2074
2075 * decl.c, decl2.c, parser.c: Fix comment typos. Follow
2076 spelling conventions.
2077
e92fb501
MM
20782006-05-24 Mark Mitchell <mark@codesourcery.com>
2079
2080 PR c++/20103
2081 * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
2082 error_mark_node to indicate an initialization is OK.
2083 (start_decl): Likewise. Adjust call to start_decl_1.
2084 (start_decl_1): Add initialized parameter. Simplify.
2085 * except.c (initialize_handler_parm): Adjust call to
2086 setart_decl_1.
2087 (expand_start_catch_block): Let cp_finish_decl initialize catch
2088 parameters.
2089 * cp-tree.h (start_decl_1): Adjust prototype.
2090 * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
2091 (instantiate_decl): Let cp_finish_decl handle initialization.
2092 * semantics.c (finish_compound_literal): Create a temporary
2093 variable for the literal.
2094 * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
2095 cases.
2096 * decl2.c (finish_static_data_member_decl): Don't set
2097 DECL_INITIAL.
2098 (grokfield): Do not try to initialize functions.
2099
29a1da1c
MM
21002006-05-23 Mark Mitchell <mark@codesourcery.com>
2101
2102 PR c++/20173
2103 * pt.c (determine_specialization): Disallow partial
2104 specializations of templates.
2105
ba5719d9
VR
21062006-05-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2107
1bd229b7
VR
2108 PR c++/27716
2109 * typeck.c (build_modify_expr): Test arguments for error_operand_p.
2110
ba5719d9
VR
2111 * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
2112
b655f214
MM
21132006-05-21 Mark Mitchell <mark@codesourcery.com>
2114
2115 PR c++/27210
2116 * cp-tree.h (cp_save_expr): New function.
2117 * init.c (build_new): Correct logic for zero-element array
2118 warning. Use cp_save_expr.
2119 * tree.c (cp_save_expr): New function.
2120
13dbe691
VR
21212006-05-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2122
2123 PR c++/27398
2124 * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
2125 or void_type_node.
2126
d593cb3d
MS
21272006-05-19 Mike Stump <mrs@apple.com>
2128
2129 * typeck.c (default_conversion): Remove static.
2130
eaf6fb90
MM
21312006-05-19 Mark Mitchell <mark@codesourcery.com>
2132
2133 PR c++/26433
2134 * cp-tree.h (begin_function_try_block): Change prototype.
2135 (finish_function_handler_sequence): Likewise.
2136 * parser.c (cp_parser_function_try_block): Adjust calls.
2137 * pt.c (tsubst_expr): Adjust calls.
2138 * semantics.c (begin_function_try_block): Create an artificial
2139 outer scope.
2140 (finish_function_handler_sequence): Close it.
2141
41990f96
MM
21422006-05-18 Mark Mitchell <mark@codesourcery.com>
2143
2144 PR c++/27471
2145 PR c++/27506
2146 * typeck.c (decay_conversion): Convert bitfields to their declared
2147 types here. Improve documentation. Avoid use of cp_convert.
2148 (default_conversion): Make it static. Perform integral promotions
2149 before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
2150 conversions.
2151 * init.c (build_init): Remove.
2152 (expand_default_init): Do not call rvalue.
2153 * call.c (null_ptr_cst_p): Robustify.
2154 (build_conditional_expr): Tidy.
2155 * except.c (build_throw): Do not perform lvalue-to-rvalue
2156 conversion on operand before initializing temporary.
2157 * tree.c (convert.h): Include it.
2158 (convert_bitfield_to_declared_type): Use convert_to_integer, not
2159 cp_convert.
2160 (rvalue): Don't convert bitfields to their declared type here.
2161 * cp-tree.h (build_init): Remove.
2162 (default_conversion): Likewise.
2163 * typeck2.c (build_m_component_ref): Do not perform
2164 lvalue-to-rvalue, function-to-pointer, or array-to-pointer
2165 conversions here. Correct error message.
2166
bfce0853
MM
21672006-05-17 Mark Mitchell <mark@codesourcery.com>
2168
ceacde63
MM
2169 PR c++/26122
2170 * decl2.c (check_member_template): Remove checks for virtual
2171 functions.
2172 * parser.c (cp_parser_function_specifier_opt): Complain about
2173 virtual templates.
2174 (cp_parser_pure_specifier): Likewise.
2175
bfce0853 2176 PR c++/26068
3db45ab5 2177 * parser.c (cp_parser_set_storage_class): Check for
bfce0853
MM
2178 invalid uses of storage classes on unbraced linkage
2179 specifications.
2180 (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
2181 to cp_parser_set_storage_class.
2182
761041be
JJ
21832006-05-17 Jakub Jelinek <jakub@redhat.com>
2184
aa0e52db
JJ
2185 PR c++/27491
2186 * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
2187 on CONSTRUCTORs.
2188
761041be
JJ
2189 PR middle-end/27415
2190 * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
2191 on combined parallel workshare constructs.
2192 * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
2193
14c7833c
L
21942006-05-16 H.J. Lu <hongjiu.lu@intel.com>
2195
2196 PR driver/26885
2197 * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
2198
e1039697
MM
21992006-05-15 Mark Mitchell <mark@codesourcery.com>
2200
6b648482
MM
2201 PR c++/27339
2202 * cp-tree.h (perform_access_checks): New function.
2203 * semantics.c (perform_access_checks): New function.
2204 (perform_deferred_access_checks): Use it.
2205 * parser.c (cp_parser_simple_declaration): Adjust call to
2206 cp_parser_init_declarator.
2207 (cp_parser_type_parameter): Do not defer checks in default
2208 arguments.
2209 (cp_parser_explicit_specialization): Adjust call to
2210 cp_parser_single_declaration.
2211 (cp_parser_init_declarator): Perform template-parameter access
3db45ab5 2212 checks.
6b648482
MM
2213 (cp_parser_parameter_declaration): Do not defer checks for
2214 template parameter default arguments.
2215 (cp_parser_template_declaration_after_export): Gather access
2216 checks for template parameters, and pass them to
2217 cp_parser_single_declaration.
2218 (cp_parser_template_parameter_access_checks): New function.
2219 (cp_parser_single_declaration): Add checks parameter.
2220
e1039697
MM
2221 PR c++/27505
2222 * call.c (convert_like_real): Convert bitfields to their declared
2223 types when forming an rvalue.
2224 * tree.c (convert_bitfield_to_declared_type): New function.
2225 (rvalue): Use it.
2226 * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
2227
dca56f77
VR
22282006-05-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2229
7e497d0c
VR
2230 PR c++/27582
2231 * pt.c (any_dependent_template_arguments_p): Return early on invalid
2232 argument list.
2233
0616700c
VR
2234 PR c++/27581
2235 * search.c (adjust_result_of_qualified_name_lookup): Skip on
2236 invalid context_class.
2237
ad47b891
VR
2238 PR c++/27315
2239 * pt.c (do_decl_instantiation): Return early on invalid decl.
2240
7c60008e
VR
2241 PR c++/27559
2242 * pt.c (push_template_decl_real): Return error_mark_node instead
2243 of broken decl.
2244
dca56f77
VR
2245 PR c++/27496
2246 * pt.c (tsubst_friend_class): Return early on invalid friend
2247 declarations.
2248
05b44921
L
22492006-05-14 H.J. Lu <hongjiu.lu@intel.com>
2250
2251 * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
2252 (cp/decl2.o): Likewise.
2253 (cp/typeck.o): Likewise.
2254 (cp/cvt.o): Likewise.
2255 (cp/parser.o): Likewise.
2256 (cp/call.o): Replace target.h with $(TARGET_H).
2257
c497db75
AO
22582006-05-14 Alexandre Oliva <aoliva@redhat.com>
2259
2260 * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
2261 COMPONENT_REF alone.
2262
80cdd94a
VR
22632006-05-11 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2264
2265 PR c++/27547
2266 * decl.c (copy_fn_p): Return early on non-member functions.
2267
15218346
VR
22682006-05-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2269
2270 PR c++/27447
2271 * decl2.c (build_memfn_type): Skip invalid functions and class types.
2272
6af455d7
VR
22732006-05-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2274
b166a559
VR
2275 PR c++/27427
2276 * pt.c (convert_nontype_argument): Return early on invalid arguments.
2277
a14de1af
VR
2278 * pt.c (process_template_parm): Remove superfluous temporary.
2279
620188c9
VR
2280 PR c++/27430
2281 * pt.c (process_template_parm): Handle erroneous non-type parameters.
2282
57b52959
VR
2283 PR c++/27423
2284 * typeck.c (convert_for_initialization): Skip erroneous types.
2285
6af455d7
VR
2286 PR c++/27422
2287 * typeck.c (convert_arguments): Return early on args with
2288 invalid types.
2289
8d8d1a28
AH
22902006-05-03 Aldy Hernandez <aldyh@redhat.com>
2291
2292 PR/21391
2293 * typeck.c (build_static_cast_1): Save casted types in used types
2294 hash table.
2295 (build_reinterpret_cast_1): Same.
2296 * rtti.c (build_dynamic_cast_1): Same.
2297
76c5e6e0
JJ
22982006-05-04 Jakub Jelinek <jakub@redhat.com>
2299
2300 PR c++/27359
2301 * parser.c (cp_parser_omp_for_loop): Only call
2302 cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
2303 called.
2304
7137605e
MM
23052006-05-02 Mark Mitchell <mark@codesourcery.com>
2306
cc328145
MM
2307 PR c++/27102
2308 * decl.c (grokdeclarator): Robustify checks for defining members
2309 of incomplete types.
2310
7137605e
MM
2311 PR c++/27309
2312 * class.c (add_method): Call grok_special_member_properties.
2313 * decl.c (grokdeclarator): Don't call it here.
2314 (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
2315 assignment operator. Set TYPE_HAS_CONSTURCTOR if DECL is a
2316 constructor.
2317 (start_method): Don't call grok_special_member_properties.
2318 * method.c (implicitly_declare_fn): Likewise.
2319 * pt.c (instantiate_class_template): Likewise.
2320 * decl2.c (grokfield): Likewise.
2321
077b0dfb
JJ
23222006-05-02 Jakub Jelinek <jakub@redhat.com>
2323
2324 PR middle-end/27337
2325 * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
2326 * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
2327 * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
2328
5a8613b2
MM
23292006-04-30 Mark Mitchell <mark@codesourcery.com>
2330
2331 PR c++/27094
2332 * pt.c (tsubst_default_argument): Increment function_depth around
2333 call to tsubst_expr.
2334 * parser.c (cp_parser_parameter_declaration): Likewise.
2335 * decl2.c (mark_used): Tidy.
2336
85990800
VR
23372006-04-30 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2338
2339 PR c++/27278
2340 * decl.c (grok_op_properties): Skip operators with invalid args
2341 when checking for class-type or enum-type args.
2342
139a78c7
VR
23432006-04-29 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2344
2345 PR c++/27279
2346 * decl.c (copy_fn_p): Skip functions with invalid first arg.
2347
8fcd79cb
MM
23482006-04-27 Mark Mitchell <mark@codesourcery.com>
2349
33a1b314
MM
2350 PR c++/27292
2351 * tree.c (rvalue): Convert bitfields to their declared types.
2352
8fcd79cb
MM
2353 PR c++/27102
2354 * typeck2.c (cxx_incomplete_type_diagnostic): Handle
2355 TYPENAME_TYPE.
2356
efe1ad46
MM
23572006-04-24 Mark Mitchell <mark@codesourcery.com>
2358
2359 PR c++/27292
2360 * typeck.c (decay_conversion): Don't adjust bitfield types.
2361 (perform_integral_promotions): Treat bitfield enums as enums, not
2362 as short integer types.
2363 * tree.c (rvalue): Convert bitfields to their correct types.
2364
4e3bd7d5
VR
23652006-04-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2366
2367 PR c++/19963
2368 * class.c (layout_class_type): Skip fields with invalid types.
2369
38a4afee
MM
23702006-04-23 Mark Mitchell <mark@codesourcery.com>
2371
e2537f2c
MM
2372 PR c++/26912
2373 * cp-tree.h (build_this_parm): Declare.
2374 (grok_method_quals): Remove.
2375 (build_memfn_type): Declare.
2376 (build_artificial_parm): Declare.
2377 (do_friend): Remove quals parameter.
2378 * decl.c (build_this_parm): New function.
2379 (grokfndecl): Use it. Do not pass quals to grokclassfn.
2380 (grokdeclarator): Rename quals to memfn_quals. Avoid allocating
2381 unnecessary TYPE_DECLs. Correct qualification of member function
2382 types. Tidy.
2383 * method.c (implicitly_declare_fn): Use build_this_parm.
2384 * friend.c (do_friend): Remove quals parameter.
2385 * decl2.c (grok_method_quals): Remove.
2386 (build_memfn_type): New function.
2387 (build_artificial_parm): Give it external linkage.
2388 (grokclassfn): Remove quals parameter. Do not build "this"
2389 PARM_DECL here.
2390
38a4afee
MM
2391 PR c++/26534
2392 * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
2393 * typeck.c (is_bitfield_expr_with_lowered_type): New function.
2394 (decay_conversion): Convert bitfield expressions to the correct
2395 type.
2396 (build_modify_expr): Remove spurious conversions.
2397 * class.c (layout_class_type): Modify the type of bitfields to
3db45ab5 2398 indicate a limited range.
38a4afee
MM
2399 * call.c (standard_conversion): Adjust the type of bitfield
2400 expressions used in an rvalue context.
2401 (build_conditional_expr): Likewise.
3db45ab5 2402
9f9a713e
KH
24032006-04-22 Kazu Hirata <kazu@codesourcery.com>
2404
2405 * decl.c: Fix comment typos.
2406
7a0b46c9
EC
24072006-04-21 Eric Christopher <echristo@apple.com>
2408
2409 * decl.c: Fix typo in function name.
2410
d149fba0
VR
24112006-04-19 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2412
94d285a5
VR
2413 PR c++/26558
2414 * parser.c (cp_parser_class_name): Check for invalid typenames.
2415 Rearrange code.
2416
0014c247
VR
2417 PR c++/26739
2418 * pt.c (tsubst_friend_function): Return early if
2419 pushdecl_namespace_level fails.
2420
b815a631
VR
2421 PR c++/26036
2422 * typeck.c (convert_arguments): Return error_mark_node instead of
2423 error_mark_list.
2424 * cp-tree.h (error_mark_list): Remove declaration.
2425 * decl.c (error_mark_list): Remove definition.
2426 (cxx_init_decl_processing): Do not initialize error_mark_list.
2427
d149fba0
VR
2428 PR c++/10385
2429 * rtti.c (build_dynamic_cast_1): Check for invalid conversions
2430 before calling convert_to_reference.
2431 * cvt.c (convert_to_reference): Assert that reftype is a
2432 REFERENCE_TYPE.
2433
fa6098f8
MM
24342006-04-19 Mark Mitchell <mark@codesourcery.com>
2435
2436 PR c++/27102
2437 * class.c (currently_open_class): Tidy.
2438 * decl.c (grokdeclarator): If we encounter an erroneous
2439 declarator, assume that we have already issued an error message
2440 and return. Return error_mark_node instead of NULL_TREE in more
2441 places. Issue errors about function definitions that do not have
2442 a function declarator. Check for complete types for all function
7a0b46c9 2443 definitions.
fa6098f8
MM
2444 * cp-tree.h (cp_error_declarator): Remove.
2445 (currently_open_class): Change return type.
2446 * parser.c (cp_parser_id_expression): Add optional_p parameter.
2447 (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
2448 (cp_parser_id_expression): Likewise.
2449 (cp_parser_unqualified_id): If the name is optional, return
2450 NULL_TREE.
2451 (cp_parser_postfix_dot_deref_expression): Adjust calls.
2452 (cp_parser_type_parameter): Likewise.
2453 (cp_parser_unqualified_id): Likewise.
2454 (cp_parser_direct_declarator): Likewise.
2455 (cp_parser_declarator_id): Add optional_p parameter.
2456 (cp_parser_function_definition_from_specifiers_and_declarator):
2457 Assume that start_function indicates failure only if it has issued
2458 an error.
2459 (cp_parser_omp_var_list_no_open): Adjust calls.
7a0b46c9 2460
778f6a08
JJ
24612006-04-17 Janis Johnson <janis187@us.ibm.com>
2462
2463 PR c++/26114, c++/26115
2464 * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
2465 * class.c (check_field_decls): Ditto.
2466
7304fcb4
VR
24672006-04-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2468
2469 * init.c (build_offset_ref): Remove superfluous temporary.
2470
e13d2b4e
MM
24712006-04-16 Mark Mitchell <mark@codesourcery.com>
2472
2473 PR c++/26365
2474 * typeck.c (finish_class_member_access_expr): Robustify
2475
53824026
KH
24762006-04-15 Kazu Hirata <kazu@codesourcery.com>
2477
2478 * Make-lang.in (cp/pt.o): Depend on vecprim.h.
2479 * pt.c: Include vecprim.h.
2480 (inline_parm_levels): Change the type to VEC(int,heap) *.
2481 (inline_parm_levels_used): Remove.
2482 (maybe_begin_member_template_processing,
2483 maybe_end_member_template_processing): Use VEC instead of
2484 VARRAY.
2485
e69460b6
KH
2486 * cp/call.c: Fix comment typos.
2487
aa9d194e
MM
24882006-04-12 Mark Mitchell <mark@codesourcery.com>
2489
2490 * parser.c (cp_parser_init_declarator): Initialize local variables
2491 aggressively.
2492
21137095
RS
24932006-04-12 Roger Sayle <roger@eyesopen.com>
2494
2495 * parser.c (cp_parser_init_declarator): Initialise
2496 is_parenthesized_init to false to avoid compiler warning.
2497
63c9a190
MM
24982006-04-11 Mark Mitchell <mark@codesourcery.com>
2499
2500 * cp-tree.h (build_operator_new_call): Adjust prototype.
2501 (build_new_method_call): Likewise.
2502 (build_op_delete_call): Likewise.
2503 * init.c (build_raw_new_expr): New function.
2504 (build_new_1): Pass information as parameters, rather than
2505 bundling it into a NEW_EXPR.
2506 (build_new): Adjust accordingly.
2507 (build_vec_delete_1): Adjust for changes to build_op_delete_call.
2508 (build_delete): Likewise.
2509 * decl.c (finish_destructor_body): Likewise.
2510 * call.c (build_operator_new_call): Return the allocation function
2511 used.
2512 (build_op_delete_call): Take allocation function as parameter.
2513 (build_special_member_call): Adjust call to build_new_method_call.
2514 (build_new_method_call): Return function called.
2515 * pt.c (tsubst_copy_and_build): Adjust call to
2516 build_new_method_call.
2517 * semantics.c (finish_call_expr): Likewise.
2518 * parser.c (cp_parser_postfix_expression): Likewise.
2519 * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
7a0b46c9 2520 "incomplete", not "undefined", types.
63c9a190
MM
2521
2522 PR c++/26295
2523 * decl.c (grokdeclarator): Remove namespace-handling code for
7a0b46c9 2524 pointers-to-members.
63c9a190
MM
2525 * parser.c (cp_parser_ptr_operator): Check for qualified names
2526 using namespaces.
2527
2528 PR c++/26122
2529 * parser.c (cp_parser_init_declarator): Adjust logic for deciding
2530 whether or not to look for a pure-specifier.
2531 (cp_parser_member_declaration): Likewise.
2532
84dc00e8
KH
25332006-04-08 Kazu Hirata <kazu@codesourcery.com>
2534
2535 * decl2.c, pt.c, semantics.c: Fix comment typos.
2536
4b91b67b
RS
25372006-04-06 Roger Sayle <roger@eyesopen.com>
2538
2539 * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
2540
0b1307e5
JM
25412006-04-05 Jason Merrill <jason@redhat.com>
2542
2543 * name-lookup.c (push_namespace_with_attribs): Temporarily disable
2544 default hidden visibility for anonymous namespace.
2545
5cd88d68
RS
25462006-03-29 Roger Sayle <roger@eyesopen.com>
2547
2548 PR c++/22494
2549 * init.c (build_vec_delete_1): Convert BASE pointer's type to
2550 the base pointer type to avoid a type mismatch in the EQ_EXPR.
2551
e713adf6
CD
25522006-03-24 Carlos O'Donell <carlos@codesourcery.com>
2553
2554 * search.c (maybe_suppress_debug_info): If
2555 flag_emit_class_debug_always then don't suppress.
2556
61edcf65
JM
25572006-03-22 Jason Merrill <jason@redhat.com>
2558
e753d130
AP
2559 * name-lookup.c (push_namespace_with_attribs): Only apply hidden
2560 visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
61edcf65 2561
fae2b46b
JJ
25622006-03-21 Jakub Jelinek <jakub@redhat.com>
2563
2564 PR c++/26691
2565 * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
2566
aa09f986
JM
25672006-03-21 Jason Merrill <jason@redhat.com>
2568
2569 PR c++/21581
2570 * parser.c (cp_parser_declaration): Support attributes on
2571 anonymous namespaces.
7a0b46c9 2572 * name-lookup.c (push_namespace_with_attribs): Anonymous
aa09f986
JM
2573 namespaces default to hidden visibility.
2574
0ed5edac
JM
25752006-03-20 Jason Merrill <jason@redhat.com>
2576
2577 PR c++/21764, c++/19238
2578 * decl.c (cp_finish_decl): Call determine_visibility later.
2579 (start_preparsed_function): Likewise.
2580 * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
2581 (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
7a0b46c9 2582 * name-lookup.h (struct cp_binding_level): Add has_visibility
0ed5edac
JM
2583 bitfield.
2584 * name-lookup.c: Include c-pragma.h.
2585 (push_namespace_with_attribs): Split out from push_namespace.
2586 Push visibility if appropriate. Set TREE_PUBLIC on namespaces.
2587 (leave_scope): Pop visibility if appropriate.
2588 * decl2.c (determine_visibility_from_class): Split out from...
7a0b46c9 2589 (determine_visibility): ...here. Handle function scope and
0ed5edac 2590 nested classes.
7a0b46c9 2591 (import_export_decl): Move visibility handling to
0ed5edac
JM
2592 determine_visibility_from_class.
2593 * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
2594 attributes on namespace declarations.
2595
3cc189f5
VR
25962006-03-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2597
2598 PR c++/6634
0ed5edac 2599 * decl.c (grokdeclarator): Do not accept long long double.
3cc189f5
VR
2600 Reorganize checks for invalid (combinations of) type modifiers.
2601 Quote modifiers in messages.
2602
229970c4
JM
26032006-03-09 Jason Merrill <jason@redhat.com>
2604
2605 PR c++/16387, c++/16389
2606 * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
2607 (cxx_sizeof_or_alignof_expr): Split out from here.
2608
1799e5d5
RH
26092006-03-09 Diego Novillo <dnovillo@redhat.com>
2610
2611 Merge from gomp-20050608-branch
2612
2613 2006-02-02 Diego Novillo <dnovillo@redhat.com>
2614
2615 * decl.c (pop_labels_1): Use appropriate pointer casting.
2616 (poplevel_named_label_1): Likewise.
2617 (named_label_entry_hash): Likewise.
2618 (named_label_entry_eq): Likewise.
2619 (check_goto): Likewise.
2620 (define_label): Likewise.
2621
2622 2006-01-26 Diego Novillo <dnovillo@redhat.com>
2623
2624 * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
2625 of TREE_BLOCK.
2626 * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
2627 instead of TREE_CODE/TREE_OPERAND.
2628 * semantics.c: Likewise.
2629 * parser.c: Likewise.
2630
2631 2005-11-10 Diego Novillo <dnovillo@redhat.com>
2632
2633 * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
2634 target does not support TLS.
2635
2636 2005-11-09 Jakub Jelinek <jakub@redhat.com>
2637
2638 * decl.c (redeclaration_error_message): Don't error about
2639 DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
2640 (olddecl).
2641
2642 2005-11-08 Jakub Jelinek <jakub@redhat.com>
2643
2644 PR c++/24735
2645 * semantics.c (finish_omp_barrier, finish_omp_flush): New
2646 functions.
2647 * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
2648 (cp_parser_omp_flush): Call finish_omp_flush.
2649 * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
2650 prototypes.
2651
2652 PR c++/24734
2653 * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
2654
2655 2005-11-03 Jakub Jelinek <jakub@redhat.com>
2656
2657 * semantics.c (finish_omp_threadprivate): Error on class-scope
2658 variables.
2659
2660 2005-11-02 Jakub Jelinek <jakub@redhat.com>
2661
2662 * parser.c (cp_parser_omp_all_clauses): If some clause
2663 type is not allowed, don't remove just one of the
2664 clauses, but all clauses added in that loop round.
2665
2666 * semantics.c (finish_omp_clauses): Fix function
2667 comment. Don't handle non-const or mutable specially,
2668 as const and not mutable is predetermined shared and
2669 that leads to double error. Don't ICE if copyin var is
2670 PARM_DECL.
2671
2672 PR c++/24613
2673 * parser.c (cp_parser_pragma): Diagnose
2674 PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
2675 construct.
2676
2677 * semantics.c (finish_omp_threadprivate): Error if V
2678 is automatic variable or has incomplete type.
2679
2680 2005-11-01 Diego Novillo <dnovillo@redhat.com>
2681
2682 * parser.c (cp_parser_omp_all_clauses): Use
2683 OMP_CLAUSE_CHAIN instead of TREE_CHAIN.
2684
2685 2005-11-01 Diego Novillo <dnovillo@redhat.com>
2686
2687 * parser.c (cp_parser_omp_all_clauses): When emitting an
2688 error message, remove the invalid clause from the list.
2689
2690 2005-10-31 Diego Novillo <dnovillo@redhat.com>
2691
2692 * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
2693 combined parallel+workshare directives.
2694
2695 2005-10-31 Richard Henderson <rth@redhat.com>
2696
2697 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
2698 Use cxx_omp_clause_dtor.
2699 * cp-tree.h (CP_OMP_CLAUSE_INFO): New.
2700 (cxx_omp_clause_dtor): New.
2701 * cp-gimplify.c (cxx_omp_clause_apply_fn): New.
2702 (cxx_omp_clause_default_ctor): Use it.
2703 (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
2704 Likewise.
2705 (cxx_omp_clause_dtor): New.
2706 * semantics.c (finish_omp_clauses): Rewrite cdtor
2707 checking to fill in CP_OMP_CLAUSE_INFO. Don't
2708 specialcase LASTPRIVATE for removal.
2709 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
2710 cxx_omp_clause_assign_op): Move to cp-gimplify.c.
2711
2712 2005-10-28 Jakub Jelinek <jakub@redhat.com>
2713
2714 * semantics.c (finish_omp_threadprivate): If
2715 DECL_RTL_SET_P, call make_decl_rtl again so that
2716 encode_section_info can update SYMBOL_REF's flags.
2717
2718 2005-10-26 Jakub Jelinek <jakub@redhat.com>
2719
2720 * semantics.c (finish_omp_for): Don't segfault if COND
2721 or INCR is NULL. If not calling c_finish_omp_for
2722 right away and one of COND and INCR is NULL, issue
2723 error and don't expand anything.
2724
2725 PR c++/24512
2726 * cp-tree.h (finish_omp_for): Add PRE_BODY argument.
2727 * semantics.c (finish_omp_for): Likewise. Set
2728 OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
2729 into the current statement list if not processing
2730 template decl or pass it to c_finish_omp_for.
2731
2732 * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
2733 into PRE_BODY statement list. Pass it to finish_omp_for.
2734 * pt.c (tsubst_expr) <case OMP_FOR>: tsubst_expr also
2735 OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
2736 finish_omp_for. Put all the statements into sk_omp
2737 scope.
2738
2739 2005-10-25 Jakub Jelinek <jakub@redhat.com>
2740
2741 PR c++/24516
2742 * parser.c (struct cp_parser): Rename in_iteration_statement
2743 field to in_statement.
2744 (IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
2745 (IN_OMP_BLOCK, IN_OMP_FOR): Change values.
2746 (cp_parser_new, cp_parser_begin_omp_structured_block,
2747 cp_parser_end_omp_structured_block,
2748 cp_parser_omp_for_loop): Adjust for
2749 in_iteration_statement renaming.
2750 (cp_parser_selection_statement): Save
2751 parser->in_iteration, or it temporarily with
2752 IN_SWITCH_STMT for the
2753 cp_parser_implicitly_scoped_statement call.
2754 (cp_parser_iteration_statement): Adjust for
2755 in_iteration_statement renaming. Use
2756 IN_ITERATION_STMT rather than true.
2757 (cp_parser_jump_statement): Adjust for
2758 in_iteration_statement renaming and new values. Don't
2759 error on break in a switch statement within OMP_FOR or
2760 OpenMP structured block.
2761
2762 PR c++/24513
2763 * parser.c (cp_parser_cache_group): Don't stop if next
2764 token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
2765 well. If current token is CPP_PRAGMA, consume
2766 everything until CPP_PRAGMA_EOL inclusive.
2767
2768 2005-10-24 Jakub Jelinek <jakub@redhat.com>
2769
2770 PR c++/24502
2771 * semantics.c (finish_omp_for): Handle MODOP_EXPR in
2772 addition to MODIFY_EXPR.
2773
2774 2005-10-23 Richard Henderson <rth@redhat.com>
2775
2776 * cp-gimplify.c (struct cp_gimplify_ctx): Remove.
2777 (bc_label): New.
2778 (begin_bc_block, finish_bc_block): Use it.
2779 (push_context, pop_context): Remove.
2780 (cp_genericize): Don't use them. Assert bc_label is null.
2781 * semantics.c (finish_omp_clauses): Create a fake data
2782 element of TYPE for probing ctors.
2783
2784 2005-10-23 Richard Henderson <rth@redhat.com>
2785
2786 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
2787 (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
2788 (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
2789 (LANG_HOOKS_OMP_CLAUSE_DTOR): New.
2790 * semantics.c (finish_omp_clauses): Look through
2791 arrays when looking up special member calls. Also
2792 remove FIRSTPRIVATE when LASTPRIVATE fails.
2793 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
2794 (cxx_omp_clause_assign_op): New.
2795 * cp-tree.h: Declare them.
2796
2797 2005-10-21 Richard Henderson <rth@redhat.com>
2798
2799 * decl.c (check_previous_goto_1): Return false if error.
2800 (check_switch_goto): Likewise.
2801 (finish_case_label): Don't emit the case label on error.
2802 * parser.c (struct cp_parser): Revert
2803 in_switch_statement_p changes.
2804 (cp_parser_labeled_statement,
2805 cp_parser_selection_statement): Likewise.
2806 (cp_parser_begin_omp_structured_block): Don't save...
2807 (cp_parser_end_omp_structured_block): or restore
2808 in_switch_statement_p.
2809
2810 2005-10-21 Richard Henderson <rth@redhat.com>
2811
2812 * semantics.c (finish_omp_threadprivate): Set
2813 decl_flags.u2sel when necessary.
2814
2815 2005-10-21 Richard Henderson <rth@redhat.com>
2816
2817 * decl.c (poplevel_named_label_1): Restore creation of the
2818 bad_decls list.
2819 (decl_jump_unsafe): Check for error_mark_node types.
229970c4 2820 (check_goto): Don't check cdtor_label. Don't use identify_goto.
e753d130 2821 * semantics.c (finish_return_stmt): Do check_omp_return before
1799e5d5
RH
2822 converting to cdtor_label goto.
2823
2824 2005-10-21 Richard Henderson <rth@redhat.com>
2825
2826 PR c++/24451
2827 * decl.c (check_omp_return): Return false on error.
2828 * cp-tree.h (check_omp_return): Update decl.
2829 * semantics.c (finish_return_stmt): Avoid adding
2830 return on error.
2831
2832 2005-10-21 Richard Henderson <rth@redhat.com>
2833
2834 * cp-tree.h (struct language_function): Remove
2835 x_named_label_uses.
2836 Change x_named_labels to a hashtable.
2837 (check_omp_return): Declare.
2838 * decl.c (struct named_label_use_entry): Rename from
2839 named_label_use_list. Remove label_decl.
2840 (struct named_label_entry): Rename from
2841 named_label_list. Remove old_value and next. Change
2842 in_try_scope and in_catch_scope to bool. Add
2843 in_omp_scope.
2844 (pop_labels_1): New.
2845 (pop_labels): Use it.
2846 (pop_local_label, poplevel_named_label_1): New.
2847 (poplevel): Use them.
2848 (named_label_entry_hash, named_label_entry_eq): New.
2849 (make_label_decl): Create named_labels. Move label
2850 creation bits from lookup_label.
2851 (declare_local_label): Tidy.
2852 (identify_goto): Split out from ...
2853 (check_previous_goto_1): Add exited_omp argument.
2854 Handle omp scopes.
2855
2856 (use_label): Merge into...
2857 (check_goto): ... here. Handle omp scopes.
2858 (check_omp_return): New.
2859 (check_previous_gotos): Merge into...
2860 (define_label): ... here.
2861 (save_function_data): Remove x_named_label_uses reference.
2862 (finish_function): Likewise.
2863 * name-lookup.h (sk_omp): New.
2864 * name-lookup.c (begin_scope): Handle it.
2865 * parser.c (cp_parser_omp_for): Don't create extra
2866 compound stmt.
2867
2868 (cp_parser_omp_sections): Likewise.
2869 * semantics.c (finish_return_stmt): Call check_omp_return.
2870 (begin_omp_structured_block): Use sk_omp.
2871 (finish_omp_structured_block): Use do_poplevel. Don't build a
2872 MUST_NOT_THROW expression here.
2873 (begin_omp_parallel, finish_omp_parallel): Don't create extra
2874 compound statements.
2875
2876 2005-10-21 Diego Novillo <dnovillo@redhat.com>
2877
2878 PR 24455
2879 * cp/cp-tree.h (struct lang_decl_flags): Add field
2880 threadprivate_p.
2881 (CP_DECL_IS_THREADPRIVATE): Define.
2882 * cp/semantics.c (finish_omp_threadprivate): Set. Do
2883 not error out if CP_DECL_IS_THREADPRIVATE is set
2884 already.
2885 * cp/decl.c (duplicate_decls): Merge
2886 CP_DECL_THREADPRIVATE_P.
2887
2888 2005-10-20 Richard Henderson <rth@redhat.com>
2889
2890 * cp-gimplify.c (cp_gimplify_omp_for): New.
2891 (cp_gimplify_expr): Call it.
2892 * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
2893 * parser.c (struct cp_parser): Rename
2894 in_iteration_statement_p to in_iteration_statement and
2895 change to unsigned char. Similarly with
2896 in_switch_statement. Update all users.
2897 (IN_OMP_BLOCK, IN_OMP_FOR): New.
2898 (cp_parser_labeled_statement): Diagnose case labels
2899 binding closer to an openmp block nested than the
2900 switch.
2901 (cp_parser_jump_statement): Diagnose break and
2902 continue labels binding closer to an openmp block than
2903 an iteration or switch.
2904 (cp_parser_omp_for_loop): Mark in_iteration_statement
2905 for an omp for.
2906 (cp_parser_begin_omp_structured_block): New.
2907 (cp_parser_end_omp_structured_block): New.
2908 (cp_parser_omp_structured_block): Use them.
2909 (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
2910 (cp_parser_omp_parallel): Likewise.
2911
2912 2005-10-20 Richard Henderson <rth@redhat.com>
2913
2914 * semantics.c (begin_omp_structured_block): New.
2915 (finish_omp_structured_block): New.
2916 (begin_omp_parallel, finish_omp_parallel): Use them.
2917 * parser.c (cp_parser_omp_structured_block): Likewise.
2918 (cp_parser_omp_for): Likewise.
2919 (cp_parser_omp_sections_scope): Likewise.
2920 * cp-tree.h: Declare them.
2921
2922 2005-10-20 Richard Henderson <rth@redhat.com>
2923
2924 * parser.c (cp_parser_omp_master): Return the statement.
2925 (cp_parser_omp_ordered): Likewise.
2926 (cp_parser_omp_construct): Set the locus for them.
2927
2928 2005-10-19 Richard Henderson <rth@redhat.com>
2929
2930 * semantics.c (finish_omp_atomic): Revert to
2931 uses_template_parms.
2932
2933 2005-10-19 Richard Henderson <rth@redhat.com>
2934
2935 * semantics.c (finish_omp_clauses): Avoid
2936 DECL_THREAD_LOCAL_P on a PARM_DECL. Remove some
2937 stub asserts guaranteed to fail.
2938
2939 2005-10-19 Richard Henderson <rth@redhat.com>
2940
2941 * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
2942 (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
2943 * parser.c (cp_parser_omp_clause_copyin): Remove.
e753d130
AP
2944 (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
2945 Call finish_omp_clauses.
1799e5d5
RH
2946 (cp_parser_omp_clause_if): Don't do error checking here.
2947 (cp_parser_omp_clause_num_threads): Likewise.
2948 (cp_parser_omp_clause_schedule): Likewise.
2949 (cp_parser_omp_atomic): Use finish_omp_atomic.
2950 (cp_parser_omp_for_loop): Don't discard DECL_EXPR.
2951 Don't decompose assignment statment here. Use
2952 finish_omp_for.
2953
2954 * pt.c (tsubst_omp_clauses): New.
2955 (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
2956 OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
2957 * semantics.c (finish_omp_clauses): New.
2958 (begin_omp_parallel, finish_omp_parallel): Know Less about the
2959 internals of the stmt_list stack.
2960 (finish_omp_for, finish_omp_atomic): New.
2961
2962 2005-10-18 Jakub Jelinek <jakub@redhat.com>
2963
2964 * semantics.c (cxx_omp_predetermined_sharing): New function.
2965 * cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
2966 * cp-objcp-common.h
2967 (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
2968
2969 2005-10-18 Richard Henderson <rth@redhat.com>
2970
2971 * parser.c (cp_parser_omp_single): Use make_node and accessors
2972 instead of build.
2973
2974 2005-10-17 Richard Henderson <rth@redhat.com>
2975
2976 * parser.c (cp_parser_omp_for_loop): Handle declarations.
2977
2978 2005-10-12 Richard Henderson <rth@redhat.com>
2979
2980 * Make-lang.in (CXX_C_OBJS): Add c-omp.o.
2981 * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
2982 (finish_omp_threadprivate): Declare.
2983 * parser.c (struct cp_lexer): Add in_pragma.
2984 (cp_lexer_consume_token): Don't consume a PRAGMA_EOL
2985 when in_pragma.
2986 (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
2987 (cp_parser_skip_to_end_of_statement): Likewise.
2988 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
2989 (cp_parser_skip_to_closing_brace): Likewise.
2990 (cp_parser_skip_to_pragma_eol): Reset in_pragma.
2991 (cp_parser_require_pragma_eol): New.
2992 (cp_parser_statement): Add in_compound argument;
2993 update all callers.
2994 Restart if a non-statement pragma seen outside a
2995 compound.
2996 (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
2997 (cp_parser_declaration_seq_opt): Likewise.
2998 (cp_parser_member_specification_opt): Likewise.
2999 (cp_parser_function_definition_after_decl): Likewise.
3000 (cp_parser_skip_until_found): Likewise.
3001 (cp_parser_cache_group): Likewise.
3002 (enum pragma_omp_clause, cp_parser_omp_clause_name,
3003 check_no_duplicate_clause,
3004 cp_parser_omp_var_list_no_open,
3005 cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
3006 cp_parser_omp_clause_default, cp_parser_omp_clause_if,
3007 cp_parser_omp_clause_nowait,
3008 cp_parser_omp_clause_num_threads,
3009 cp_parser_omp_clause_ordered,
3010 cp_parser_omp_clause_reduction,
3011 cp_parser_omp_clause_schedule,
3012 cp_parser_omp_all_clauses,
3013 cp_parser_omp_structured_block, cp_parser_omp_atomic,
3014 cp_parser_omp_barrier, cp_parser_omp_critical,
3015 cp_parser_omp_flush, cp_parser_omp_for_loop,
3016 cp_parser_omp_for, cp_parser_omp_master,
3017 cp_parser_omp_ordered, cp_parser_omp_sections_scope,
3018 cp_parser_omp_sections, cp_parser_omp_parallel,
3019 cp_parser_omp_single, cp_parser_omp_threadprivate,
3020 cp_parser_omp_construct): New.
3021 (cp_parser_pragma): Handle OpenMP pragmas.
3022 * semantics.c (finish_omp_threadprivate): New.
3023 (begin_omp_parallel, finish_omp_parallel): New.
3024
3025 2005-10-11 Richard Henderson <rth@redhat.com>
3026
3027 * parser.c (struct cp_token): Add pragma_kind.
3028 (eof_token): Initialize it.
3029 (cp_lexer_handle_pragma): Remove.
3030 (cp_parser_initial_pragma): New.
3031 (cp_lexer_new_main): Use it.
3032 (cp_lexer_get_preprocessor_token): Initialize pragma_kind.
3033 (cp_lexer_print_token): Don't handle CPP_PRAGMA.
3034 (cp_parser_skip_to_pragma_eol): New.
3035 (cp_parser_error): Use it.
3036 (pragma_lex): New.
3037
3038 2005-10-09 Richard Henderson <rth@redhat.com>
3039
3040 * lex.c (parse_strconst_pragma): Update for c_lex name change.
3041 (handle_pragma_java_exceptions): Likewise.
3042 * parser.c (cp_lexer_new_main): Likewise.
3043
3044 2005-10-06 Richard Henderson <rth@redhat.com>
3045
3046 * parser.c (cp_lexer_new_main): Comment out defer_pragmas.
3047 (cp_lexer_handle_pragma): Comment out
3048 cpp_handle_deferred_pragma.
3049
3050 2005-10-01 Richard Henderson <rth@redhat.com>
3051
3052 * name-lookup.c (lookup_name): Remove prefer_type argument.
3053 (lookup_name_prefer_type): New function.
3054 * name-lookup.h (lookup_name_prefer_type): Declare it.
3055 * decl.c (lookup_and_check_tag): Use it.
3056 * pt.c (tsubst_friend_class): Likewise. Update for
3057 lookup_name change.
3058 (lookup_template_class, tsubst_copy_and_build): Likewise.
3059
a3c5267c
VR
30602006-03-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3061
3062 PR c++/15759
3063 * tree.c (bot_manip): Don't call mark_used.
3064
67a70df6
MS
30652006-03-02 Mike Stump <mrs@apple.com>
3066
3067 * decl2.c (import_export_decl): Remove redundant call to
3068 targetm.cxx.key_method_may_be_inline ().
3069
434aeebb
RS
30702006-03-02 Richard Sandiford <richard@codesourcery.com>
3071
3072 * decl.c (start_decl): Use have_global_bss_p when deciding
3073 whether to make the decl common.
3074
1a1d0917
MS
30752006-03-01 Mike Stump <mrs@apple.com>
3076
3077 PR darwin/25908
3078 * decl2.c (import_export_decl): Fix ABI breakage on darwin.
3079
c7b5e395
GK
30802006-02-24 Geoffrey Keating <geoffk@apple.com>
3081
3082 * except.c (expand_start_catch_block): Handle
3083 flag_use_cxa_get_exception_ptr.
3084
64844139
VR
30852006-02-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3086
3087 PR c++/26291
3088 * decl.c (grok_op_properties): Check for ellipsis in arguments of
1799e5d5 3089 operators.
64844139
VR
3090
3091