Commit Graph

26179 Commits

Author SHA1 Message Date
Fred Fish f766bd4696 beos-elf.h: (ASM_IDENTIFY_GCC): Define to nothing so the gcc2_compiled symbol doesn't...
* i386/beos-elf.h: (ASM_IDENTIFY_GCC): Define to nothing
        so the gcc2_compiled symbol doesn't confuse BeOS debuggers.

From-SVN: r31838
2000-02-07 15:59:19 -05:00
Jason Merrill 70adf8a937 cp-tree.h (struct saved_scope): Add incomplete field.
* cp-tree.h (struct saved_scope): Add incomplete field.
        (namespace_scope_incomplete): New macro.
        * decl.c (pushdecl): Use it.
        (hack_incomplete_structures): Use it.  See through artificial
        binding levels.
        (mark_saved_scope): Mark it.

        Implement access control for nested types.
        * search.c (type_access_control): New fn.
        (accessible_p): Now we do perform access control for types.
        * semantics.c (deferred_type_access_control): New fn.
        (initial_deferred_type_access_control): New fn.
        (begin_function_definition): Call it.  Add lookups parm.
        * decl.c (struct binding_level): Add this_class field.
        (pushlevel_class): Set it.
        (mark_binding_level): Mark it.
        (lookup_name_real): Use it.  Call type_access_control.
        (mark_saved_scope): Mark lookups field.
        * cp-tree.h (flagged_type_tree): Add lookups field.
        (struct saved_scope): Add lookups field.
        (type_lookups): New macro.
        * parse.y (declmods): Now <ftype>.
        (parse_decl): Add lookups parm.  Call
        initial_deferred_type_access_control.
        (lang_extdef): Clear type_lookups.
        (typed_declspecs, declmods, typespec): Set lookups field.
        (initdcl): Call deferred_type_access_control.
        (fn.def1, fn.def2, typed_declspecs1, initdcl0_innards, nomods_initdcl0,
        component_decl_1, named_parm): Adjust.
        * friend.c (is_friend): Nested classes are friends of their
        enclosing classes.

        * class.c (currently_open_derived_class): New fn.
        * method.c (hack_identifier): Use it.

        * lex.c (do_identifier): Remove obsolete code.

        * parse.y (typed_typespecs): Propagate new_type_flag properly.

From-SVN: r31837
2000-02-07 15:36:36 -05:00
Jason Merrill dd8216e19e update
From-SVN: r31836
2000-02-07 15:35:14 -05:00
Jason Merrill f4a4b6690e tweak wording
From-SVN: r31835
2000-02-07 15:34:20 -05:00
Zack Weinberg 981cb4378a [multiple changes]
2000-02-07  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (deps_output): Count spacers in deps_column.

2000-02-07  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (initialize_dependency_output): If there is no
	suffix, don't try to look for known suffixes.  Use strrchr.
	(cpp_start_read): Remove duplicate initialization.

From-SVN: r31832
2000-02-07 18:34:05 +00:00
Jan Hubicka c2f8b49149 calls.c (compute_argument_block_size): New argument preferred_stack_boundary.
* calls.c (compute_argument_block_size): New argument
	preferred_stack_boundary.
	(expand_call): update cfun->preferred_stack_boundary, update call of
	compute_argument_block_size
	(emit_library_call): Increate cfun->preferred_stack_boundary
	to PREFERRED_STACK_BOUNDARY
	(emit_library_call_value): Likewise.
	* explow.c (allocate_dynamic_stack_spave): Likewise.
	* function.c (prepare_function_start): Set
	cfun->preferred_stack_boundary
	* function.h (struct function): Add preferred_stack_boundary field.
	* integrate.c (expand_inline_function): Update
	cfun->preferred_stack_boundary and cfun->stack_alignment_needed.
	(copy_rtx_and_substitute): Align frame to stack_alignment_needed only.
	* i386.c (compute_frame_size): Use cfun->preferred_stack_boundary.

