Commit Graph

64367 Commits

Author SHA1 Message Date
Nathan Sidwell 0710ccffc3 re PR c++/18672 (Segfault with simple template code)
.:	PR c++/18672
	* gimplify.c (canonicalize_addr_expr): Cope with array of
	incomplete type.
	(gimplify_conversion): Remove redundant checks.
testsuite:
	PR c++/18672
	* g++.dg/opt/array1.C: New.

From-SVN: r91865
2004-12-08 08:47:59 +00:00
Nathan Sidwell e6aef96964 * doc/trouble.texi (Non-bugs): Clarify empty loop removal.
From-SVN: r91864
2004-12-08 08:42:15 +00:00
Nathan Sidwell db24eb1f4f re PR c++/18803 (rejects access to operator() in template)
cp:
	PR c++/18803
	* cp-tree.h (REFERENCE_REF_P): New.
	(CPTI_TYPE_INFO_TYPE): Rename to ...
	(CPTI_CONST_TYPE_INFO_TYPE): ... here.
	(CPTI_TYPE_INFO_REF_TYPE): Remove.
	(type_info_type_node): Rename to ...
	(const_type_info_type_node): ... here.
	(type_info_ref_type): Remove.
	* call.c (build_user_type_conversion): Reformat.
	(resolve_args): Do not convert_from_reference.
	(build_object_call): Call convert_from_reference.
	(prep_operand): Do not convert_from_reference.
	(build_new_method_call): Likewise.
	* class.c (build_vfield_ref): Likewise.
	* cvt.c (convert_to_reference): Likewise.
	(convert_from_reference): Build INDIRECT_REF here, not with
	build_indirect_ref.
	(convert_force): Do not convert_from_reference.
	(build_expr_type_conversion): Likewise.
	* decl.c (grok_reference_init): Likewise.
	* decl2.c (delete_sanity): Likewise.
	* except.c (initialize_handler_parm): Use POINTER_TYPE_P.
	* init.c (build_dtor_call): Do not convert_from_reference.
	* parser.c (cp_parser_template_argument): Unwrap indirected
	reference. Allow TEMPLATE_PARM_INDEX as an object parm.
	* pt.c (tsubst_copy_and_build) <case INDIRECT_REF>: Use
	convert_from_reference, if indicated.
	<case CALL_EXPR>: Do not convert_from_reference.
	<case PARM_DECL, VAR_DECL>: Convert_from_reference if needed.
	(tsubst_initializer_list): Do not convert_from_reference.
	* rtti.c (init_rtti_processing): Adjust node creation.
	(throw_bad_typeid): Use const_type_info_type_node.
	Do not convert_from_reference.
	(typeid_ok_p): Use const_type_info_type_node.
	(build_typeid, get_typeid): Always return type_info typed node.
	(build_dynamic_cast_1): Dont convert_from_reference. Refactor.
	* semantics.c (finish_stmt_expr_expr): Do not
	convert_from_reference.
	(finish_id_expression): Convert_from_reference as appropriate.
	* typeck.c (decay_conversion): Do not convert_from_reference.
	(finish_class_member_access_expr): Likewise.
	(build_indirect_ref): Use POINTER_TYPE_P.
	(convert_arguments): Do not convert_from_reference.
	(build_modify_expr): Likewise.
	(convert_for_initialization): Likewise.
	* typeck2.c (build_x_arrow): Likewise.
testsuite:
	PR c++/18803
	* g++.dg/template/operator5.C: New.

From-SVN: r91863
2004-12-08 08:36:09 +00:00
Uros Bizjak 89b1749804 i386.c (output_387_binary_op, [...]): Fix is_sse condition.
* config/i386/i386.c (output_387_binary_op,
	ix86_prepare_fp_compare_args): Fix is_sse condition.

From-SVN: r91862
2004-12-08 08:54:43 +01:00
Hans-Peter Nilsson 371f495ae6 re PR c/18867 (ICE on invalid switch quantity)
PR c/18867
	* gcc.dg/noncompile/20041207.c: Fix typo in dg directive.

