Commit Graph

23917 Commits

Author SHA1 Message Date
Bernd Schmidt
c2a37c55a6 define_function cleanup
From-SVN: r29360
1999-09-12 14:03:23 +00:00
Richard Henderson
40c1bf53bb * alpha.md (adddi3): Make `pattern' array static.
From-SVN: r29359
1999-09-12 05:46:27 -07:00
Richard Henderson
a995e389c4 Replace insn_foo with insn_data.foo.
From-SVN: r29358
1999-09-12 05:46:08 -07:00
Michael Hayes
ddf16f1841 c4x.h (c4x_rpts_cycles_string, [...]): Constify char *.
* config/c4x/c4x.h (c4x_rpts_cycles_string,
	c4x_cpu_version_string): Constify char *.
	* config/c4x/c4x.c (c4x_rpts_cycles_string,
	c4x_cpu_version_string): Likewise.

From-SVN: r29357
1999-09-12 10:24:02 +00:00
Jeff Law
63fcb74e85 Daily bump.
From-SVN: r29356
1999-09-12 01:45:08 -06:00
Richard Henderson
24554b03c6 tree.c (save_tree_status): Revert 10 Sep change.
* tree.c (save_tree_status): Revert 10 Sep change.
        (restore_tree_status): Likewise.  Call obstack_free with NULL
        before freeing the obstack proper.

From-SVN: r29355
1999-09-11 23:30:39 -07:00
Richard Henderson
1497faf6be * cse.c (cse_main): If gc'ing, collect around cse_basic_block.
From-SVN: r29354
1999-09-11 23:26:04 -07:00
Richard Henderson
0172a8f1f4 ggc-simple.c (ggc_pop_context): Fold outstanding bytes into surrounding context.
* ggc-simple.c (ggc_pop_context): Fold outstanding bytes into
        surrounding context.

From-SVN: r29353
1999-09-11 23:25:44 -07:00
Alexandre Petit-Bianco
f4e16489df re GNATS gcj/18 (Internal error: segfault on invalid cast)
Sat Sep 11 16:46:44 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (find_applicable_accessible_methods_list): Search
        abstract classes as interfaces.

(Fix to Java PR #18:
 http://sourceware.cygnus.com/ml/java-prs/1999-q3/msg00015.html)

From-SVN: r29352
1999-09-11 20:20:31 -07:00
Mark Mitchell
858e574fdc tree.c (type_hash_canon): Put all types in the hash-table, when GC'ing.
* tree.c (type_hash_canon): Put all types in the hash-table, when
	GC'ing.

From-SVN: r29351
1999-09-12 02:49:34 +00:00
Mark Mitchell
5868eb4e0a decl.c (add_decl_to_level): Remove TREE_PERMANENT assertion.
* decl.c (add_decl_to_level): Remove TREE_PERMANENT assertion.
	(init_decl_processing): Don't set TREE_PERMANENT for the
	error_mark_node.
	(start_decl): Don't rebuild non-permanent ARRAY_TYPEs.
	(grokdeclarator): Likewise.
	(grokparms): Don't check TREE_PERMANENT when building up lists.
	* decl2.c (grokfield): Don't assert TREE_PERMANENT.
	(mark_inline_for_output): Likewise.
	* expr.c (cplus_expand_expr): Don't check TREE_PERMANENT.
	* init.c (build_offset_ref): Don't check TREE_PERMANENT.
	* lex.c (check_newline): Don't check ggc_p; it is always one.
	* pt.c (process_template_parm): Don't check TREE_PERMANENT.
	* spew.c (yylex): Don't copy_node or probe_obstacks for
	non-permanent CONSTANTs and STRINGs.
	* tree.c (build_cplus_array_type_1): Don't fuss with
	TREE_PERMANENT on ARRAY_TYPEs.

From-SVN: r29350
1999-09-12 02:45:30 +00:00
Richard Henderson
1ccbefcef2 Replace recog_foo with recog_data.foo.
From-SVN: r29349
1999-09-11 18:51:28 -07:00
Mark Mitchell
24bef15854 cp-tree.def (CLEANUP_STMT): New node.
* cp-tree.def (CLEANUP_STMT): New node.
	* cp-tree.h (language_function): Add name_declared.
	(current_function_name_declared): New macro.
	(CLEANUP_DECL): New macro.
	(CLEANUP_EXPR): Likewise.
	(emit_local_var): Likewise.
	(finish_decl_cleanup): New function.
	* cvt.c (build_up_reference): Simplify.
	(ocp_convert): Remove dead code.
	* decl.c (start_decl): Remove call to add_decl_stmt.
	(grok_reference_init): Adjust, to handle bindings temporaries to
	references.  Remove dead code.
	(initialize_local_var): Don't generate RTL for
	declarations here, or build cleanups here.  Don't fuss with
	obstacks.  Replace expand_start_target_temps calls with explicit
	setting of stms_are_full_exprs_p.
	(destroy_local_var): New function.
	(emit_local_var): Likewise.
	(cp_finish_decl): Use them, as appropriate.
	(start_function): Announce template functions.
	(store_parm_decls): Don't call declare_function_name here.
	(finish_stmt): Don't start emit base-initialization code when just
	building the statement-tree.
	* init.c (create_temporary_var): Move add_decl_stmt call ...
	(get_temp_regvar): Here.
	* pt.c (tsubst_expr): Make DECL_INITIAL look like what
	cp_finish_decl would expect.  Don't call add_decl_stmt.
	* semantics.c (begin_compound_stmt): Call declare_function_name,
	if appropriate.
	(finish_decl_cleanup): New function.
	(expand_stmt): Use emit_local_var to output variables.
	(expand_body): Set current_funtion_name_declared.

From-SVN: r29348
1999-09-12 01:12:59 +00:00
Alexandre Petit-Bianco
fcf6eeb628 class.c (finish_class): We're now outside a valid method declaration.
Thu Sep  9 17:33:28 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * class.c (finish_class): We're now outside a valid method
        declaration. Tell the rest of gcc so.

From-SVN: r29347
1999-09-11 15:22:57 -07:00
Craig Burley
697f6b2ff5 New shell scripts to ease dealing with Netlib f2c vis-a-vis g77 libg2c
From-SVN: r29346
1999-09-11 17:53:17 -04:00
Zack Weinberg
07095a8b8f Remove trailing whitespace from lines
From-SVN: r29283
1999-09-11 21:13:01 +00:00
Richard Henderson
a611912f13 Update copyright.
From-SVN: r29282
1999-09-11 12:50:42 -07:00
Alex Samuel
b49a6a907c Alex Samuel <samuel@codesourcery.com>
* ggc.h (rtvec_def): Forward declare.
        (tree_node): Likewise.
        (ggc_root): Define.
        (roots): Declare.
        (ggc_set_mark_rtx): Add prototype.
        (ggc_set_mark_rtvec): Likewise.
        (ggc_set_mark_tree): Likewise.
        * ggc-simple.c (ggc_root): Don't define.
        (roots): Don't declare.
        (ggc_mark_rtx): Remove.
        (ggc_mark_rtvec): Likewise.
        (ggc_mark_tree): Likewise.
        (ggc_mark_varray): Likewise.
        (ggc_mark_tree_hash_table_entry): Likewise.
        (ggc_mark_tree_hash_table): Likewise.
        (ggc_set_mart_rtx): New function.
        (ggc_set_mark_rtvec): Likewise.
        (ggc_set_mark_tree): Likewise.
        (ggc_add_root): Remove.
        (ggc_add_rtx_root): Likewise.
        (ggc_remove_tree_root): Likewise.
        (ggc_add_string_root): Likewise.
        (ggc_add_tree_varray_root): Likewise.
        (ggc_add_tree_hash_table_root): Likewise.
        (ggc_del_root): Likewise.
        (ggc_mark_rtx_ptr): Likewise.
        (ggc_mark_tree_ptr): Likewise.
        (ggc_mark_string_ptr): Likewise.
        (ggc_mark_tree_varray_ptr): Likewise.
        (ggc_mark_tree_hash_table_ptr): Likewise.
        * ggc-common.c: New file.
        * Makefile.in (OBJS): Add ggc-common.o.
        (ggc-common.o): List dependencies.

From-SVN: r29281
1999-09-11 12:48:37 -07:00
Jeff Law
61efc8c246 Daily bump.
From-SVN: r29280
1999-09-11 01:45:09 -06:00
Zack Weinberg
6ee2c97942 cppalloc.c (xstrdup): Use memcpy.
1999-09-10 22:37 -0700  Zack Weinberg  <zack@bitmover.com>

	* cppalloc.c (xstrdup): Use memcpy.
	* cpperror.c (cpp_print_containing_files): Don't use
	cpp_notice.
	* cpplib.c (conditional_skip): Set temp->lineno.
	(do_endif): Make error message less obscure.
	(if_directive_name): New function.
	(cpp_get_token [case EOF]): Unwind the if stack and generate
	error messages for each unterminated conditional in this file.
	(parse_string):  Do not behave differently if -traditional.

From-SVN: r29279
1999-09-11 05:38:06 +00:00
Tom Tromey
27e934d8ba configure: Rebuilt.
* configure: Rebuilt.
	* configure.in: Build include/Makefile.
	* Makefile.in: Rebuilt.
	* Makefile.am (SUBDIRS): Added gcj and include.
	(install-data-local): New target.
	(extra_headers): New macro.
	* include/Makefile.in: New file.
	* include/Makefile.am: New file.

	* interpret.cc: Don't include gcj/field.h or gcj/cni.h.
	* java/lang/reflect/natField.cc: Don't include gcj/field.h or
	gcj/cni.h.
	* boehm.cc: Don't include java-threads.h or gcj/field.h.
	* resolve.cc: Include config.h.
	* defineclass.cc: Include config.h.
	* include/java-interp.h: Don't include config.h.
	* include/jvm.h: Include java-threads.h, Object.h, java-gc.h,
	cni.h.

	* gcj/javaprims.h: Regenerated namespace decls.
	* classes.pl (scan): Don't put `;' after closing brace.

	* Makefile.in: Rebuilt.
	* Makefile.am (INCLUDES): Added -I for top_srcdir.
	* configure.in: Create gcj/Makefile.
	* gcj/Makefile.in: New file.
	* gcj/Makefile.am: New file.
	* java/lang/Object.h: Don't include any other headers.
	* gcj/array.h: Renamed from include/java-array.h.
	* gcj/field.h: Renamed from include/java-field.h.
	* gcj/method.h: Renamed from include/java-method.h.
	* gcj/cni.h, gcj/javaprims.h: Moved from include/.
	Updated all files to reflect new include structure.