From-SVN: r31831
2000-02-07 17:39:40 +00:00
Jeff Law 08a75be26c Daily bump.
From-SVN: r31830
2000-02-07 01:45:11 -07:00
Zack Weinberg c1212d2f09 cpplib.c (my_strerror, [...]): Move to cpperror.c.
* cpplib.c (my_strerror, cpp_error, cpp_error_with_line,
	cpp_error_from_errno, cpp_warning, cpp_warning_with_line,
	cpp_pedwarn, cpp_pedwarn_with_line,
	cpp_pedwarn_with_file_and_line): Move to cpperror.c.
	(cpp_print_file_and_line, v_cpp_error, v_cpp_warning,
	v_cpp_error_with_line, v_cpp_warning_with_line,
	cpp_message_from_errno, cpp_perror_with_name): Delete.

	* cpperror.c (cpp_print_containing_files): Take starting
	buffer as argument.
	(cpp_file_line_for_message): Rename to cpp_print_file_and_line.
	(v_cpp_message): Now called directly by all entry points.
	Remove -1 case.
	(cpp_pfatal_with_name, cpp_message): Delete.
	(cpp_notice_from_errno, cpp_ice): New functions.
	(cpp_notice): Is now for reporting error conditions, just
	without an associated file.
	(cpp_error, cpp_error_with_line): Don't do anything if
	opts->inhibit_errors is on.
	(cpp_pedwarn_with_file_and_line): Take column argument also.

	* cpplib.h: Update prototypes of exported functions.
	(struct cpp_options): Add inhibit_errors.

	* cppalloc.c, cppfiles.c: Use fprintf not cpp_notice for
	non-error messages.  Include intl.h.

	* cppinit.c, cppmain.c: Likewise.  Also, use
	cpp_notice_from_errno instead of cpp_perror_with_name or
	cpp_pfatal_with_name, and cpp_notice instead of cpp_message.

	* cppexp.c, cpphash.c, cppinit.c, cpplib.c: Use cpp_ice to
	report internal errors.

	* cpplib.c (do_define): Switch bcopy to memcpy.
	Give cpp_pedwarn_with_file_and_line a dummy column argument.

From-SVN: r31829
2000-02-06 23:46:18 +00:00
Zack Weinberg 25e309705a cpplib.c (copy_rest_of_line): Revert previous change: don't bail out early if we hit a line comment.
* cpplib.c (copy_rest_of_line): Revert previous change: don't
	bail out early if we hit a line comment.

From-SVN: r31828
2000-02-06 20:08:22 +00:00
Richard Henderson 9a7372d646 i386.c (ix86_can_use_return_insn_p): Fail for large poped args and for non-empty stack frames.
* i386.c (ix86_can_use_return_insn_p): Fail for large poped args
        and for non-empty stack frames.
        * i386.md (return): Expand to return-pop as needed.

From-SVN: r31827
2000-02-06 05:19:20 -08:00
Richard Henderson 69732dcb9c flow.c (flow_delete_insn, [...]): Export.
* flow.c (flow_delete_insn, make_edge, remove_edge): Export.
        * basic-block.h: Declare them.
        * emit-rtl.h (active_insn_p): New.
        (next_active_insn, prev_active_insn): Use it.
        * rtl.h: Declare it.
        * function.c (emit_return_into_block): New.
        (thread_prologue_and_epilogue_insns): Insert return insns instead
        of epilogues when possible.
        * jump.c (jump_optimize_1): Remove code to insert a return insn
        on the fallthru to the exit block.

From-SVN: r31826
2000-02-06 05:01:03 -08:00
Richard Henderson 52a75c3c22 simplify-rtx.c (simplify_relational_operation): Canonicalize constant to op1 for testing.
* simplify-rtx.c (simplify_relational_operation): Canonicalize
        constant to op1 for testing.

From-SVN: r31825
2000-02-06 02:56:56 -08:00
Michael Hayes b027470f42 c4x.md (*ldi_on_overflow): New pattern.
2000-02-06  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md (*ldi_on_overflow): New pattern.
	(fixuns_truncqfqi2): Use it.

From-SVN: r31823
2000-02-06 10:36:26 +00:00
Richard Henderson d9f0b9607d i386.md (widening and peepholes): Mask the constant instead of using gen_lowpart.
* i386.md (widening and peepholes): Mask the constant instead of
        using gen_lowpart.

