Commit Graph

23751 Commits

Author SHA1 Message Date
Tom Tromey
3a5395a311 gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
* gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
	Handle nested arrays, like `[[I'.

From-SVN: r29067
1999-09-02 23:44:04 +00:00
J"orn Rennecke
ad7342be69 stmt.c (expand_asm_operands): Fix index into inout_mode when reading it.
* stmt.c (expand_asm_operands): Fix index into inout_mode when
	reading it.

From-SVN: r29066
1999-09-02 23:10:15 +01:00
Kaveh R. Ghazi
d593dd8c6a class.c (finish_class): Remove unused parameter, all callers changed.
* class.c (finish_class): Remove unused parameter, all callers
	changed.

	* expr.c (build_java_athrow): Change return type to void.
	(java_lang_expand_expr): Make sure each case in switch returns a
	value.

	* java-tree.h (finish_class): Fix prototype to take void args.

	* jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
	(main): Issue return from main, not exit.

	* jcf-parse.c (parse_class_file): Fix call to `finish_class'.

	* jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.

	* jv-scan.c (main): Issue return from main, not exit.

	* parse.y (check_abstract_method_definitions,
	java_check_abstract_method_definitions): Add static prototypes.
	(java_complete_expand_methods): Fix call to `finish_class'.

	* verify.c (verify_jvm_instructions): Initialize variables `oldpc'
	and `prevpc'.

From-SVN: r29065
1999-09-02 21:57:09 +00:00
Richard Henderson
57bcb97aac stmt.c (expand_asm_operands): Invoke MD_ASM_CLOBBERS if present.
* stmt.c (expand_asm_operands): Invoke MD_ASM_CLOBBERS if present.
        * tm.texi (MD_ASM_CLOBBERS): Document it.

From-SVN: r29064
1999-09-02 13:01:46 -07:00
Tom Tromey
773c6f0076 natClassLoader.cc (_Jv_WaitForState): Call _Jv_PrepareCompiledClass while holding class mutex.
* java/lang/natClassLoader.cc (_Jv_WaitForState): Call
	_Jv_PrepareCompiledClass while holding class mutex.

From-SVN: r29063
1999-09-02 19:33:50 +00:00
Mark Mitchell
8012c98334 cp-tree.h (cp_function): Move here, from decl.c.
* cp-tree.h (cp_function): Move here, from decl.c.
	(cp_function_chain): Declare.
	(dtor_label): New macro, instead of variable.
	(ctor_label): Likewise.
	(current_base_init_list): Likewise.
	(current_member_init_list): Likewise.
	(base_init_expr): Likewise.
	(current_class_ptr): Likewise.
	(current_class_ref): Likewise.
	(last_tree): Likewise.
	(last_expr_type): Likewise.
	(current_function_returns_value): Likewise.
	(current_function_returns_null): Likewise.
	(current_function_just_assigned_this): Likewise.
	(current_function_parms_stored): Likewise.
	(temp_name_counter): Likewise.
	(static_labelno): Likewise.
	(expanding_p): Likewise.
	(stmts_are_full_exprs_p): Likewise.
	(in_function_try_handler): Likewise.
	(lang_type): Remove nested type_flags.  All uses changed.
	* call.c (ctor_label): Remove.
	(dtor_label): Likewise.
	* class.c (current_class_ptr): Remove.
	(current_class_ref): Likewise.
	* decl.c (static_labelno): Remove.
	(dtor_label): Likewise.
	(last_dtor_insn): New macro, instead of variable.
	(last_parm_cleanup_insn): Likewise.
	(original_result_rtx): Likewise.
	(in_function_try_handler): Remove.
	(named_label_uses): New macro, instead of variable.
	(named_labels): Likewise.
	(current_function_returns_value): Remove.
	(current_function_returns_null): Likewise.
	(current_function_assigns_this): New macro, instead of variable.
	(current_function_just_assigned_this): Likewise.
	(current_binding_level): Likewise.
	(init_decl_processing): Call push_cp_function_context.
	(cp_function): Move to cp-tree.h
	(cp_function_chain): Make it global.
	(temp_name_counter): Remove.
	(push_cp_function_context): Simplify.
	(pop_cp_function_context): Likewise.
	* decl2.c (temp_name_counter): Remove.
	* init_c (current_base_init_list): Likewise.
	(current_member_init_list): Likewise.
	(base_init_expr): Likewise.
	* method.c (static_labelno): Likewise.
	* pt.c (last_tree): Likewise.
	* semantics.c (expanding_p): Likewise.
	(stmts_are_full_exprs_p): Likewise.
	(last_expr_type): Likewise.
	* typeck.c (dtor_label): Likewise.
	(ctor_label): Likewise.

From-SVN: r29062
1999-09-02 19:14:06 +00:00
Richard Henderson
e2bef702d6 dwarf2out.c (dwarf2out_line): Constify `lastfile'.
* dwarf2out.c (dwarf2out_line): Constify `lastfile'.
        * except.c (expand_rethrow): Remove unused variable.
        * expr.c (do_jump_by_parts_greater_rtx): Likewise.
        * flow.c (replace_insns): Likewise.
        (create_edge_list, verify_edge_list): Likewise.
        * gcse.c (cprop_cc0_jump): Protect declaration with HAVE_cc0.

        * genemit.c (gen_expand): Only emit `operands[N]' decl if there
        is special code to run.
        (main): Don't define operands to emit_operand.
        * genrecog.c (main): Don't emit an empty peephole2_insn function.

        * rtl.h (NOTE_BASIC_BLOCK): Use X0BBDEF.

        * alpha/alpha.h (normal_memory_operand): Declare.
        (reg_no_subreg_operand): Declare.
        * alpha/elf.h (ASM_DECLARE_OBJECT_NAME): Use HOST_WIDE_INT_PRINT_DEC.