From-SVN: r91861
2004-12-08 07:41:32 +00:00
Matt Kraai 893f1e8768 Makefile.tpl: Generate normal dependencies if the LHS module is not bootstrapped.
* Makefile.tpl: Generate normal dependencies if the LHS module is
	not bootstrapped.
	* Makefile.in: Regenerate.

From-SVN: r91857
2004-12-08 07:22:47 +00:00
Uros Bizjak 7c82106ff9 i386-protos.h (ix86_split_fp_branch): New rtx argument.
* config/i386/i386-protos.h (ix86_split_fp_branch): New rtx
        argument.

        * config/i386/i386.c (output_fp_compare): Fix is_sse condition.
        Use EFLAGS_P only when fcomi insn should be used. Fix handling
        of eflags_p variable. Change alt table accordingly. For non-fcomi
        compare insn always use trailing fnstsw insn. Fix intmode
        calculation for ficom insn.
        (ix86_split_fp_branch): Add "rtx pushed" as new parameter. Call
        ix86_free_from_memory when "pushed" is specified.
        (ix86_expand_branch): Change call to ix86_split_fp_branch.

        * config/i386/i386.md (*cmpfp_0_sf, *cmpfp_0_df, *cmpfp_0_xf):
        Change eflags_p parameter in call to output_fp_compare.
        (*cmpfp_2_sf, *cmpfp_2_df, *cmpfp_2_xf): Remove.
        (*cmpfp_2_sf_1, *cmpfp_2_df_1, *cmpfp_2_xf_1): Rename to
        *cmpfp_2_sf, *cmpfp_2_df, *cmpfp_2_xf.  Change eflags_p
        parameter in call to output_fp_compare.
        (*cmpfp_2_u): Remove.
        (*cmpfp_2_u_1): Rename to *cmpfp_2_u. Change eflags_p parameter
        in call to output_fp_compare.
        (*ficom_1): Remove insn definition and corresponding define_split.
        (*cmpfp_si): New insn definition.
        (*fp_jcc_8): New insn definition. Add new splitters for
        "memory_operand" and "register_operand".
        (define_split): Add new parameter in call to ix86_split_fp_branch.

        config/i386/predicates.md (float_operator): New predicate.

From-SVN: r91856
2004-12-08 07:50:58 +01:00
Kazu Hirata ac1b13f457 c-common.c (verify_tree): Don't check code length if we know we are handling tcc_unary.
* c-common.c (verify_tree): Don't check code length if we know
	we are handling tcc_unary.
	* print_tree.c (print_node): Remove code to handle RTL
	appearing as a part of a tree node.
	* tree-gimple.c (recalculate_side_effects): Rename fro as len.
	* tree.c (build1_stat): Don't check TREE_CODE_LENGTH.
	(PROCESS_ARG): Don't refer to fro.
	(build2_stat, build3_stat, build4_stat): Don't compute fro.

From-SVN: r91855
2004-12-08 06:39:00 +00:00
Ranjit Mathew 7fd64ba372 IdentityHashMap.java (put): Replace mistaken use of "<<" by "*".
* java/util/IdentityHashMap.java (put): Replace mistaken use of
	"<<" by "*".

From-SVN: r91852
2004-12-08 02:18:32 +00:00
Roger Sayle 58b42e19f7 re PR middle-end/18293 (Redundant copy operation introduced by expand)
PR middle-end/18293
	* expmed.c (EXACT_POWER_OF_2_OR_ZERO_P): Move definition earlier.
	(expand_mult): Special case powers of two to avoid synth_mult.
	* loop.c (product_cheap_p): Handle case where expand_mult does
	require/generate any instructions (i.e. multiplication by zero).

From-SVN: r91851
2004-12-08 02:15:36 +00:00
Richard Henderson b16bcb178a tree-pretty-print.c (dump_array_domain): Split out from dump_generic_node; fix off-by-one error on zero-based array bounds.
* tree-pretty-print.c (dump_array_domain): Split out from
        dump_generic_node; fix off-by-one error on zero-based array bounds.
        (dump_generic_node): Use it.
        (print_declaration): Likewise.