From-SVN: r31822
2000-02-06 01:47:49 -08:00
Richard Henderson 5fbdde427d i386.c (ix86_agi_dependant): Handle pro_epilogue_adjust_stack as a TYPE_LEA insn.
* i386.c (ix86_agi_dependant): Handle pro_epilogue_adjust_stack
        as a TYPE_LEA insn.

From-SVN: r31821
2000-02-06 01:47:28 -08:00
Jeff Law df683eb6b7 Daily bump.
From-SVN: r31820
2000-02-06 01:45:07 -07:00
Zack Weinberg eaefae0ec3 cppfiles.c (read_and_prescan): Bump input pointer before possibly branching off to the backslash code.
* cppfiles.c (read_and_prescan) [case SPECCASE_QUESTION]: Bump
	input pointer before possibly branching off to the backslash
	code.
	* cpphash.c (macroexpand): Correctly delete \r escapes when
	stringifying parameters.
	* cpplib.c (copy_rest_of_line): Go directly to skip_block_comment
	if we can; bail out early if we hit a line comment.
	(handle_directive): Treat '# 123' in an .S file just like
	'# <punctuation>'.  Discard the shifted '#' if we hit '#\n'.
	Return 1 for '# not_a_directive'.
	(get_directive_token): Pop macro buffers here, so that
	cpp_get_token can't sneakily move past a newline.
	Add sanity checks.
	(cpp_get_token): goto randomchar if handle_directive returns 0.

From-SVN: r31819
2000-02-06 08:24:22 +00:00
Zack Weinberg 1316f1f7fc cppalloc.c: Update copyright.
* cppalloc.c: Update copyright.
	* cpplib.c: Merge all the static function prototypes into one
	block.
	* cpplib.h: Remove #if 0 block.

From-SVN: r31818
2000-02-06 07:53:50 +00:00
Zack Weinberg 40ea76de51 cpperror.c: Remove #ifdef EMACS block.
* cpperror.c: Remove #ifdef EMACS block.
	* cppmain.c: Likewise.
	* cpphash.c: Remove #if 0 blocks.
	* cppinit.c: Remove #if 0 blocks, and the -lint option.
	* cpplib.c: Remove #if 0 blocks and code referencing
	pcp_inside_if or for_lint.  Remove duplicate error message.
	Fix error messages for #else after #else or #elif.  Reformat.
	Remove archaic TODO list.
	* cpplib.h: Remove pcp_inside_if and for_lint flags.

From-SVN: r31817
2000-02-06 07:30:25 +00:00
Zack Weinberg fd81d24f99 tinfo.h: Remove apostrophes from C++ comment (xgettext thinks this file is plain C).
* cp/tinfo.h: Remove apostrophes from C++ comment (xgettext
	thinks this file is plain C).
	* i386/osf1elf.h: Add missing backslash to multiline string.
	* po/POTFILES.in: Remove stupid.c.
	* exgettext: s/VPROTO/VPARAMS/ now that we are no longer using
	VPROTO.

From-SVN: r31816
2000-02-06 06:57:21 +00:00
Alan Modra cc6c6c234f Alan Modra <alan@SPRI.Levels.UniSA.Edu.Au>
Alan Modra  <alan@SPRI.Levels.UniSA.Edu.Au>
        * gcc.c-torture/execute/20000205-1.c: New.

From-SVN: r31815
2000-02-05 21:39:32 -08:00
Kaveh R. Ghazi 75874af96c * longlong.h [sparc] (udiv_qrnnd): Avoid stringifying macro arg.
From-SVN: r31814
2000-02-06 04:48:20 +00:00
Kaveh R. Ghazi 5ca1627b6d gjavah.c (overloaded_jni_method_exists_p): Add prototype.
* gjavah.c (overloaded_jni_method_exists_p): Add prototype.
       (print_name_for_stub_or_jni, process_file): Constify a char*.

From-SVN: r31813
2000-02-06 04:33:10 +00:00
Kaveh R. Ghazi 5455104482 com.c (mark_tracker_head, [...]): Protoize.
* com.c (mark_tracker_head, mark_binding_level): Protoize.

       * where.c (mark_ffewhere_head): Likewise.