From-SVN: r29278
1999-09-10 22:03:10 +00:00
Tom Tromey
512d594b4f gjavah.c (add_class_decl): Generate include for gcj/array.h, not java-array.h.
* gjavah.c (add_class_decl): Generate include for gcj/array.h, not
	java-array.h.
	(decode_signature_piece): Don't emit "::" in JArray<>.
	(print_namelet): Only print trailing `;' when printing a class.

From-SVN: r29277
1999-09-10 21:45:39 +00:00
Richard Henderson
973a648b87 builtins.c (expand_builtin_va_arg): Cope with an array-type va_list decomposing to pointer-type.
* builtins.c (expand_builtin_va_arg): Cope with an array-type
        va_list decomposing to pointer-type.
        * rs6000.c (rs6000_va_start) Unwrap the ARRAY_TYPE to get at fields.
        (rs6000_va_arg): Likewise.

From-SVN: r29276
1999-09-10 14:06:36 -07:00
Jim Wilson
007598f98b Fix too small buffer problem found by ia64 port.
* except.c (start_dynamic_handler): Compute size using
	STACK_SAVEAREA_MODE.

From-SVN: r29275
1999-09-10 13:28:12 -07:00
Kaveh R. Ghazi
ffb9f2f152 protoize.c: Remove various __STDC__ and POSIX hacks.
* protoize.c: Remove various __STDC__ and POSIX hacks.  Don't
	include directory headers.  Don't define strrchr.  Don't provide
	my_* replacement functions.  Prefer PTR over `pointer_type'.
	Don't prototype system functions.  Don't redefine getopt.

	(shortpath, fancy_abort, notice, savestring, dupnstr, substr,
	safe_read, safe_write, save_pointers, restore_pointers,
	is_id_char, in_system_include_dir, directory_specified_p,
	file_excluded_p, unexpand_if_needed, abspath, check_aux_info,
	find_corresponding_lparen, referenced_file_is_newer,
	save_def_or_dec, munge_compile_params, gen_aux_info_file,
	process_aux_info_file, identify_lineno, check_source,
	seek_to_line, forward_to_next_token_char, output_bytes,
	output_string, output_up_to, other_variable_style_function,
	find_rightmost_formals_list, do_cleaning, careful_find_l_paren,
	do_processing, is_syscalls_file, rename_c_file, find_extern_def,
	find_static_definition, connect_defs_and_decs, add_local_decl,
	add_global_decls, needs_to_be_converted, visit_each_hash_node,
	add_symbol, lookup, free_def_dec, find_file, reverse_def_dec_list,
	edit_fn_declaration, edit_formals_lists, edit_fn_definition,
	scan_for_missed_items, edit_file, string_list_cons): Add static
	prototypes.
	(standard_exec_prefix, target_machine, target_version,
	default_syscalls_dir, string_list, string_list_cons, find_file,
	do_cleaning): Constify a char*.
	(safe_read, safe_write): Use PTR, not a char*.
	(is_id_char): Take an int, not a char.
	(main): Add prototype.  Call return, not exit.