From-SVN: r29061
1999-09-02 10:29:25 -07:00
Alex Samuel
ec4f972f6c decl2.c (arg_assoc_template_arg): New prototype.
* decl2.c (arg_assoc_template_arg): New prototype.  New function.
	(arg_assoc_class): Use arg_assoc_template_arg for template
	arguments.
	(arg_assoc): Likewise.
	* pt.c (mangle_class_name_for_template): Allow member template
	template arguments.

From-SVN: r29060
1999-09-02 17:29:11 +00:00
Richard Henderson
d0668a7393 c-parse.in (compstmt_primary_start): New, broken out of first part of compstmt handling in primary.
* c-parse.in (compstmt_primary_start): New, broken out of first
        part of compstmt handling in primary.
        (primary): Use it.  Add an error clause.
        (compstmt_nostart): Renamed from compstmt; remove all
        initial invocations of compstmt_start.
        (compstmt): New.

From-SVN: r29059
1999-09-02 10:20:19 -07:00
Jeffrey A Law
a8c6125952 fold-const.c (fold_range_test): Do not try to fold the range test if the rhs or lhs has side effects.
* fold-const.c (fold_range_test): Do not try to fold the range
	test if the rhs or lhs has side effects.

From-SVN: r29058
1999-09-02 03:37:20 -06:00
Nathan Sidwell
88bf1faf57 ambig2.C: New test.
* g++.old-deja/g++.other/ambig2.C: New test.
	* g++.old-deja/g++.other/cond5.C: New test.
	* g++.old-deja/g++.other/lookup16.C: New test.

From-SVN: r29057
1999-09-02 09:23:14 +00:00
Nathan Sidwell
1b4d752a64 call.c (build_conditional_expr): Warn on enum mismatches.
* call.c (build_conditional_expr): Warn on enum mismatches.
	(convert_arg_to_ellipsis): Move non-pod check to after
	conversion.

From-SVN: r29056
1999-09-02 09:21:42 +00:00
Jeffrey A Law
e6380233ff combine.c (simplify_rtx): Recognize another case of a synthesized sign extension.
* combine.c (simplify_rtx): Recognize another case of a synthesized
        sign extension.

From-SVN: r29055
1999-09-02 03:02:33 -06:00
Jeff Law
08e105064f Daily bump.
From-SVN: r29054
1999-09-02 01:45:45 -06:00
Marc Espie
19e28e2aee * pexecute.c (pexecute): Fill in temp_base when needed.
From-SVN: r29053
1999-09-02 01:37:50 -06:00
Marc Espie
34640c8750 protoize.c (gen_aux_info_file): Let pexecute call choose_temp_base if needed.
* protoize.c (gen_aux_info_file):  Let pexecute call choose_temp_base if
        needed.

