- 21 Jan, 2016 3 commits
-
-
2016-01-20 Sandra Loosemore <sandra@codesourcery.com> gcc/ * common.opt (feliminate-dwarf2-dups): Replace references to "DWARF 2" with just "DWARF". * config/ia64/ia64.opt (mdwarf2-asm): Likewise. * doc/extend.texi: Likewise. * doc/cpp.texi: Likewise. * doc/invoke.texi: Likewise. (Option Summary): Add -gdwarf to list of Debugging Options. (Debugging Options): Document -gdwarf. * doc/contrib.texi: Spell "DWARF" like that. From-SVN: r232647
Sandra Loosemore committed -
2016-01-20 Matthias Klose <doko@ubuntu.com> * libtool-version: Remove. From-SVN: r232645
Matthias Klose committed -
From-SVN: r232644
GCC Administrator committed
-
- 20 Jan, 2016 27 commits
-
-
* omp-low.c (expand_omp_target): Avoid -Wmaybe-uninitialized warning. Fix up formatting. From-SVN: r232641
Jakub Jelinek committed -
PR middle-end/67653 * gimplify.c (gimplify_asm_expr): Warn if it is too late to attempt to mark memory input operand addressable and call prepare_gimple_addressable in that case. Don't adjust input_location for diagnostics, use error_at instead. * c-c++-common/pr67653.c: New test. * gcc.dg/torture/pr29119.c: Add dg-warning. From-SVN: r232640
Jakub Jelinek committed -
gcc/ * config/rs6000/ppc-auxv.h: New file. * config/rs6000/rs6000-builtin.def (cpu_init): Add new builtin. (cpu_is): Likewise. (cpu_supports): Likewise. * config/rs6000/rs6000.c: include "ppc-auxv.h". (cpu_is_info): New variable. (cpu_supports_info): Likewise. (tcb_verification_symbol): Likewise. (cpu_builtin_p): Likewise. (cpu_expand_builtin): New function. (rs6000_expand_ternop_builtin): Add support for CPU builtin functions. (rs6000_init_builtins): Likewise. (rs6000_elf_file_end): Emit HWCAP in TCB verification symbol. * config/rs6000/rs6000.h (TLS_REGNUM): New define. * configure.ac (gcc_cv_libc_provides_hwcap_in_tcb): New test. * configure: Regenerate. * config.in: Likewise. * doc/extend.texi (PowerPC Built-in Functions): Document __builtin_cpu_init, __builtin_cpu_is and __builtin_cpu_supports. gcc/testsuite/ * gcc.target/powerpc/cpu-builtin-1.c: New test. From-SVN: r232634
Peter Bergner committed -
PR target/68609 * config/rs6000/rs6000.c (rs6000_emit_swsqrt): Add vector sqrt domain check. * config/rs6000/vector.md (sqrt<mode>2): Call rs6000_emit_swsqrt for V4SFmode. From-SVN: r232632
David Edelsohn committed -
PR bootstrap/69343 PR bootstrap/69339 PR tree-opt/68964 Revert: gcc/ * tree.c (tm_define_builtin): New. (find_tm_vector_type): New. (build_tm_vector_builtins): New. (build_common_builtin_nodes): Call it. libitm/ * Makefile.am (libitm_la_SOURCES) [ARCH_AARCH64]: Add vect128.cc (libitm_la_SOURCES) [ARCH_ARM]: Add neon.cc (libitm_la_SOURCES) [ARCH_PPC]: Add vect128.cc (libitm_la_SOURCES) [ARCH_S390]: Add vect128.cc * configure.ac (ARCH_AARCH64): New conditional. (ARCH_PPC, ARCH_S390): Likewise. * Makefile.in, configure: Rebuild. * libitm.h (_ITM_TYPE_M128): Always define. * vect64.cc: Split ... * vect128.cc: ... out of... * config/x86/x86_sse.cc: ... here. * config/arm/neon.cc: New file. From-SVN: r232631
Richard Henderson committed -
PR libstdc++/69310 * config/os/bsd/darwin/os_defines.h (_GLIBCXX_USE_WEAK_REF): Define. From-SVN: r232628
Torvald Riegel committed -
PR libstdc++/60401 * include/c_compatibility/math.h (acosh, asinh, atanh, acbrt, copysign, erf, erfc, exp2, expm1, fdim, fma, fmax, fmin, hypot, ilogb, lgamma, llrint, llround, log1p, log2, logb, lrint, lround, nearbyint, nextafter, nexttoward, remainder, remquo, rint, round, scalbln, scalbn, tgamma, trunc) [__cplusplus >= 201103L && _GLIBCXX_USE_C99_MATH_TR1]: Add using declarations. * testsuite/26_numerics/headers/cmath/60401.cc: New. From-SVN: r232627
Jonathan Wakely committed -
From-SVN: r232626
Prathamesh Kulkarni committed -
2016-01-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> PR c/24293 * c-tree.h (incomplete_record_decls): Declare. * c-parser.c (incomplete_record_decls): Define. (c_parser_translation_unit): Iterate through incomplete_record_decls and report error if any decl has zero size. * c-decl.c (finish_decl): Append static decl with incomplete struct/union or enum type to incomplete_record_decls. testsuite/ * gcc.dg/pr24293.c: New test. * gcc.dg/Wcxx-compat-8.c: Adjust to accept error due to incomplete struct type. * gcc.dg/declspec-1.c: Likewise. * gcc.dg/pr63549.c: Likewise. From-SVN: r232622
Prathamesh Kulkarni committed -
libgomp/ * task.c (gomp_create_target_task): Set firstprivate_copies to NULL. From-SVN: r232620
Ilya Verbin committed -
libmpx/ * mpxrt/mpxrt.c (handler): Fix verbosity for error message. From-SVN: r232619
Ilya Enkovich committed -
PR tree-optimization/66612 * gcc.target/powerpc/20050830-1.c: Xfail the scan-assembler test for bdn instruction. From-SVN: r232618
Jakub Jelinek committed -
2016-01-20 Christophe Lyon <christophe.lyon@linaro.org> gcc/ * doc/sourcebuild.texi (arm_crypto_pragma_ok): Document new entry. (arm_fp_ok): Likewise. (arm_fp): Likewise. (arm_crypto): Likewise. gcc/testsuite/ * lib/target-supports.exp (check_effective_target_arm_fp_ok_nocache): New. (check_effective_target_arm_fp_ok): New. (add_options_for_arm_fp): New. (check_effective_target_arm_crypto_ok_nocache): Require target_arm_v8_neon_ok instead of arm32. (check_effective_target_arm_crypto_pragma_ok_nocache): New. (check_effective_target_arm_crypto_pragma_ok): New. (add_options_for_arm_vfp): New. * gcc.target/arm/attr-crypto.c: Use arm_crypto_pragma_ok effective target. Do not force -mfloat-abi=softfp, use arm_fp_ok effective target instead. Force initial fpu to vfp. * gcc.target/arm/attr-neon-builtin-fail.c: Do not force -mfloat-abi=softfp, use arm_fp_ok effective target instead. * gcc.target/arm/attr-neon-fp16.c: Likewise. Remove arm_neon_ok dependency. * gcc.target/arm/attr-neon2.c: Do not force -mfloat-abi=softfp, use arm_vfp effective target instead. Force initial fpu to vfp. * gcc.target/arm/attr-neon3.c: Likewise. * gcc.target/arm/cmp-2.c: Use arm_fp_ok effective target instead of arm_vfp_ok. * gcc.target/arm/unsigned-float.c: Likewise. * gcc.target/arm/vfp-1.c: Likewise. * gcc.target/arm/vfp-ldmdbd.c: Likewise. * gcc.target/arm/vfp-ldmdbs.c: Likewise. * gcc.target/arm/vfp-ldmiad.c: Likewise. * gcc.target/arm/vfp-ldmias.c: Likewise. * gcc.target/arm/vfp-stmdbd.c: Likewise. * gcc.target/arm/vfp-stmdbs.c: Likewise. * gcc.target/arm/vfp-stmiad.c: Likewise. * gcc.target/arm/vfp-stmias.c: Likewise. * gcc.target/arm/vnmul-1.c: Likewise. * gcc.target/arm/vnmul-2.c: Likewise. * gcc.target/arm/vnmul-3.c: Likewise. * gcc.target/arm/vnmul-4.c: Likewise. From-SVN: r232616
Christophe Lyon committed -
From-SVN: r232615
H.J. Lu committed -
From-SVN: r232614
Christophe Lyon committed -
Compile-time MPX tests don't need the MPX run-time library. They should pass for non-x32 target. PR testsuite/69366 * g++.dg/pr63995-1.C: Require non-x32 target, instead of, the MPX run-time library, for compile-time MPX test. * gcc.target/i386/chkp-always_inline.c: Likewise. * gcc.target/i386/chkp-bndret.c: Likewise. * gcc.target/i386/chkp-builtins-1.c: Likewise. * gcc.target/i386/chkp-builtins-2.c: Likewise. * gcc.target/i386/chkp-builtins-3.c: Likewise. * gcc.target/i386/chkp-builtins-4.c: Likewise. * gcc.target/i386/chkp-const-check-1.c: Likewise. * gcc.target/i386/chkp-const-check-2.c: Likewise. * gcc.target/i386/chkp-hidden-def.c: Likewise. * gcc.target/i386/chkp-label-address.c: Likewise. * gcc.target/i386/chkp-lifetime-1.c: Likewise. * gcc.target/i386/chkp-narrow-bounds.c: Likewise. * gcc.target/i386/chkp-pr69044.c: Likewise. * gcc.target/i386/chkp-remove-bndint-1.c: Likewise. * gcc.target/i386/chkp-remove-bndint-2.c: Likewise. * gcc.target/i386/chkp-strchr.c: Likewise. * gcc.target/i386/chkp-strlen-1.c: Likewise. * gcc.target/i386/chkp-strlen-2.c: Likewise. * gcc.target/i386/chkp-strlen-3.c: Likewise. * gcc.target/i386/chkp-strlen-4.c: Likewise. * gcc.target/i386/chkp-strlen-5.c: Likewise. * gcc.target/i386/chkp-stropt-1.c: Likewise. * gcc.target/i386/chkp-stropt-10.c: Likewise. * gcc.target/i386/chkp-stropt-11.c: Likewise. * gcc.target/i386/chkp-stropt-12.c: Likewise. * gcc.target/i386/chkp-stropt-13.c: Likewise. * gcc.target/i386/chkp-stropt-14.c: Likewise. * gcc.target/i386/chkp-stropt-15.c: Likewise. * gcc.target/i386/chkp-stropt-16.c: Likewise. * gcc.target/i386/chkp-stropt-2.c: Likewise. * gcc.target/i386/chkp-stropt-3.c: Likewise. * gcc.target/i386/chkp-stropt-4.c: Likewise. * gcc.target/i386/chkp-stropt-5.c: Likewise. * gcc.target/i386/chkp-stropt-6.c: Likewise. * gcc.target/i386/chkp-stropt-7.c: Likewise. * gcc.target/i386/chkp-stropt-8.c: Likewise. * gcc.target/i386/chkp-stropt-9.c: Likewise. * gcc.target/i386/pr63995-2.c: Likewise. * gcc.target/i386/pr64805.c: Likewise. * gcc.target/i386/pr65044.c: Likewise. * gcc.target/i386/pr65167.c: Likewise. * gcc.target/i386/pr65183.c: Likewise. * gcc.target/i386/pr65184.c: Likewise. * gcc.target/i386/thunk-retbnd.c: Likewise. From-SVN: r232613
H.J. Lu committed -
Compile-time MPX tests don't need the MPX run-time library. They should pass for non-x32 target. PR testsuite/69369 * g++.dg/pr63995-1.C: Require non-x32 target, instead of, the MPX run-time library, for compile-time MPX test. * gcc.target/i386/chkp-always_inline.c: Likewise. * gcc.target/i386/chkp-bndret.c: Likewise. * gcc.target/i386/chkp-builtins-1.c: Likewise. * gcc.target/i386/chkp-builtins-2.c: Likewise. * gcc.target/i386/chkp-builtins-3.c: Likewise. * gcc.target/i386/chkp-builtins-4.c: Likewise. * gcc.target/i386/chkp-const-check-1.c: Likewise. * gcc.target/i386/chkp-const-check-2.c: Likewise. * gcc.target/i386/chkp-hidden-def.c: Likewise. * gcc.target/i386/chkp-label-address.c: Likewise. * gcc.target/i386/chkp-lifetime-1.c: Likewise. * gcc.target/i386/chkp-narrow-bounds.c: Likewise. * gcc.target/i386/chkp-pr69044.c: Likewise. * gcc.target/i386/chkp-remove-bndint-1.c: Likewise. * gcc.target/i386/chkp-remove-bndint-2.c: Likewise. * gcc.target/i386/chkp-strchr.c: Likewise. * gcc.target/i386/chkp-strlen-1.c: Likewise. * gcc.target/i386/chkp-strlen-2.c: Likewise. * gcc.target/i386/chkp-strlen-3.c: Likewise. * gcc.target/i386/chkp-strlen-4.c: Likewise. * gcc.target/i386/chkp-strlen-5.c: Likewise. * gcc.target/i386/chkp-stropt-1.c: Likewise. * gcc.target/i386/chkp-stropt-10.c: Likewise. * gcc.target/i386/chkp-stropt-11.c: Likewise. * gcc.target/i386/chkp-stropt-12.c: Likewise. * gcc.target/i386/chkp-stropt-13.c: Likewise. * gcc.target/i386/chkp-stropt-14.c: Likewise. * gcc.target/i386/chkp-stropt-15.c: Likewise. * gcc.target/i386/chkp-stropt-16.c: Likewise. * gcc.target/i386/chkp-stropt-2.c: Likewise. * gcc.target/i386/chkp-stropt-3.c: Likewise. * gcc.target/i386/chkp-stropt-4.c: Likewise. * gcc.target/i386/chkp-stropt-5.c: Likewise. * gcc.target/i386/chkp-stropt-6.c: Likewise. * gcc.target/i386/chkp-stropt-7.c: Likewise. * gcc.target/i386/chkp-stropt-8.c: Likewise. * gcc.target/i386/chkp-stropt-9.c: Likewise. * gcc.target/i386/pr63995-2.c: Likewise. * gcc.target/i386/pr64805.c: Likewise. * gcc.target/i386/pr65044.c: Likewise. * gcc.target/i386/pr65167.c: Likewise. * gcc.target/i386/pr65183.c: Likewise. * gcc.target/i386/pr65184.c: Likewise. * gcc.target/i386/thunk-retbnd.c: Likewise. From-SVN: r232612
H.J. Lu committed -
liboffloadmic/ * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_run): Pass extra NULL to GOMP_OFFLOAD_async_run. From-SVN: r232611
Ilya Verbin committed -
re PR tree-optimization/69328 (ice in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1379 with -O3) gcc/ PR tree-optimization/69328 * tree-vect-stmts.c (vect_is_simple_cond): Check compared vectors have same number of elements. (vectorizable_condition): Fix masked version recognition. gcc/testsuite/ PR tree-optimization/69328 * gcc.dg/pr69328.c: New test. Co-Authored-By: Richard Biener <rguenther@suse.de> From-SVN: r232608
Ilya Enkovich committed -
PR libstdc++/69386 * include/c_global/ccomplex: Ensure C++ language linkage. * include/c_global/cmath: Likewise. * include/c_global/cstdlib: Likewise. * include/c_global/ctgmath: Likewise. * testsuite/17_intro/headers/c++2011/linkage.cc: New. From-SVN: r232607
Jonathan Wakely committed -
exp_ch2.adb (Expand_Current_Value): Make an appropriate character literal if the entity is of a character type. * exp_ch2.adb (Expand_Current_Value): Make an appropriate character literal if the entity is of a character type. * gcc-interface/lang.opt (fsigned-char): New option. * gcc-interface/misc.c (gnat_handle_option): Accept it. (gnat_init): Adjust comment. * gcc-interface/gigi.h (finish_character_type): New prototype. (maybe_character_type): New inline function. (maybe_character_value): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Type>: For a character of CHAR_TYPE_SIZE, make a signed type if flag_signed_char. Set TYPE_ARTIFICIAL early and call finish_character_type on the type. <E_Enumeration_Subtype>: For a subtype of character with RM_Size and Esize equal to CHAR_TYPE_SIZE, make a signed type if flag_signed_char. Copy TYPE_STRING_FLAG from type to subtype. <E_Array_Type>: Deal with character index types. <E_Array_Subtype>: Likewise. * gcc-interface/trans.c (gigi): Replace unsigned_char_type_node with char_type_node throughout. (build_raise_check): Likewise. (get_type_length): Deal with character types. (Attribute_to_gnu) <Attr_Pos>: Likewise. Remove obsolete range check code. Minor tweak. <Attr_Pred>: Likewise. (Loop_Statement_to_gnu): Likewise. (Raise_Error_to_gnu): Likewise. <N_Indexed_Component>: Deal with character index types. Remove obsolete code. <N_Slice>: Likewise. <N_Type_Conversion>: Deal with character types. Minor tweak. <N_Unchecked_Type_Conversion>: Likewise. <N_In>: Likewise. <N_Op_Eq>: Likewise. (emit_index_check): Delete. * gcc-interface/utils.c (finish_character_type): New function. (gnat_signed_or_unsigned_type_for): Deal with built-in character types. * gcc-interface/utils2.c (expand_sloc): Replace unsigned_char_type_node with char_type_node. (build_call_raise): Likewise. (build_call_raise_column): Likewise. (build_call_raise_range): Likewise. From-SVN: r232604
Eric Botcazou committed -
2016-01-20 Richard Biener <rguenther@suse.de> PR tree-optimization/69345 * tree-ssa-sccvn.h (VN_INFO_RANGE_INFO): New inline function. (VN_INFO_PTR_INFO): Likewise. * tree-ssa-sccvn.c (set_ssa_val_to): Avoid clearing points-to info when it is equal between non-dominating SSA names. * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): Make sure to look at original SSA infos. From-SVN: r232603
Richard Biener committed -
From-SVN: r232602
Jeff Law committed -
* config/m68k/predicates.md (pow2_m1_operand): New predicate extracted from ... (reg_or_pow2_m1_operand): Call pow2_m1_operand. (pc_or_label_operand): New predicate. * config/m68k/m68k.md: Add new peephole2 patterns for GTU/LEU tests for small integers that are 2^n - 1. * gcc.target/m68k/pr25114.c: New test. From-SVN: r232601
Jeff Law committed -
2016-01-20 Andre Vieira <andre.simoesdiasvieira@arm.com> gcc/testsuite/ * gcc.target/arm/memset-inline-10.c: Added dg-require-effective-target arm_thumb2_ok. From-SVN: r232600
Andre Vieira committed -
From-SVN: r232599
Jonathan Wakely committed -
From-SVN: r232598
GCC Administrator committed
-
- 19 Jan, 2016 10 commits
-
-
PR middle-end/69347 * tree-ssa-threadbackwards.c (fsm_find_control_statement_thread_paths): Do not try to lookup FSM paths for SSA_NAMEs appearing in abnormal PHIs. From-SVN: r232593
Jeff Law committed -
From-SVN: r232589
Jonathan Wakely committed -
gcc/ChangeLog: 2016-01-20 Kugan Vivekanandarajah <kuganv@linaro.org> * doc/lto.texi: Remove text that says only Gold has linker plugin support. From-SVN: r232587
Kugan Vivekanandarajah committed -
PR libstdc++/14608 PR libstdc++/60401 * include/Makefile.am: Use c_compatibility math.h and stdlib.h for --enable-cheaders=c_global configs. * include/Makefile.in: Regenerate. * include/c_compatibility/math.h: Remove obsolete _GLIBCXX_NAMESPACE_C test and allow inclusion from C files. * include/c_compatibility/stdlib.h: Likewise. Support freestanding. (at_quick_exit, quick_exit): Add using directives. * include/c_global/cmath: Use #include_next for math.h. * include/c_global/cstdlib: Use #include_next for stdlib.h. * testsuite/26_numerics/headers/cmath/14608.cc: New. * testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc: Remove xfail for most targets. * testsuite/26_numerics/headers/cstdlib/60401.cc: New. From-SVN: r232586
Jonathan Wakely committed -
* dwarf2out.c (need_endianity_attribute_p): New inline predicate. (base_type_die): Add REVERSE parameter and attach DW_AT_endianity to the DIE accordingly. (modified_type_die): Add REVERSE parameter and pass it recursively, as well as to base_type_die. Adjust presence check accordingly. (base_type_for_mode): Adjust call to modified_type_die. (add_type_attribute): Add REVERSE parameter and pass it to modified_type_die. (generic_parameter_die): Adjust call to add_type_attribute. (add_scalar_info): Likewise. (add_subscript_info): Likewise. (gen_array_type_die): Likewise. (gen_descr_array_type_die): Likewise. (gen_entry_point_die): Likewise. (gen_enumeration_type_die): Likewise. (gen_formal_parameter_die): Likewise. (gen_subprogram_die): Likewise. (gen_variable_die ): Likewise. (gen_const_die): Likewise. (gen_field_die): Likewise. (gen_pointer_type_die): Likewise. (gen_reference_type_die): Likewise. (gen_ptr_to_mbr_type_die): Likewise. (gen_inheritance_die): Likewise. (gen_subroutine_type_die): Likewise. (gen_typedef_die): Likewise. (force_type_die): Adjust call to modified_type_die. From-SVN: r232585
Eric Botcazou committed -
2016-01-19 Sandra Loosemore <sandra@codesourcery.com> gcc/ * doc/standards.texi: Copy-editing for grammar, markup, and sentence flow throughout the file. Fix broken link to Objective-C 2.0 documentation. * doc/invoke.texi: More copy-editing; fix numerous typos and spelling errors. From-SVN: r232583
Sandra Loosemore committed -
There were a couple of ways that libgccjit could fail to unlink all of its tempfiles, leading to /tmp/libgccjit-* tempdirs lingering after the build: - dumpfiles requested by gcc_jit_context_enable_dump - ahead-of-time compilation artifacts which lingered in the tempdir after they've been copied up to the output_path. This was only the case for GCC_JIT_OUTPUT_KIND_OBJECT_FILE and GCC_JIT_OUTPUT_KIND_EXECUTABLE. The following patch fixes these by introducing a vec of additional cleanups to be performed by gcc:jit::tempdir's dtor. In addition, if a gcc_jit_result * is leaked and GCC_JIT_BOOL_OPTION_DEBUGINFO is enabled, the tempdir will also not be cleaned up. This was the case for tut04-toyvm/toyvm.cc which the patch fixes by introducing a wrapper around gcc_jit_result *. Doing this required some updates to the corresponding docs. gcc/jit/ChangeLog: PR jit/69144 * jit-playback.c (gcc::jit::playback::compile_to_file::postprocess): Potentially add the temporary artifact to the tempdir's list of tempfiles needing additional cleanup. (gcc::jit::playback::context::extract_any_requested_dumps): Likewise for the dumpfile. * jit-tempdir.c (gcc::jit::tempdir::~tempdir): Clean up additional tempfiles. * jit-tempdir.h (gcc::jit::tempdir::add_temp_file): New method. (gcc::jit::tempdir::m_tempfiles): New field. * docs/cp/intro/tutorial04.rst: Update for changes to toyvm.cc. * docs/examples/tut04-toyvm/toyvm.cc (class compilation_result): New. (toyvm_function::compile): Change return type from function ptr to a compilation_result. (toyvm_function::get_function_name): New accessor. (toyvm_function::m_funcname): New field. (get_function_name): Convert to... (toyvm_function::make_function_name): ...this new method. (toyvm_function::parse): Call make_function_name. (toyvm_function::compile): Convert return type from function ptr to a compilation_result. Use get_function_name. (compilation_state::compile): Convert return type from gcc_jit_result * to a compilation_result. (test_script): Update for above changes, extracting the code from the compilation_result. (main): Likewise. * docs/_build/texinfo/libgccjit.texi: Regenerate. From-SVN: r232582
David Malcolm committed -
* local_type_traits: Remove file. * libitm_i.h: Don't include it anymore. (sized_integral): Remove. From-SVN: r232581
Torvald Riegel committed -
PR c++/59759 * pt.c (convert_template_argument): Handle VAR_DECL properly. From-SVN: r232580
Jason Merrill committed -
2016-01-19 Wilco Dijkstra <wdijkstr@arm.com> * ccmp.c (expand_ccmp_expr_1): Avoid spurious unused warnings. From-SVN: r232576
Wilco Dijkstra committed
-