From-SVN: r29274
1999-09-10 20:03:36 +00:00
Richard Henderson
944b921044 loop.c (basic_induction_var): Typo NULL_RTX -> NULL.
* loop.c (basic_induction_var): Typo NULL_RTX -> NULL.
        (strength_reduce): Release the varrays from the no-bivs early exit.

        * reload1.c (order_regs_for_reload): Init hard_reg_n_uses before
        the loop over the registers.

        * tree.c (save_tree_status): Set maybepermanent_firstobj NULL
        for a new obstack.
        (restore_tree_status): Check that instead when freeing the obstack.

From-SVN: r29273
1999-09-10 11:45:22 -07:00
Mark Mitchell
d11494e9fa Fix missing ChangeLog entry
From-SVN: r29272
1999-09-10 17:55:50 +00:00
Andrew Haley
da48638eff tree.c (type_hash_lookup): Check for equal TYPE_ALIGN fields when comparing types.
Fri Sep 10 16:48:26 1999  Andrew Haley  <aph@cygnus.com>

        * tree.c (type_hash_lookup): Check for equal TYPE_ALIGN fields
        when comparing types.

From-SVN: r29271
1999-09-10 16:07:18 +00:00
Richard Henderson
69ba6af33e loop.c (basic_induction_var): Typo NULL_RTX -> NULL.
* loop.c (basic_induction_var): Typo NULL_RTX -> NULL.
        (strength_reduce): Release the varrays from the no-bivs early exit.

        * reload1.c (order_regs_for_reload): Init hard_reg_n_uses before
        the loop over the registers.

        * tree.c (save_tree_status): Set maybepermanent_firstobj NULL
        for a new obstack.
        (restore_tree_status): Check that instead when freeing the obstack.