From-SVN: r29052
1999-09-02 01:37:40 -06:00
Marc Espie
456dd9992b 980414-1.c: Fix assembler syntax to work with old assemblers too.
* gcc.dg/980414-1.c: Fix assembler syntax to work with old
        assemblers too.

From-SVN: r29051
1999-09-02 01:19:47 -06:00
Finn Hakansson
6d649d2678 combine.c (simplify_shift_const): Remove extra semicolon.
* combine.c (simplify_shift_const): Remove extra semicolon.
        * dwarf2out.c (remove_AT): Likewise.
        * expmed.c (expand_mult): Likewise.
        * gcov.c (create_program_flow_graph): Likewise.
        * reorg.c (mostly_true_jump): Likewise.

From-SVN: r29050
1999-09-02 00:47:15 -06:00
Jeffrey A Law
6b7ef0e0be varasm.c (mark_constant_pool): When marking indirect references, only look at SYMBOL_REFs.
* varasm.c (mark_constant_pool): When marking indirect references,
        only look at SYMBOL_REFs.

From-SVN: r29049
1999-09-02 00:39:43 -06:00
Tom Tromey
bc5afba452 posix-threads.h (PTHREAD_MUTEX_IS_STRUCT): New define.
* include/posix-threads.h (PTHREAD_MUTEX_IS_STRUCT): New define.
	(_Jv_PthreadGetMutex): Use it.
	(_Jv_PthreadCheckMonitor): Use new M_COUNT macros.
	(_Jv_MutexInit): Use PTHREAD_MUTEX_IS_STRUCT.
	(_Jv_MutexLock): Likewise.
	(_Jv_MutexUnlock): Likewise.
	* include/config.h.in: Rebuilt.
	* acconfig.h (PTHREAD_MUTEX_HAVE_M_COUNT,
	PTHREAD_MUTEX_HAVE___M_COUNT): New undefs.
	* configure: Rebuilt.
	* libgcj.spec.in: Don't mention INTERPSPEC.
	* configure.in (INTERPSPEC): Removed.
	Only run pthreads-related checks when using POSIX threads.  Check
	for m_count and __m_count in mutex structure.

From-SVN: r29048
1999-09-02 06:27:00 +00:00
Jeffrey A Law
2598e85aad except.c (expand_fixup_region_end): Do not peek at INSN_UID (node->entry->outer_context) for flag_new_exceptions.
* except.c (expand_fixup_region_end): Do not peek at
        INSN_UID (node->entry->outer_context) for flag_new_exceptions.

From-SVN: r29047
1999-09-02 00:08:25 -06:00
Richard Henderson
ff2589d152 Fix data corruption. (Eeep!)
From-SVN: r29046
1999-09-01 22:47:47 -07:00
Geoffrey Keating
efa3896ad4 flags.h: New variables align_loops...
* flags.h: New variables align_loops, align_loops_log,
align_jumps, align_jumps_log, align_labels, align_labels_log,
align_functions, align_functions_log.
* toplev.c: Define them.
(f_options): Handle -falign-* when they have no argument.
(main): Add logic to set variables for -falign-functions,
-falign-jumps, -falign-labels, -falign-loops.
Make it -fsched-verbose=<n> and -finline-limit=<n>.
(display_help): Change help to match options.
* final.c (LABEL_ALIGN): Default to align_labels_log.
(LABEL_ALIGN_MAX_SKIP): Default to align_labels-1.
(LOOP_ALIGN): Default to align_loops_log.
(LOOP_ALIGN_MAX_SKIP): Default to align_loops-1.
(LABEL_ALIGN_AFTER_BARRIER): Default to align_jumps_log.
(LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP): Default to align_jumps-1.
* varasm.c (assemble_start_function): Handle align_functions.

* config/sparc/sparc.h: Don't declare sparc_align_*.
Don't provide LABEL_ALIGN_AFTER_BARRIER or LOOP_ALIGN.
(DEFAULT_SPARC_ALIGN_FUNCS): Delete; take functionality into
sparc.c.
(FUNCTION_BOUNDARY): Fix incorrect use---it's not just a request,
it's a promise.
* config/sparc/sparc.c: Delete sparc_align_loops,
sparc_align_jumps, sparc_align_funcs and the corresponding string
variables.
(sparc_override_options): Default align_functions on ultrasparc.
Delete -malign-* handling.