From-SVN: r31812
2000-02-06 04:30:45 +00:00
Kaveh R. Ghazi 70a51bdac1 Makefile.in (call.o): Depend on $(EXPR_H).
* Makefile.in (call.o): Depend on $(EXPR_H).

	* call.c: Include "expr.h".

	* class.c (dump_class_hierarchy): Add prototype.

	* search.c (dfs_get_pure_virtuals): Likewise.

From-SVN: r31811
2000-02-06 04:27:53 +00:00
Kaveh R. Ghazi c69916605c Makefile.in (c-common.o): Depend on $(EXPR_H).
* Makefile.in (c-common.o): Depend on $(EXPR_H).

	* c-common.c: Include expr.h.

	* c-pragma.c (mark_align_stack): Add prototype.

	* caller-save.c (add_stored_regs): Likewise.

	* combine.c (record_promoted_value): Likewise.

	* i386.c (ix86_sched_reorder_pentium, ix86_sched_reorder_ppro):
	Likewise.

	* cppinit.c (new_pending_define): Likewise.

	* cpplib.c (skip_block_comment, skip_line_comment): Likewise.

	* dwarf2out.c (save_rtx, splice_child_die, reverse_die_lists,
	AT_class, AT_flag, AT_int, AT_unsigned, AT_string, AT_ref, AT_loc,
	AT_addr, AT_lbl, get_AT_ref, free_AT, free_die, local_scope_p,
	class_scope_p): Likewise.

	* dwarf2out.h (dwarf2out_set_demangle_name_func,
	dwarf2out_add_library_unit_info): Likewise.

	* ggc.h (ggc_page_print_statistics): Likewise.

	* haifa-sched.c (propagate_deps): Likewise.

	* reg-stack.c (next_flags_user, record_label_references): Likewise.

	* rtl.h (set_stack_check_libfunc): Likewise.

	* toplev.h (set_fatal_function): Likewise.

	* toplev.c (set_fatal_function): Delete prototype.

	* diagnostic.c: Deconstify functions returning malloc'ed ptrs.

From-SVN: r31810
2000-02-06 03:40:46 +00:00
Geoff Keating 79f4e1c0af ppc-asm.h (FUNC_START): Use USER_LABEL_PREFIX.
* ginclude/ppc-asm.h (FUNC_START): Use USER_LABEL_PREFIX.
(FUNC_END): Likewise.

From-SVN: r31808
2000-02-06 03:14:46 +00:00
Jeff Law 8734cf78a2 Daily bump.
From-SVN: r31806
2000-02-05 01:45:07 -07:00
Michael Hayes 632905214b caller-save.c: Include tm_p.h.
2000-02-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* caller-save.c: Include tm_p.h.

From-SVN: r31805
2000-02-05 05:46:57 +00:00
Michael Hayes a0b4eeee42 Makefile.in (libgcc.a): Add $(LIBGCC1) to libgcc.a after $(LIBGCC2).
2000-02-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* Makefile.in (libgcc.a): Add $(LIBGCC1) to libgcc.a after $(LIBGCC2).

From-SVN: r31804
2000-02-05 05:41:22 +00:00
Zack Weinberg b492151d02 Word wrap comment
From-SVN: r31803
2000-02-05 05:05:03 +00:00
Neil Booth f15e0a178d cccp.c (main): Check 'dir' for a NULL pointer before passing it to strcmp.
2000-02-04  Neil Booth  <NeilB@earthling.net>

	* cccp.c (main): Check 'dir' for a NULL pointer before passing
	it to strcmp.

From-SVN: r31802
2000-02-05 05:04:09 +00:00
Zack Weinberg 706b0f603f recog.h: Remove NO_MD_PROTOTYPES ifdefs.
* recog.h: Remove NO_MD_PROTOTYPES ifdefs.
 	* genflags.c: Use the max_operand_1 logic from genemit.c to
 	calculate how many arguments gen_insn prototypes have.  Remove
 	NO_MD_PROTOTYPES ifdefs from the generated file.
 	* genoutput.c: Don't define NO_MD_PROTOTYPES in the generated
 	file.  Cast gen_insn initializers to insn_gen_fn.
 	* config/alpha/vms.h: Don't define NO_MD_PROTOTYPES.
 	* gcc.texi: Remove documentation of NO_MD_PROTOTYPES.