From-SVN: r29270
1999-09-10 08:50:22 -07:00
Andrew Haley
a0d8bee96e alias.c (rtx_equal_for_memref_p): Allow CONST_DOUBLEs to be used as pointers.
Wed Sep  8 16:12:04 1999  Andrew Haley  <aph@cygnus.com>

        * alias.c (rtx_equal_for_memref_p): Allow CONST_DOUBLEs to be used
        as pointers.

From-SVN: r29269
1999-09-10 14:12:01 +00:00
Nathan Sidwell
0881d22348 rfg4.C: Revert erroneous change, add -w.
* g++.old-deja/g++.jason/rfg4.C: Revert erroneous change, add -w.
	* g++.old-deja/g++.jason/rfg5.C: Likewise.

From-SVN: r29268
1999-09-10 11:05:30 +00:00
Bernd Schmidt
f6fbeda886 Fix ashlqi3 bug
From-SVN: r29267
1999-09-10 11:01:50 +00:00
Bernd Schmidt
81b3411cdf Move declarations and building code for common tree nodes to tree.[ch]
From-SVN: r29266
1999-09-10 10:36:02 +00:00
Mark Mitchell
ed5511d94e cp-tree.h (language_function): Rename expanding_p to x_expanding_p.
* cp-tree.h (language_function): Rename expanding_p to
	x_expanding_p.  Rename named_label_uses to x_named_label_uses.
	(expanding_p): Adjust accordingly.
	(TREE_VIA_PRIVATE): Fix typo in comment.
	(DECL_REFERENCE_SLOT): Remove.
	(SET_DECL_REFERENCE_SLOT): Likewise.
	* decl.c (named_label_uses): Adjust. Remove chicken comment.
	(push_overloaded_decl): Don't truncate the chain of bindings when
	adding an overloaded function.
	(grok_reference_init): Don't use DECL_REFERENCE_SLOT.
	(initialize_local_var): Fix typo in comment.
	(store_parm_decls): Don't set DECL_REFERENCE_SLOT.  Tidy up.
	* decl2.c (start_objects): Make the fact that we are expanding
	the generated function right away explicit.
	(start_static_storage_duration_function): Likewise.
	(finish_file): Fix typo in comment.
	* init.c (build_vec_init): Correct bugs in handling cleanups.
	* semantics.c (maybe_convert_cond): New function.
	(FINISH_COND): Always store the condition, even if there's
	a declaration.
	(finish_if_stmt_cond): Use maybe_convert_cond.
	(finish_while_stmt_cond): Likewise.
	(finish_do_stmt): Likewise.
	(finish_for_cond): Likewise.
	(expand_cond): Adjust.