* config/mips/mips.c (override_options):  On 64-bit targets,
try to align code to 64-bit boundaries.
(print_operand): New substitution, %~,
which aligns labels to align_labels_log.
* config/mips/mips.md (div_trap_normal): Use %~.
(div_trap_mips16): Likewise.
(abssi): Likewise.
(absdi2): Likewise.
(ffssi2): Likewise.
(ffsdi2): Likewise.
(ashldi3_internal): Likewise.
(ashrdi3_internal): Likewise.
(lshrdi3_internal): Likewise.
(casesi_internal): Likewise.

Plus corresponding documentation changes.

From-SVN: r29045
1999-09-02 05:42:06 +00:00
Richard Henderson
e075ae69f9 Merge new ia32 backend from the branch!
From-SVN: r29044
1999-09-01 21:20:21 -07:00
Matt Welsh
a41cb705f6 natClass.cc: Fixed notification of threads when class initialization is complete.
* java/lang/natClass.cc: Fixed notification of threads
	when class initialization is complete.

From-SVN: r29043
1999-09-02 03:46:35 +00:00
Kaveh R. Ghazi
f5984164b7 gxx.gperf (hash, [...]): Add prototypes.
* gxx.gperf (hash, is_reserved_word): Add prototypes.

	* init.c (build_vec_init): Initialize variable `try_block'.

	* lex.c (init_parse): Call memcpy, not bcopy, to avoid casts.
	Likewise for bzero/memset.
	(token_getch, token_put_back): Add static prototypes.  Remove
	`inline' from the definitions.
	(retrofit_lang_decl): Call memset, not bzero, to avoid casts.

From-SVN: r29042
1999-09-02 03:13:16 +00:00
Richard Henderson
aea87e88e1 emit-rtl.c (init_emit_once): Don't use GET_MODE_WIDER_MODE to step through CC modes.
* emit-rtl.c (init_emit_once): Don't use GET_MODE_WIDER_MODE
        to step through CC modes.

From-SVN: r29041
1999-09-01 18:22:31 -07:00
Tom Tromey
6ba9e3b09e ffi.h.in: Removed PACKAGE and VERSION defines and undefs.
* include/ffi.h.in: Removed PACKAGE and VERSION defines and
	undefs.
	* fficonfig.h.in: Rebuilt.
	* configure: Rebuilt.
	* configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE.
	Use AM_PROG_LIBTOOL (automake 1.4 compatibility).
	* acconfig.h: Don't #undef PACKAGE or VERSION.

From-SVN: r29038
1999-09-01 23:16:34 +00:00
Tom Tromey
e409a2c8f4 Modifier.java (ALL_FLAGS): New constant.
* java/lang/reflect/Modifier.java (ALL_FLAGS): New constant.
	* resolve.cc: Removed constants defined by
	java.lang.reflect.Modifier.
	Include <java/lang/reflect/Modifier.h>.
	(_Jv_ResolvePoolEntry): Use values from Modifier.
	(_Jv_DetermineVTableIndex): Likewise.
	(_Jv_PrepareClass): Likewise.
	(ncode): Likewise.
	* defineclass.cc (_Jv_ClassReader): Removed constants defined by
	java.lang.reflect.Modifier.
	Include <java/lang/reflect/Modifier.h>.
	(checkExtends): Use values from Modifier.
	(checkImplements): Likewise.
	(handleField): Likewise.
	(handleConstantValueAttribute): Likewise.
	(handleFieldsEnd): Likewise.
	(handleMethod ): Likewise.
	(handleMethodsEnd): Likewise.
	(handleClassBegin): Likewise.
	* interpret.cc: Removed constants defined by
	java.lang.reflect.Modifier.
	(continue1): Use values from Modifier.
	* java/lang/natClassLoader.cc: Removed constants defined by
	java.lang.reflect.Modifier.