From-SVN: r31801
2000-02-05 04:56:11 +00:00
Kaveh R. Ghazi c05d48e668 Makefile.in (HDR): Add machname.h.
* fixinc/Makefile.in (HDR): Add machname.h.
        (clean): Likewise.

From-SVN: r31800
2000-02-05 03:59:43 +00:00
Michael Hayes 31113446bc c4x.h (c4x_compare_op0, [...]): Move ...
2000-02-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (c4x_compare_op0, c4x_compare_op1): Move ...
	(c4x_regclass_map, c4x_caller_save_map, c4x_rpts_cycles): Ditto.
	(c4x_cpu_version): Ditto.
	* config/c4x/c4x-protos.h: ... here.

From-SVN: r31799
2000-02-05 00:05:12 +00:00
Jason Merrill e40a1c6765 dwarf2out.c (add_abstract_origin_attribute): Don't call gen_abstract_function on our context if we're a nested function.
* dwarf2out.c (add_abstract_origin_attribute): Don't call
        gen_abstract_function on our context if we're a nested function.

From-SVN: r31798
2000-02-04 18:46:13 -05:00
Michael Hayes a5fa648417 c4x.md (fixuns_truncqfqi2): Rewrite.
2000-02-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md (fixuns_truncqfqi2): Rewrite.
	* config/c4x/libgcc.S (ufix_truncqfhi2n): Fix.

From-SVN: r31797
2000-02-04 23:35:52 +00:00
Warren Levy 4f88416976 Added credits for Per Bothner's work on MPN.java and IntNum.java (for
BigInteger).

From-SVN: r31795
2000-02-04 22:11:07 +00:00
Warren Levy 25c449becf Makefile.am: Added MPN.java and BigInteger.java.
* Makefile.am: Added MPN.java and BigInteger.java.
	* Makefile.in: Rebuilt.
	* gnu/gcj/math/MPN.java: New file.
	* java/math/BigInteger.java: New file.

From-SVN: r31794
2000-02-04 22:00:36 +00:00
Bruce Korb bff0dc38c2 genfixes (machname.h): Move the functionality from gen-machine.h into this file.
2000-02-04  Bruce Korb  <bkorb@gnu.org>

	* fixinc/genfixes(machname.h):
	Move the functionality from gen-machine.h into this file.
	UNdef MN_NAME_PAT if there are no names to change.
	Also, be a little kinder when AutoGen is not present.

	* fixinc/Makefile.in(machname.h):
	Change the generation rule to use genfixes.

	* fixinc/fixfixes.c(machine_name):
	machine_name_fix's functionality now dependent upon whether
	MN_NAME_PAT is defined.

	* fixinc/fixtests.c(machine_name):
	ditto.

	* fixinc/fixlib.c(mn_get_regexps): conditional on definition
	of MN_NAME_PAT.

	* fixinc/fixlib.h(mn_get_regexps):
	ditto

	* fixinc/gen-machine.h: DELETED

From-SVN: r31793
2000-02-04 21:42:00 +00:00
Jan Hubicka 1c71e60ef7 i386.c (SAVE_REGS_FIRST): Remove.
* i386.c (SAVE_REGS_FIRST): Remove.
        (ix86_initial_elimination_offset): Handle only SAVE_REGS_FIRST mode.
        (ix86_compute_frame_size): Likewise.
        (ix86_expand_prologue): Likewise.  Use pro_epilogue_adjust_stack.
        (ix86_emit_restore_regs): Remove.
        (ix86_emit_epilogue_esp_adjustment): Use pro_epilogue_adjust_stack
        when a frame pointer is in use.
        (ix86_expand_epilogue): Handle only SAVE_REGS_FIRST mode.  Use mov
        instead of pop to restore a register when profitable; emit leave
        when profitable.
        (ix86_attr_length_default): Handle pro_epilogue_adjust_stack
        as a TYPE_LEA insn.
        (ix86_adjust_cost): Handle pro_epilogue_adjust_stack as TYPE_ALU.
        * i386.md (prologue_allocate_stack): Remove.
        (epilogue_deallocate_stack): Remove.
        (pro_epilogue_adjust_stack): New.