From-SVN: r29265
1999-09-10 10:19:47 +00:00
Mark Mitchell
efa8eda3b8 cp-tree.h (finish_cleanup_try_block): New function.
* cp-tree.h (finish_cleanup_try_block): New function.
	* semantics.c (finish_cleanup_try_block): Add comment.

From-SVN: r29264
1999-09-10 09:30:57 +00:00
Mark Mitchell
62409b397b cp-tree.h (FN_TRY_BLOCK_P): New macro.
* cp-tree.h (FN_TRY_BLOCK_P): New macro.
	* init.c (perform_member_init): Remove obstack machinations.
	(expand_cleanup_for_base): Likewise.
	(finish_init_stmts): Mark the statement-expression as used.
	* method.c (emit_thunk): Use tree-generating functions, not
	RTL.
	(do_build_copy_constructor): Likewise.
	(do_build_assign_ref): Likewise.
	(synthesize_method): Likewise.  Keep track of line numbers.
	* pt.c (tsubst_expr): Handle various kinds of try blocks.
	* semantics.c (expand_stmts): Remove.
	(begin_function_try_block): Set FN_TRY_BLOCK_P.
	(finish_function_try_block): Be careful rechaining
	function try blocks.
	(expand_stmt): Loop through all the statements at a given level.
	(exapnd_body): Be careful with line-numbers here too.  Prepare for
	being called directly from the parser.

From-SVN: r29263
1999-09-10 09:21:37 +00:00
Mark Mitchell
ca5b5533e1 cp-tree.h (finish_function): Adjust prototype.
* cp-tree.h (finish_function): Adjust prototype.
	* decl.c (finish_function): Return the function compiled.
	* pt.c (instantiate_decl): Don't play games with obstacks.
	* tree.c (mapcar): Handle OFFSET_REF and BIT_FIELD_REF.
	(search_tree): Likewise.
	* typeck.c: Fix typo in comment.
	* typeck2.c (store_init_value): Add comment.

From-SVN: r29262
1999-09-10 09:10:24 +00:00
Mark Mitchell
4d6abc1c32 cp-tree.h (finish_function): Adjust prototype.
* cp-tree.h (finish_function): Adjust prototype.
	* decl.c (finish_function): Return the function compiled.
	* pt.c (instantiate_decl): Don't play games with obstacks.
	* tree.c (mapcar): Handle OFFSET_REF and BIT_FIELD_REF.
	(search_tree): Likewise.
	* typeck.c: Fix typo in comment.
	* typeck2.c (store_init_value): Add comment.

From-SVN: r29261
1999-09-10 08:52:07 +00:00
Mark Mitchell
f0105ed3b9 cp-tree.h (CPTI_ATEXIT): New macro.
* cp-tree.h (CPTI_ATEXIT): New macro.
	(atexit_node): Likewise.
	* decl.c (destroy_local_static): New function, broken out from ...
	(expand_static_init): Here.