From-SVN: r29037
1999-09-01 22:02:20 +00:00
Mark Mitchell
c7f9c6f5e3 cp-tree.h (lang_type): Move align into type_flags.
* cp-tree.h (lang_type): Move align into type_flags.
	(CLASSTYPE_ALIGN): Adjust accordingly.
	* call.c (direct_reference_binding): Remove misleading comment.

From-SVN: r29035
1999-09-01 21:56:38 +00:00
J"orn Rennecke
2219e9215e regmove.c (fixup_match_1): Don't move INSN in front of P if it would end up in the shadow of a live flags...
* regmove.c (fixup_match_1): Don't move INSN in front of P if
        it would end up in the shadow of a live flags regsiter.

From-SVN: r29034
1999-09-01 14:22:05 -07:00
Tom Tromey
6c2a11802a natClassLoader.cc (_Jv_NewClass): Use JV_STATE_NOTHING, not `0'.
* java/lang/natClassLoader.cc (_Jv_NewClass): Use
	JV_STATE_NOTHING, not `0'.
	* java/lang/Class.h: Replaced JV_STATE_ defines with enum.

From-SVN: r29033
1999-09-01 21:05:17 +00:00
Tom Tromey
45329b398e posix-threads.cc (_Jv_CondWait): Use _Jv_PthreadGetMutex.
* posix-threads.cc (_Jv_CondWait): Use _Jv_PthreadGetMutex.
	* include/posix-threads.h (_Jv_Mutex_t): Define as structure,
	except on Linux.
	(_Jv_PthreadGetMutex): New function.
	(_Jv_PthreadCheckMonitor): Use it.
	(_Jv_MutexInit): Likewise.  ALso, initialize `count'.
	(_Jv_MutexLock): Update `count'.
	(_Jv_MutexUnlock): Likewise.
	(_Jv_PthreadCheckMonitor): Use Linux-specific knowledge when
	appropriate.

From-SVN: r29032
1999-09-01 21:03:18 +00:00
Kresten Krab Thorup
4499762c6e * ChangeLog: update.
From-SVN: r29031
1999-09-01 18:49:55 +00:00
Tom Tromey
6e87747b6d posix-threads.cc (_Jv_CondWait): Call _Jv_PthreadCheckMonitor.
* posix-threads.cc (_Jv_CondWait): Call _Jv_PthreadCheckMonitor.
	* include/posix-threads.h (_Jv_PthreadCheckMonitor): New
	function.
	(_Jv_CondNotify): Use it.
	(_Jv_CondNotifyAll): Likewise.

	* java/lang/Class.h (JV_STATE_NOTHING): Correct misspelling.

From-SVN: r29030
1999-09-01 18:29:39 +00:00
Kresten Krab Thorup
b1133adfca Makefile.am (.java.lo): Add rule.
* Makefile.am (.java.lo): Add rule.

	* Makefile.in: Rebuilt.

