OSDN Git Service

c5b8e76829e77d8e2df842372aad6c76884973b3
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2010-04-07  Jason Merrill  <jason@redhat.com>
2
3         * name-lookup.c (current_decl_namespace): Non-static.
4         (pop_nested_namespace): Sanity check.
5         * cp-tree.h: Declare current_decl_namespace.
6         * decl.c (grokvardecl): Use it instead of current_namespace.
7         (grokfndecl): Likewise.
8
9         PR c++/38392
10         * pt.c (tsubst_friend_function): Instatiate a friend that has already
11         been used.
12
13         * pt.c (print_template_statistics): New.
14         * cp-tree.h: Declare it.
15         * tree.c (cxx_print_statistics): Call it.
16
17         PR c++/41970
18         * decl.c (grokvardecl): Tweak warning message.
19         (grokfndecl): Likewise.
20
21 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
22
23         PR c++/42697
24         *pt.c (tsubst_decl): Get the arguments of a specialization from
25         the specialization template, not from the most general template.
26
27 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
28
29         PR c++/40239
30         * typeck2.c (process_init_constructor_record):
31         value-initialize members that are are not explicitely
32         initialized.
33
34 2010-04-07  Jie Zhang  <jie@codesourcery.com>
35
36         PR c++/42556
37         * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR
38         when all of its elements are non-constant and have been split out.
39
40 2010-04-06  Taras Glek  <taras@mozilla.com>
41             Jason Merrill  <jason@redhat.com>
42
43         * parser.c (cp_parser_class_specifier): Set class location to that
44         of IDENTIFIER_NODE instead of '{' when possible.
45         * semantics.c (begin_class_definition): Do not overide locations
46         with less precise ones.
47
48 2010-04-06  Jason Merrill  <jason@redhat.com>
49
50         PR c++/43648
51         * name-lookup.c (constructor_name_p): Allow X::~X even for typedefs.
52
53         PR c++/43621
54         * pt.c (maybe_update_decl_type): Check the return value from
55         push_scope.
56
57 2010-04-01  Jason Merrill  <jason@redhat.com>
58
59         * decl.c (next_initializable_field): No longer static.
60         * cp-tree.h: Declare it.
61         * call.c (build_aggr_conv): Fail if there are more initializers
62         than initializable fields.
63
64         * semantics.c (maybe_add_lambda_conv_op): Use null_pointer_node
65         instead of void_zero_node.
66
67 2010-03-31  Dodji Seketeli  <dodji@redhat.com>
68
69         PR c++/43558
70         * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): New accessor macro.
71         * pt.c (end_template_parm_list): Store sibling template parms of
72         each TEMPLATE_TYPE_PARMs into its TEMPLATE_TYPE_PARM_SIBLING_PARMS.
73         (push_template_decl_real): Don't store the containing template decl
74         into the DECL_CONTEXT of TEMPLATE_TYPE_PARMs anymore.
75         * typeck.c (get_template_parms_of_dependent_type): Get sibling parms
76         of a TEMPLATE_TYPE_PARM from TEMPLATE_TYPE_PARM_SIBLING_PARMS.
77         Simplify the logic.
78
79 2010-03-30  Jason Merrill  <jason@redhat.com>
80
81         PR c++/43076
82         * pt.c (push_template_decl_real): Deal better with running out of
83         scopes before running out of template parms.
84
85         PR c++/41185
86         PR c++/41786
87         * parser.c (cp_parser_direct_declarator): Don't allow VLAs in
88         function parameter context.  Don't print an error if parsing
89         tentatively.
90
91         PR c++/43559
92         * pt.c (more_specialized_fn): Don't control cv-qualifier check
93         with same_type_p.
94
95 2010-03-26  Jason Merrill  <jason@redhat.com>
96
97         PR c++/43509
98         * parser.c (cp_parser_qualifying_entity): Do accept enum names in
99         c++0x mode, but not other type-names.
100
101 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
102
103         PR c++/43327
104         * pt.c (add_to_template_args): Support NULL ARGS;
105         (most_specialized_class): call coerce_template_parms on
106         template arguments passed to get_class_bindings. Use
107         add_to_template_args.
108         (unify): Handle VAR_DECLs.
109
110 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
111
112         * cp-tree.h (get_template_parms_at_level): Change unsigned parm
113         into int.
114         * pt.c (get_template_parms_at_level): Adjust.
115
116 2010-03-25  Dodji Seketeli  <dodji@redhat.com>
117
118         PR c++/43206
119         * cp-tree.h (get_template_parms_at_level): Declare ...
120         * pt.c (get_template_parms_at_level): ... new function.
121         * typeck.c (get_template_parms_of_dependent_type): If a template
122         type parm's DECL_CONTEXT isn't yet set, get its siblings from
123         current_template_parms. Use get_template_parms_at_level. Remove
124         useless test.
125         (incompatible_dependent_types_p): If we get empty parms from just one
126         of the template type parms we are comparing then the template parms are
127         incompatible.
128
129 2010-03-24  Jason Merrill  <jason@redhat.com>
130
131         PR c++/43502
132         * parser.c (make_declarator): Initialize id_loc.
133         (cp_parser_lambda_declarator_opt): And set it.
134
135 2010-03-23  Jason Merrill  <jason@redhat.com>
136
137         Make lambda conversion op and op() non-static.
138         * semantics.c (maybe_add_lambda_conv_op): Make non-static.
139         Also add the thunk function returned by the conversion op.
140         Mark the conversion deleted if the op() is variadic.
141         * decl2.c (mark_used): Give helpful message about deleted conversion.
142         * parser.c (cp_parser_lambda_declarator_opt): Don't make op() static.
143         * semantics.c (finish_this_expr): Adjust.
144         * mangle.c (write_closure_type_name): Adjust.
145         * decl.c (grok_op_properties): Don't allow it.
146         * call.c (build_user_type_conversion_1): No static conversion ops.
147         (build_op_call): Or op().
148
149         * decl2.c (change_return_type): Fix 'this' quals.
150
151 2010-03-22  Jason Merrill  <jason@redhat.com>
152
153         PR c++/43333
154         * tree.c (pod_type_p): Use old meaning in C++98 mode.
155
156         PR c++/43281
157         * pt.c (contains_auto_r): New fn.
158         (do_auto_deduction): Use it.
159         (tsubst): Don't look at TREE_TYPE of a TEMPLATE_TYPE_PARM.
160
161 2010-03-20  Simon Martin  <simartin@users.sourceforge.net>
162
163         PR c++/43081:
164         * decl2.c (grokfield): Handle invalid initializers for member
165         functions.
166
167 2010-03-20  Dodji Seketeli  <dodji@redhat.com>
168
169         PR c++/43375
170         * method.c (make_alias_for): Avoid crashing when DECL_LANG_SPECIFIC
171         is NULL.
172         * decl2.c (vague_linkage_p): Likewise.
173
174 2010-03-18  Paolo Carlini  <paolo.carlini@oracle.com>
175
176         PR c++/43418
177         * parser.c (cp_parser_for_init_statement): Use NULL_TREE, not
178         false, in the cp_parser_expression_statement call.
179
180 2010-03-05  Jason Merrill  <jason@redhat.com>
181
182         * mangle.c (mangle_decl): Give name collision error even without
183         ASM_OUTPUT_DEF.
184
185 2010-03-04  Marco Poletti  <poletti.marco@gmail.com>
186
187         * pt.c (process_partial_specialization): Use error_n instead of
188         error.
189
190 2010-03-03  Jason Merrill  <jason@redhat.com>
191
192         PR c++/12909
193         * mangle.c (mangle_decl): Handle VAR_DECL, too.
194
195 2010-03-03  Jason Merrill  <jason@redhat.com>
196
197         PR c++/12909
198         * mangle.c (mangle_decl): Handle VAR_DECL, too.
199
200 2010-03-03  Jason Merrill  <jason@redhat.com>
201
202         PR c++/12909
203         * mangle.c: Include cgraph.h.
204         (mangle_decl): If the mangled name will change in a later
205         ABI version, make the later mangled name an alias.
206         * method.c (make_alias_for): Copy DECL_ARGUMENTS.
207         * Make-lang.in (mangle.o): Depend on cgraph.h.
208         * method.c (make_alias_for): Handle VAR_DECL, too.
209         * decl2.c (vague_linkage_p): Rename from vague_linkage_fn_p.
210         * tree.c (no_linkage_check): Adjust.
211         * decl.c (maybe_commonize_var): Adjust.
212         * cp-tree.h: Adjust.
213
214 2010-03-01  Marco Poletti  <poletti.marco@gmail.com>
215
216         * pt.c (redeclare_class_template): Use error_n and inform_n.
217
218 2010-02-27  Mark Mitchell  <mark@codesourcery.com>
219
220         PR c++/42748
221         * cp-tree.h (push_tinst_level): Declare.
222         (pop_tinst_level): Likewise.
223         * pt.c (push_tinst_level): Give it external linkage.
224         (pop_tinst_level): Likewise.
225         * mangle.c (mangle_decl_string): Set the source location to that
226         of the decl while mangling.
227
228 2010-02-27  Simon Martin  <simartin@users.sourceforge.net>
229
230         PR c++/42054
231         * pt.c (redeclare_class_template): Return false if there are erroneous
232         template parameters.
233
234 2010-02-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
235
236         * pt.c (push_tinst_level): Replace -ftemplate-depth- with 
237         -ftemplate-depth=.
238
239 2010-02-24  Jason Merrill  <jason@redhat.com>
240
241         PR c++/12909
242         * mangle.c (write_type): Give -Wabi warning for old vector mangling.
243
244         * class.c (layout_class_type): Don't give -Wabi warning for a bug
245         in a previous ABI version.
246
247 2010-02-23  Jason Merrill  <jason@redhat.com>
248
249         PR c++/43143
250         * typeck2.c (digest_init_r): Accept value init of array.
251
252 2010-02-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
253
254         PR c++/43126
255         * typeck.c (convert_arguments): Update error message.
256
257 2010-02-22  Mike Stump  <mikestump@comcast.net>
258
259         PR c++/43125
260         * decl.c (duplicate_decls): Merge DECL_PRESERVE_P.
261
262 2010-02-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
263
264         PR c++/23510
265         * error.c (print_instantiation_partial_context_line): New.
266         (print_instantiation_partial_context): Print at most 12 contexts,
267         skip the rest with a message.
268
269 2010-02-21  Dodji Seketeli  <dodji@redhat.com>
270
271         PR c++/42824
272         * pt.c (lookup_template_class): Better support of specialization
273         of member of class template implicit instantiation.
274
275 2010-02-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
276
277         PR c++/35669
278         * call.c (conversion_null_warnings): Replace -Wconversion with
279         -Wconversion-null.
280         * cvt.c (build_expr_type_conversion): Likewise.
281
282 2010-02-18  Jason Merrill  <jason@redhat.com>
283
284         PR c++/42837
285         * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
286
287         PR c++/43108
288         * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from
289         C build_binary_op.
290         * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR.
291         * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE.
292
293         PR c++/43070
294         * semantics.c (finish_goto_stmt): Don't call decay_conversion.
295
296         PR c++/26261
297         PR c++/43101
298         * pt.c (tsubst_qualified_id): Do normal lookup in non-dependent scope.
299         (maybe_update_decl_type): New fn.
300         * parser.c (cp_parser_init_declarator): Use it.
301
302         PR c++/43109
303         * semantics.c (begin_class_definition): Don't crash on unnamed ns.
304
305 2010-02-17  Jason Merrill  <jason@redhat.com>
306
307         PR c++/43075
308         * call.c (build_over_call): Don't create zero-sized assignments.
309         * cp-gimplify.c (cp_genericize_r): Don't remove them here.
310         * cp-objcp-common.c (cp_expr_size): Remove.
311         * cp-tree.h: Remove prototype.
312
313         PR c++/43069
314         * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
315         decl we looked up doesn't match.
316
317         PR c++/43093
318         * cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
319         have an INIT_EXPR anymore.
320
321         PR c++/43079
322         * pt.c (convert_nontype_argument): Change assert to test.
323
324 2010-02-16  Jason Merrill  <jason@redhat.com>
325
326         * cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
327
328         PR c++/43031
329         * cp-gimplify.c (cp_gimplify_expr) [MODIFY_EXPR]: Use
330         VIEW_CONVERT_EXPR for conversions between structural equality types
331         that the back end can't tell are the same.
332
333         PR c++/43036
334         * tree.c (build_cplus_array_type): Set TYPE_MAIN_VARIANT to strip
335         cv-quals from element here.
336         (cp_build_qualified_type_real): Not here.  Preserve typedef name.
337
338 2010-02-14  Jason Merrill  <jason@redhat.com>
339
340         PR c++/41997
341         * semantics.c (finish_compound_literal): Use
342         cp_apply_type_quals_to_decl when creating a static variable.
343
344 2010-02-12  Jason Merrill  <jason@redhat.com>
345
346         PR c++/43024
347         * name-lookup.h (current_binding_level): Check for null
348         cp_function_chain.
349
350 2010-02-12  Jason Merrill  <jason@redhat.com>
351
352         PR c++/43054
353         * tree.c (cp_tree_equal): Correct CALL_EXPR logic.
354
355 2010-02-12  Jakub Jelinek  <jakub@redhat.com>
356
357         PR c++/43033
358         * name-lookup.c (pushdecl_maybe_friend): Check default args of t
359         instead of x.
360
361 2010-02-10  Jason Merrill  <jason@redhat.com>
362
363         PR c++/41896
364         * semantics.c (outer_lambda_capture_p): Revert.
365         (add_capture): Only finish_member_declaration if
366         we're in the lambda class.
367         (register_capture_members): New.
368         * cp-tree.h: Declare it.
369         * parser.c (cp_parser_lambda_expression): Call it.
370
371 2010-02-10  Jason Merrill  <jason@redhat.com>
372
373         PR c++/41896
374         * semantics.c (outer_lambda_capture_p): Use current_function_decl
375         instead of current_class_type.
376
377 2010-02-10  Jason Merrill  <jason@redhat.com>
378
379         PR c++/42983, core issue 906
380         * method.c (defaultable_fn_check): Check virtualness.
381
382 2010-02-10  Jason Merrill  <jason@redhat.com>
383
384         PR c++/43016
385         * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
386
387 2010-02-10  Shujing Zhao  <pearly.zhao@oracle.com>
388
389         * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h.
390         * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy
391         translation.
392         * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id)
393         (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype)
394         (cp_parser_parameter_declaration)
395         (cp_parser_exception_specification_opt)
396         (cp_parser_exception_declaration): Likewise.
397         * pt.c (check_default_tmpl_args): Likewise.
398         * search.c (lookup_field_r): Likewise.
399
400 2010-02-09  Jason Merrill  <jason@redhat.com>
401
402         PR c++/42399
403         * pt.c (tsubst_copy_and_build): Propagate LAMBDA_EXPR_LOCATION.
404
405 2010-02-09  Jason Merrill  <jason@redhat.com>
406
407         PR c++/42370
408         * decl2.c (change_return_type): New fn.
409         * semantics.c (apply_lambda_return_type): Use it.
410         * cp-tree.h: Declare it.
411
412 2010-02-05  Richard Guenther  <rguenther@suse.de>
413
414         * Make-lang.in (cp/cp-lang.o): Depend on gt-cp-cp-lang.h.
415         * cp-lang.c: Include gt-cp-cp-lang.h.
416         * config-lang.in (gtfiles): Add cp/cp-lang.c.
417
418 2010-02-05  Dodji Seketeli  <dodji@redhat.com>
419
420         PR c++/42915
421         * typeck.c (get_template_parms_of_dependent_type): Try getting
422         the template parameters fromt the type itself first.
423
424 2010-02-03  Jason Merrill  <jason@redhat.com>
425
426         PR c++/4926
427         PR c++/38600
428         * mangle.c (write_unqualified_id): Split out from write_expression.
429         (write_unqualified_name): Call it.
430         (write_member_name): Likewise.
431         (write_expression): Support TEMPLATE_ID_EXPR.
432         Disambiguate operator names.
433
434         PR c++/12909
435         * mangle.c (write_type) [VECTOR_TYPE]: Change mangling with
436         -fabi-version=4.
437
438 2010-02-02  Jason Merrill  <jason@redhat.com>
439
440         PR c++/41090
441         * decl.c (cp_finish_decl): Add local statics to cfun->local_decls.
442         * optimize.c (clone_body): Remap their initializers when making base
443         variants.
444         (maybe_clone_body): Complain if multiple clones aren't safe.
445
446 2010-01-29  Dodji Seketeli  <dodji@redhat.com>
447
448         PR c++/42758
449         PR c++/42634
450         PR c++/42336
451         PR c++/42797
452         PR c++/42880
453         * cp-tree.h (NON_DEFAULT_TEMPLATE_ARGS_COUNT,
454         SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT,
455         GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT): New accessor macros.
456         * pt.c (coerce_template_parms, type_unification_real,
457         expand_template_argument_pack, coerce_template_parameter_pack):
458         Set the non default template args count.
459         (current_template_args): Always set non defaulted
460         template args count when compiled with --enable-checking
461         (tsubst_template_args, type_unification_real): Propagate the non
462         defaulted template args count.
463         * error.c (get_non_default_template_args_count): Renamed
464         count_non_default_template_args into this. Don't calculate the
465         non default template argument count anymore. Use the new
466         accessor macros above to get it.
467         (dump_template_argument_list, dump_type, dump_decl,
468         dump_template_parms): Adjust.
469         * parser.c (cp_parser_template_argument_list): Always set defaulted
470         template args count when compiled with --enable-checking.
471
472 2010-01-29  Shujing Zhao  <pearly.zhao@oracle.com>
473
474         * decl.c (redeclaration_error_message): Wrap the return messages into
475         G_() for easy translation.
476
477 2010-01-28  Jason Merrill  <jason@redhat.com>
478
479         PR c++/42880
480         * semantics.c (begin_class_definition): Don't use type_as_string.
481
482 2010-01-28  Dodji Seketeli  <dodji@redhat.com>
483
484         PR c++/42713
485         PR c++/42820
486         * typeck.c (get_template_parms_of_dependent_type): Factorized
487         this out of incompatible_template_type_parms_p
488         (incompatible_dependent_types_p): Renamed
489         incompatible_template_type_parms_p into this. Make it detect
490         two incompatible dependent typedefs too.
491         (structural_comptypes): Use incompatible_dependent_types_p.
492         * pt.c (get_template_info):
493         Handle BOUND_TEMPLATE_TEMPLATE_PARAM.
494
495 2010-01-20  Janis Johnson  <janis187@us.ibm.com>
496             Jason Merrill  <jason@redhat.com>
497
498         * mangle.c (write_type): Mangle transparent record as member type.
499         * semantics.c (begin_class_definition): Recognize decimal classes
500         and set TYPE_TRANSPARENT_AGGR.
501
502 2010-01-20  Jason Merrill  <jason@redhat.com>
503
504         PR c++/42338
505         * mangle.c (write_expression): Handle tree codes that have extra
506         arguments in the middle-end.
507
508 2010-01-20  Paolo Carlini  <paolo.carlini@oracle.com>
509
510         PR c++/42038
511         * except.c (expand_start_catch_block): Deal correctly with
512         do_begin_catch returning error_mark_node.
513
514 2010-01-20  Jason Merrill  <jason@redhat.com>
515
516         PR c++/41788
517         * class.c (layout_class_type): Set packed_maybe_necessary for packed
518         non-PODs.
519
520         PR c++/41920
521         * semantics.c (build_lambda_object): Call mark_used on captured
522         variables.
523
524         PR c++/40750
525         * decl.c (grokdeclarator): Clear type_quals for a member function
526         declared using a typedef.  Don't complain about adding cv-quals
527         to a function typedef in C++0x mode.
528
529 2010-01-20  Jakub Jelinek  <jakub@redhat.com>
530
531         * decl.c (create_array_type_for_decl): Remove set but not used
532         variable error_msg.  Remove break stmts after return stmts.
533
534 2010-01-19  Dodji Seketeli  <dodji@redhat.com>
535
536         * error.c (dump_template_parms, count_non_default_template_args):
537         Revert fix of PR c++/42634.
538
539 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
540
541         PR c++/42634
542         * error.c (dump_template_parms): Use innermost template
543         arguments before calling count_non_default_template_args.
544         (count_non_default_template_args): We are being called with
545         template innermost arguments now. There is no need to ensure
546         that again.
547
548 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
549
550         PR c++/42766
551         * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
552
553 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
554
555         PR c++/42697
556         *pt.c (tsubst_decl):  Revert commit for PR c++/42697.
557
558 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
559
560         PR c++/42697
561         *pt.c (tsubst_decl): Get the arguments of a specialization from
562         the specialization template, not from the most general template.
563
564 2010-01-16  Jason Merrill  <jason@redhat.com>
565
566         PR c++/42761
567         * semantics.c (finish_decltype_type): Within a template, treat
568         unresolved CALL_EXPR as dependent.
569
570 2010-01-15  Dodji Seketeli  <dodji@redhat.com>
571
572         * error.c (dump_template_parms,count_non_default_template_args):
573         Revert changes of PR c++/42634.
574
575 2010-01-14  Jakub Jelinek  <jakub@redhat.com>
576
577         PR middle-end/42674
578         * decl.c (finish_function): Don't emit -Wreturn-type warnings in
579         functions with noreturn attribute.
580
581 2010-01-14  Jason Merrill  <jason@redhat.com>
582
583         PR c++/42701
584         * call.c (build_new_method_call): Don't free the vec here.
585
586         PR c++/42655
587         * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
588
589 2010-01-13  Dodji Seketeli  <dodji@redhat.com>
590
591         PR c++/42634
592         * error.c (dump_template_parms): Use innermost template
593         arguments before calling count_non_default_template_args.
594         (count_non_default_template_args): We are being called with
595         template innermost arguments now. There is no need to ensure
596         that again.
597
598 2010-01-07  Dodji Seketeli  <dodji@redhat.com>
599
600         c++/40155
601         * pt.c (unify_pack_expansion): In non-deduced contexts, re-use template
602         arguments that were previously deduced.
603
604 2010-01-05  Jason Merrill  <jason@redhat.com>
605
606         * pt.c (unify_pack_expansion): Handle deduction from init-list.
607         * call.c (build_over_call): Don't complain about it.
608
609 2010-01-04  Jason Merrill  <jason@redhat.com>
610
611         PR c++/42555
612         * pt.c (tsubst_decl): Don't apply type attributes in place.
613
614         PR c++/42567
615         * semantics.c (describable_type): Remove decltype comment and
616         semantics.
617
618
619 \f
620 Copyright (C) 2010 Free Software Foundation, Inc.
621
622 Copying and distribution of this file, with or without modification,
623 are permitted in any medium without royalty provided the copyright
624 notice and this notice are preserved.