From-SVN: r29260
1999-09-10 08:30:08 +00:00
Mark Mitchell
0bb9c57d22 rtti.c (get_tinfo_var): These should always be global
* rtti.c (get_tinfo_var): These should always be global
	(expand_si_desc): Use tree, not RTL, functions to generate code.
	(expand_class_desc): Likewise.
	(expand_ptr_desc): Likewise.
	(expand_attr_desc): Likewise.
	(expand_generic_desc): Likewise.
	(synthesize_tinfo_fn): Likewise.

From-SVN: r29259
1999-09-10 08:14:16 +00:00
Mark Mitchell
6a26a9ead4 Regenerated
From-SVN: r29258
1999-09-10 08:08:52 +00:00
Jeff Law
9e2e04ccb5 Daily bump.
From-SVN: r29257
1999-09-10 01:45:10 -06:00
Mark Mitchell
cb39191d23 semantics.c (RECHAIN_STMTS): Remove `last' parameter.
* semantics.c (RECHAIN_STMTS): Remove `last' parameter.
	(RECHAIN_STMTS_FROM_LAST): Remove.  Replace all uses with
	RECHAIN_STMTS.
	(RECHAIN_STMST_FROM_CHAIN): Likewise.

From-SVN: r29256
1999-09-10 05:31:24 +00:00
Richard Henderson
f4e5c65b06 c-decl.c (finish_function): When processing a nested function...
* c-decl.c (finish_function): When processing a nested function,
        push and pop GC context around rest_of_compilation.

From-SVN: r29255
1999-09-09 20:16:49 -07:00
Jason Merrill
f74c0f9107 revert:
Thu Sep  9 12:20:34 1999  Nick Clifton  <nickc@cygnus.com>

	* toplev.c (documented_lang_options):

From-SVN: r29253
1999-09-09 21:13:10 -04:00
Mark Mitchell
1bbda43638 * parse.y (simple_stmt): Fix typo in last change.
From-SVN: r29252
1999-09-10 01:09:05 +00:00
Tom Tromey
f1b856d94e configure: Rebuilt.
* configure: Rebuilt.
	* configure.in: Fixed typo; variable is THREADSPEC and not
	THREADSPECS.

From-SVN: r29251
1999-09-10 00:10:04 +00:00
Richard Henderson
5a6ee81974 i386.c (override_options): Remove ppro, pentium2, and p2 as aliases.
* i386.c (override_options): Remove ppro, pentium2, and p2 as aliases.
        Default ix86_arch to PROCESSOR_I386.
        * i386.h (CC1_CPU_SPEC): Don't add -march=foo.  Remove -mno-foo.
        (CPP_486_SPEC, CPP_586_SPEC, CPP_686_SPEC): Delete.
        (CPP_CPU_DEFAULT_SPEC): Define to __tune_foo__.
        (CC1_CPU_SPEC): Make -march=foo define __foo__, and provide
        __tune_foo__ if no -mcpu.  Make -mcpu=bar define __tune_bar__.
        (EXTRA_SPECS): Remove deleted specs.

From-SVN: r29250
1999-09-09 16:45:55 -07:00
Mark Mitchell
a7e4cfa017 cp-tree.h (EXPR_STMT_ASSIGNS_THIS): New macro.
* cp-tree.h (EXPR_STMT_ASSIGNS_THIS): New macro.
	(STMT_IS_FULL_EXPR_P): Likewise.
	(STMT_LINENO_FOR_FN_P): Likewise.
	(prep_stmt): New function.
	(building_stmt_tree): Tweak for safety.
	* pt.c (tsubst_expr): Use prep_stmt throughout.
	(add_tree): Move it to semantics.c
	* semantics.c (add_tree): Move it here.
	(finish_expr_stmt_real): New function.
	(finish_expr_stmt): Use it.
	(finish_if_stmt_cond): Use FINISH_COND.
	(finish_while_stmt_cond): Likewise.
	(finish_for_cond): Likewise.
	(finish_stmt_tree): Tweak line-number handling.
	(prep_stmt): New function.
	(expand_stmt): Use it.

From-SVN: r29249
1999-09-09 23:24:34 +00:00
Richard Henderson
3b71623bf3 function.c (assign_stack_local_1): Allocate from function->x_frame_offset, not frame_offset.
* function.c (assign_stack_local_1): Allocate from
        function->x_frame_offset, not frame_offset.

From-SVN: r29248
1999-09-09 16:04:12 -07:00