From-SVN: r91850
2004-12-07 18:04:57 -08:00
Richard Guenther 74515a0a1a invoke.texi: Adjust default values for large-function-growth and inline-unit-growth to match...
* doc/invoke.texi: Adjust default values for
	large-function-growth and inline-unit-growth to match
	params.def.  Clarify used algorithm.

From-SVN: r91845
2004-12-08 01:20:34 +00:00
Steve Ellcey 7dd42019e7 Makefile.am (AM_MAKEFLAGS): New.
* libgfortran/Makefile.am (AM_MAKEFLAGS): New.
	* libgfortran/Makefile.in: Regenerate

From-SVN: r91844
2004-12-08 00:43:34 +00:00
Steve Ellcey 6ecf6dcbb8 io.h (open_external): Change prototype.
* io/io.h (open_external): Change prototype.
	* io/unix.c (regular_file): Change prototype and set flags->action if
	needed.
	(open_external): Ditto.
	* io/open.c (new_unit): Let open_external set flags->action.

From-SVN: r91843
2004-12-08 00:32:39 +00:00
David Mosberger 1b79dc38dd re PR target/18443 (#pragma pack(1) breaks function pointer initialization)
PR target/18443
        * config/ia64/ia64.c (ia64_assemble_integer): Add support for
        emitting unaligned pointer-sized integers.

From-SVN: r91842
2004-12-07 16:20:49 -08:00
GCC Administrator 9492747a48 Daily bump.
From-SVN: r91840
2004-12-08 00:16:21 +00:00
Steven Bosscher 02fbae8342 re PR c/18867 (ICE on invalid switch quantity)
PR c/18867
        * c-typeck.c (c_start_case): Set orig_type to error_mark_node
        when the type of the controlling expression is not a valid type.

testsuite/
        * gcc.dg/noncompile/20041207.c: New test.

From-SVN: r91837
2004-12-08 00:12:03 +00:00
Steven Bosscher 665fcad835 re PR middle-end/17340 (Internal error compiling with -O3)
PR tree-optimization/17340
        * tree-ssa-pre.c (compute_antic): Fix comment.
        (compute_avail): Do not recurse, instead do a DFS using a stack
        and a loop.
        (execute_pre): Adjust.

From-SVN: r91835
2004-12-08 00:09:30 +00:00
Ziemowit Laski c7baa14599 c-tree.h (struct lang_type): Rename 'objc_protocols' field to 'objc_info'.
[gcc/ChangeLog]
2004-12-07  Ziemowit Laski  <zlaski@apple.com>

        * c-tree.h (struct lang_type): Rename 'objc_protocols' field
        to 'objc_info'.

[gcc/cp/ChangeLog]
2004-12-07  Ziemowit Laski  <zlaski@apple.com>

        * cp-tree.h (struct lang_type_class): Rename 'objc_protocols'
        field to 'objc_info'.

From-SVN: r91833
2004-12-07 23:46:11 +00:00
Eric Botcazou 6e4d9244f7 configure.ac: Check for ieeefp.h.
* configure.ac: Check for ieeefp.h.  Check for fabsf in libm.
	* configure: Regenerate.
	* config.h.in: Likewise.
	* c99_protos.h: New file.
	* libgfortran.h: Include c99_protos.h and conditionally ieeefp.h.
	* intrinsics/c99_functions.c (fabsf): New function.

From-SVN: r91832
2004-12-07 23:43:40 +00:00
Eric Christopher c08f800e9a re PR target/16317 (MIPS-netbsd does not define NO_IMPLICIT_EXTERN_C)
2004-12-07  Eric Christopher  <echristo@redhat.com>

	PR target/16317
	* config/netbsd.h (NO_IMPLICIT_EXTERN_C): Define.

From-SVN: r91831
2004-12-07 22:47:41 +00:00
Eric Christopher 20c076a853 mips-protos.h (mips_valid_pointer_mode): Move prototype...
2004-12-07  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips-protos.h (mips_valid_pointer_mode): Move
	prototype...
	* config/mips/mips.c: ... here. Make static.

From-SVN: r91830
2004-12-07 22:40:40 +00:00
Eric Christopher a122d1f1d3 re PR target/18442 (Rejects attribute((mode(SI))) when using -mint64)
2004-12-07  Eric Christopher  <echristo@redhat.com>

	PR target/18442
	* config/mips/mips.c (mips_vector_mode_supported_p): New function.
	(TARGET_SCALAR_MODE_SUPPORTED_P): Define to above.

From-SVN: r91820
2004-12-07 22:17:21 +00:00
Kazu Hirata 54e4aedb7e c-common.c, [...]: Replace uses of first_rtl_op with TREE_CODE_LENGTH.
gcc/
	* c-common.c, expr.c, fold-const.c, print-tree.c,
	tree-gimple.c, tree-inline.c, tree-pretty-print.c,
	tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c: Replace uses of
	first_rtl_op with TREE_CODE_LENGTH.
	* tree.c (first_rtl_op): Remove.
	Replace uses of first_rtl_op with TREE_CODE_LENGTH.
	* tree.h: Remove the prototype for first_rtl_op.

gcc/cp/
	* pt.c: Replace a use of first_rtl_op with TREE_CODE_LENGTH.

From-SVN: r91818
2004-12-07 21:23:10 +00:00
DJ Delorie b180d5fb7b splay-tree.c (splay_tree_delete_helper): Redesign the logic so that recursion (and thus large stack space) is not needed.
* splay-tree.c (splay_tree_delete_helper): Redesign the logic so
that recursion (and thus large stack space) is not needed.

From-SVN: r91815
2004-12-07 15:01:17 -05:00
David Edelsohn 354e49c1d9 t-aix43, t-aix52 (SHLIB_LINK): Revert 2004-12-01 change.
* config/rs6000/t-aix43, config/rs6000/t-aix52 (SHLIB_LINK):
        Revert 2004-12-01 change.

From-SVN: r91812
2004-12-07 13:44:31 -05:00
Paolo Carlini 0f910b4f4f type_traits: Implement is_const and is_volatile.
2004-12-07  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: Implement is_const and is_volatile.
	* testsuite/testsuite_tr1.h (test_property): New.
	* testsuite/tr1/4_metaprogramming/type_properties/
	is_const/is_const.c: New.
	* testsuite/tr1/4_metaprogramming/type_properties/
	is_const/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	is_volatile/is_volatile.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	is_volatile/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_arithmetic/is_arithmetic.cc: Slightly tweak to use ClassType
	from testsuite_tr1.h.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_fundamental/is_fundamental.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_array/is_array.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_floating_point/is_floating_point.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_integral/is_integral.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_reference/is_reference.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_void/is_void.cc: Likewise.

From-SVN: r91808
2004-12-07 16:40:46 +00:00
Roger Sayle 5423d7ebe1 name-lookup.c (leave_scope): We only need to update class_binding_level when leaving a class scope.
* name-lookup.c (leave_scope): We only need to update
	class_binding_level when leaving a class scope.

From-SVN: r91807
2004-12-07 14:41:12 +00:00
Volker Reichelt 5f679db991 * g++.dg/other/unreachable-1.C: New test.
From-SVN: r91804
2004-12-07 07:50:31 +00:00
Ziemowit Laski 66237a39fc c-tree.h (struct lang_type): Add 'objc_protocols' field.
[gcc/ChangeLog]
2004-12-06  Ziemowit Laski  <zlaski@apple.com>

        * c-tree.h (struct lang_type): Add 'objc_protocols' field.

[gcc/cp/ChangeLog]
2004-12-06  Ziemowit Laski  <zlaski@apple.com>

        * cp-tree.h (struct lang_type_class): Add 'objc_protocols' field.

From-SVN: r91803
2004-12-07 03:52:22 +00:00
DJ Delorie e11ab33b76 reload.c (find_valid_class): Fix logic to test inner mode as well.
* reload.c (find_valid_class): Fix logic to test inner mode as well.
(push_reload): Pass inner mode.

From-SVN: r91802
2004-12-06 20:14:40 -05:00
Eric Christopher e09ec16630 tm.texi (TARGET_VALID_POINTER_MODE): Document.
2004-12-06  Eric Christopher  <echristo@redhat.com>

	* doc/tm.texi (TARGET_VALID_POINTER_MODE): Document.

From-SVN: r91801
2004-12-07 00:53:27 +00:00
Richard Henderson 07d3cebe24 cshift0.c, [...]: Use internal_malloc_size instead of internal_malloc.
* intrinsics/cshift0.c, intrinsics/eoshift0.c, intrinsics/eoshift2.c,
        intrinsics/pack_generic.c, intrinsics/string_intrinsics.c,
        intrinsics/transpose_generic.c, m4/ifunction.m4, m4/matmul.m4,
        m4/matmull.m4, m4/transpose.m4: Use internal_malloc_size instead
        of internal_malloc.
        * generated/*: Rebuild.

From-SVN: r91799
2004-12-06 16:24:44 -08:00
GCC Administrator bddfe34a9e Daily bump.
From-SVN: r91797
2004-12-07 00:16:23 +00:00
Richard Henderson f21edfd62d c99_functions.c, [...]: Whitespace fixes.
* intrinsics/c99_functions.c, intrinsics/eoshift0.c,
        intrinsics/eoshift2.c, intrinsics/exit.c, intrinsics/flush.c,
        intrinsics/ishftc.c, intrinsics/mvbits.c, intrinsics/pack_generic.c,
        intrinsics/random.c, intrinsics/reshape_generic.c, intrinsics/size.c,
        intrinsics/spread_generic.c, intrinsics/stat.c,
	intrinsics/string_intrinsics.c, intrinsics/system_clock.c,
        intrinsics/transpose_generic.c, intrinsics/unlink.c,
        intrinsics/unpack_generic.c, io/backspace.c, io/format.c,
        io/list_read.c, io/lock.c, io/open.c, io/transfer.c, io/unix.c,
        io/write.c, runtime/environ.c, runtime/error.c,
        runtime/in_pack_generic.c, runtime/in_unpack_generic.c, runtime/main.c,
        runtime/memory.c, runtime/pause.c, runtime/stop.c,
        runtime/string.c: Whitespace fixes.

From-SVN: r91794
2004-12-06 16:01:01 -08:00
Aldy Hernandez 9f91e6cc16 * config/rs6000/sysv4.h: Define RELOCATABLE_NEEDS_FIXUP to 1.
From-SVN: r91792
2004-12-06 23:57:57 +00:00
Richard Henderson a8bc7089b5 Makefile.am: Generate all m4 output under $(srcdir).
* Makefile.am: Generate all m4 output under $(srcdir).
        * Makefile.in: Regenerate.

From-SVN: r91788
2004-12-06 13:29:57 -08:00
Zdenek Dvorak 63bb59a32c re PR tree-optimization/18601 (tree cfglceanup is slow)
PR tree-optimization/18601
	* tree-cfg.c (thread_jumps, thread_jumps_from_bb): Removed.
	(tree_forwarder_block_p): Do not consider blocks that are its own
	successors forwarders.
	(cleanup_forwarder_blocks, remove_forwarder_block): New functions.
	(cleanup_tree_cfg): Use cleanup_forwarder_blocks instead of
	thread_jumps.
	* tree-flow.h (bb_ann_d): Remove forwardable.

Co-Authored-By: Kazu Hirata <kazu@cs.umass.edu>

From-SVN: r91787
2004-12-06 20:22:01 +00:00
Kazu Hirata c4cfdac0e6 expr.c (expand_expr_real_1): Remove an "if" whose condition is always false.
* expr.c (expand_expr_real_1): Remove an "if" whose condition
	is always false.

From-SVN: r91786
2004-12-06 18:52:10 +00:00
Tom Tromey 6e07ee6da0 Make-lang.in (JAVA_MANFILES): Added gcj-dbtool.
* Make-lang.in (JAVA_MANFILES): Added gcj-dbtool.
	(java.uninstall): Likewise.
	(java.maintainer-clean): Likewise.
	(.INTERMEDIATE): Likewise.
	(java.install-man): Likewise.
	(gcj-dbtool.pod): New target.
	* gcj.texi (Code Generation): Document -findirect-dispatch.
	(libgcj Runtime Properties): Document
	gnu.gcj.precompiled.db.path.
	(Top): Link to "Invoking gcj-dbtool".

From-SVN: r91785
2004-12-06 17:59:57 +00:00
Roger Sayle b086a2eaf8 c-gimplify.c (gimplify_c_loop): Improve initial implementations for loops whose conditions are known at...
* c-gimplify.c (gimplify_c_loop): Improve initial implementations
	for loops whose conditions are known at compile-time.
	* gimplify.c (append_to_statement_list_1): Remove side_effects
	parameter, this function should never be called if its false.
	(append_to_statement_list): Only call append_to_statement_list_1
	if t is non-NULL tree with side-effects.
	(append_to_statement_list_force):  Likewise, if t is not NULL.

From-SVN: r91784
2004-12-06 17:24:16 +00:00
J"orn Rennecke ff8b369ad3 bt-load.c (btr_def_s): New member own_end;
* bt-load.c (btr_def_s): New member own_end;
	(add_btr_to_live_range): Add second parameter.  Changed caller.
	(clear_btr_from_live_range): Clear btrs_live_at_end bit
	for the register its definition basic block if own_end is set.
	(augment_live_range): Also take btrs_live_at_end into account.
	(combine_btr_defs): Don't bother with
	other_def->other_btr_uses_after_use if it pertains to a different
	register.
	(move_btr_def): Set def->other_btr_uses_before_def after
	calling combine_btr_defs."

	* bt-load.c (augment_live_range): New argument full_range.
	Changed all callers.

	* bt-load.c (move_tr_def): Set other_tr_uses_before_def
	taking new btr assignment into account.

From-SVN: r91780
2004-12-06 16:07:57 +00:00
Paolo Carlini e21cb773e5 type_traits: Implement is_reference.
2004-12-06  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: Implement is_reference.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_reference/is_reference.cc: New.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_reference/typedefs.cc: Likewise.

From-SVN: r91779
2004-12-06 15:47:05 +00:00
Tom Tromey a58d74533c re PR java/14853 (Assignment to final field permitted when compiling to native)
PR java/14853:
	* java-tree.h (extract_field_decl): Declare.
	* parse.y (extract_field_decl): Renamed from
	strip_out_static_field_access_decl.  No longer static.
	* check-init.c (get_variable_decl): Unwrap COMPOUND_EXPRs.

From-SVN: r91778
2004-12-06 15:32:38 +00:00
Tom Tromey 0bc371d376 For PR java/14853:
* testsuite/libjava.compile/PR14853.java: New file.
	* testsuite/libjava.compile/PR14853.xfail: New file.

From-SVN: r91777
2004-12-06 15:30:57 +00:00
Nick Clifton a52c836bd5 Move ChangeLog entry to the correct ChangeLog!
From-SVN: r91775
2004-12-06 12:32:45 +00:00
Nick Clifton c092f1e161 oops - omitted from previous checkin
From-SVN: r91771
2004-12-06 11:00:49 +00:00
Nick Clifton dd8301b8e0 builtins-config.h: Use <sys/types.h> instead of <limits.h> because the latter comes from gcc's...
* gcc.dg/builtins-config.h: Use <sys/types.h> instead of <limits.h> because the
latter comes from gcc's include/ directory and not the newlib/libc/include
directory.

From-SVN: r91770
2004-12-06 10:57:43 +00:00
Daniel Berlin b07f8ee279 tree-ssa-alias.c (create_global_var): Use void_type_node, not size_type_node.
2004-12-05  Daniel Berlin <dberlin@dberlin.org>

	* tree-ssa-alias.c (create_global_var): Use void_type_node,
	not size_type_node.

From-SVN: r91768
2004-12-06 02:00:47 +00:00
GCC Administrator caace8f5df Daily bump.
[[Split portion of a mixed commit.]]

From-SVN: r91761.2
2004-12-06 00:16:20 +00:00