From-SVN: r29029
1999-09-01 18:22:05 +00:00
Kaveh R. Ghazi
98c3e05ded Avoids false positives with -Wcast-qual:
* obstack.h (obstack_grow, obstack_grow0): Move (char*) casts
	in calls to `_obstack_memcpy' from here ...

	(_obstack_memcpy): ... to here, except in the __STDC__ case which
	doesn't need it.

From-SVN: r29028
1999-09-01 14:44:56 +00:00
Bernd Schmidt
05d106753d Fix indentation problems
From-SVN: r29027
1999-09-01 14:30:35 +00:00
Andreas Schwab
3b3958fc9a Move *-*-gnu* pattern below *-*-linux*.
From-SVN: r29026
1999-09-01 08:14:33 +00:00
Jeff Law
fe0a8ee66c Daily bump.
From-SVN: r29025
1999-09-01 01:45:44 -06:00
Marc Espie
499b10983a * alias.c (non_local_reference_p): Constify fmt.
From-SVN: r29023
1999-08-31 22:08:57 -07:00
Michael Meissner
7c225121a3 define HAVE_DOS_BASED_FILED_SYSTEM on cygwin
From-SVN: r29022
1999-09-01 03:24:07 +00:00
Tom Tromey
1aaeb2f0b5 jvm.h (_Jv_makeUtf8TypeConst): Removed unused declaration.
* include/jvm.h (_Jv_makeUtf8TypeConst): Removed unused
	declaration.

From-SVN: r29021
1999-09-01 02:36:40 +00:00
Jeff Law
06671717b3 Fix typo in comment.
From-SVN: r29019
1999-08-31 18:12:33 -06:00
Jeffrey A Law
a12e24fcb9 c-torture.exp: Avoid the "compare executables" optimization when testing native.
* lib/c-torture.exp: Avoid the "compare executables" optimization
        when testing native.

From-SVN: r29018
1999-08-31 17:59:40 -06:00
Jeffrey A Law
61c48fbf26 cse.c (delete_trivially_dead_insns): Do not delete stores to the internal_arg_pointer.
* cse.c (delete_trivially_dead_insns): Do not delete stores to
        the internal_arg_pointer.

From-SVN: r29017
1999-08-31 16:48:58 -06:00
Richard Henderson
ede7cd4499 backport: Makefile.in (STAGESTUFF): Add *.peephole2.
Merge peephole2 from new_ia32_branch:
        * Makefile.in (STAGESTUFF): Add *.peephole2.
        (mostlyclean): Likewise.
        (recog.o): Depend on resource.h.

        * final.c (peephole): Conditionalize decl on HAVE_peephole.
        (final_scan_insn): Likewise for the invocation of peephole.
        * genconfig.c (main): Look for peephole and peephole2 patterns.
        Emit HAVE_peephole* accordingly.
        * genpeep.c (main): Conditionalize entire output on HAVE_peephole.
        * flags.h (flag_peephole2): Declare.
        * toplev.c: New pass peephole2.  New flag -fpeephole2.

        * genattrtab.c (main): Count DEFINE_PEEPHOLE2.
        * gencodes.c (main): Likewise.
        * genextract.c (main): Likewise.
        * genoutput.c (main): Likewise.
        * genemit.c (max_operand_1): Look for the max scratch operand.
        (gen_rtx_scratch): New.
        (gen_exp): Use it, and pass on new arg subroutine_type.
        (gen_expand): Take max scratch into account.
        (gen_split): Emit peephole2 functions.
        (output_peephole2_scratch): New.
        (main): Include hard-reg-set.h and resource.h.  Handle peephole2.
        * genrecog.c (routine_type): Add PEEPHOLE2.
        (IS_SPLIT): New.
        (make_insn_sequence): Match outer parallel for peep2.  Discard
        top level scratches and dups.
        (add_to_sequence): New args insn_type and top.  Update all callers.
        Handle toplevel peep2 matching insns.
        (write_subroutine): Handle peep2.
        (write_tree_1): Likewise.
        (write_tree): Likewise.
        (main): Likewise.
        (change_state): New arg afterward.  Update all callers.
        Handle matching separate insns.
        * recog.c (recog_next_insn): New.
        (peephole2_optimize): New.
        * rtl.def (DEFINE_PEEPHOLE2): New.
        * resource.c (find_free_register): New argument last_insn.  Use it
        to find a register available through the entire span.
        * resource.h (find_free_register): Update prototype.

From-SVN: r29015
1999-08-31 13:37:09 -07:00
Richard Henderson
4dfeccf9d0 * getpwd.c: Check HAVE_GETCWD before defining it away.
From-SVN: r29013
1999-08-31 13:33:13 -07:00
Jim Kingdon
8fd8d061f7 i386.c (output_strlen_unroll): Don't write xops[7] label if it wasn't set.
* config/i386/i386.c (output_strlen_unroll): Don't write xops[7]
        label if it wasn't set.

From-SVN: r29010
1999-08-31 13:05:20 -07:00
Zack Weinberg
2ac9349e26 cpplib.c (struct directive): Const-ify name pointer and function pointer prototype.
1999-08-31 12:44 -0700  Zack Weinberg  <zack@bitmover.com>

	* cpplib.c (struct directive): Const-ify name pointer and
	function pointer prototype.
	(validate_else, do_define, do_line, do_include, do_undef,
	do_error, do_pragma, do_ident, do_if, do_xifdef, do_else,
	do_elif, do_endif, do_sccs, do_assert, do_unassert,
	do_warning): Const-ify second arg.
	(directive_table): Mark const.  Reorder entries by frequency
	of usage, record statistics.

From-SVN: r29009
1999-08-31 19:46:18 +00:00