Co-Authored-By: Richard Henderson <rth@cygnus.com>

From-SVN: r31792
2000-02-04 13:40:37 -08:00
Richard Henderson c13fde0599 function.c (diddle_return_value): Rework to use a callback function.
* function.c (diddle_return_value): Rework to use a callback function.
        Use current_function_return_rtx if it's been set up.
        (do_clobber_return_reg, clobber_return_register): New.
        (do_use_return_reg, use_return_register): New.
        (expand_function_end): Use them.
        * stmt.c (expand_null_return): Likewise.
        * function.h: Declare them.
        * flow.c (mark_regs_live_at_end): Use diddle_return_value.
        (mark_reg): Change arguments as appropriate for callback.
        * integrate.c (expand_inline_function): Revert 19 Jan change.

From-SVN: r31791
2000-02-04 13:30:22 -08:00
Tom Tromey facc279fc1 defineclass.cc (handleMethodsBegin): Allocate _Jv_MethodBase pointers.
* defineclass.cc (handleMethodsBegin): Allocate _Jv_MethodBase
	pointers.
	(handleMethodsEnd): Fixed error messages.  Create a _Jv_JNIMethod
	if the method is native.
	* resolve.cc (ncode): Don't handle native methods.
	(_Jv_JNIMethod::ncode): New method.
	(_Jv_PrepareClass): Handle native methods.
	* jni.cc (call): Renamed from _Jv_JNI_conversion_call.
	Include AbstractMethodError.h.
	(add_char): New function.
	(mangled_name): Likewise.
	* include/java-interp.h (class _Jv_JNIMethod): New class.
	(class _Jv_MethodBase): New class.
	(class _Jv_InterpMethod): Derive from _Jv_MethodBase.
	(_Jv_InterpClass): Changed `interpreted_methods' field to type
	`_Jv_MethodBase'.

	* include/jvm.h (_Jv_FindSymbolInExecutable): Declare.
	* java/lang/natRuntime.cc (libraries_size, libraries_count,
	libraries): New globals.
	(add_library): New function.
	(_Jv_FindSymbolInExecutable): New function.

	* java/lang/natClassLoader.cc (initiated_classes, loaded_classes):
	Now static.

From-SVN: r31790
2000-02-04 20:49:27 +00:00
Hans-Peter Nilsson a89608cbeb tm.texi (Values in Registers): Fix typo: "fo" "for".
* tm.texi (Values in Registers): Fix typo: "fo" "for".
	(Misc): Say the scheduler, not the Haifa scheduler.

From-SVN: r31789
2000-02-04 19:51:57 +00:00
Clinton Popetz a76063a6c8 jump.c (mark_jump_label): Add in_mem param, check SYMBOL_REFs when in_mem is set.
* jump.c (mark_jump_label): Add in_mem param, check SYMBOL_REFs
	when in_mem is set.  Update all callers.

From-SVN: r31787
2000-02-04 12:51:11 -05:00
Richard Henderson 2e3af27c58 * i386/openbsd.h (INT_ASM_OP): Define.
From-SVN: r31786
2000-02-04 09:48:50 -08:00
Andrew Haley 43c5c8a630 Throwable.java (CPlusPlusDemangler): New class.
2000-02-04  Andrew Haley  <aph@cygnus.com>

        * java/lang/Throwable.java (CPlusPlusDemangler): New class.
        (printStackTrace): Use a CPlusPlusDemangler to demangle names.
        * java/lang/natThrowable.cc (printRawStackTrace): Rename
        printStackTrace to printRawStackTrace.

From-SVN: r31785
2000-02-04 16:59:35 +00:00
Hans-Peter Nilsson 8760eaae3c * tm.texi: Fix various typos.
From-SVN: r31784
2000-02-04 10:30:26 +00:00
Jeff Law cebb3bd563 Daily bump.
From-SVN: r31783
2000-02-04 01:45:06 -07:00
Steve Ellcey 7d4d86036d pa-hpux11.h (LIB_SPEC): Correct typo in !p case.
* config/pa/pa-hpux11.h (LIB_SPEC): Correct typo in !p case.
	(MD_STARTFILE_PREFIX_1): New macro.

From-SVN: r31780
2000-02-03 18:15:43 -05:00