You need to sign in or sign up before continuing.
- 05 Oct, 2007 10 commits
-
-
matz authored
PR middle-end/33667 * lower-subreg.c (decompose_multiword_subregs): Use validate_unshare_change(). testsuite/ * gcc.dg/pr33667.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129038 138bc75d-0d04-0410-961f-82ee72b054a4
-
bergner authored
(conflicts): Change to HOST_WIDEST_FAST_INT. (allocnos_live): Redefine variable as a sparseset. (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE): Delete macros. (allocno_row_words): Removed global variable. (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables. (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines. (conflict_p, set_conflict_p, set_conflicts_p): New functions. (record_one_conflict_between_regnos): Cache allocno values and reuse. Use set_conflict_p. (record_one_conflict): Update uses of allocnos_live to use the sparseset routines. Use set_conflicts_p. (mark_reg_store): Likewise. (set_reg_in_live): Likewise. (global_conflicts): Update uses of allocnos_live. Use the new adjacency list to visit an allocno's neighbors rather than iterating over all possible allocnos. Call set_conflicts_p to setup conflicts rather than adding them manually. * global.c: Comments updated. (CONFLICTP): Delete define. (regno_compare): New function. Add prototype. (global_alloc): Sort the allocno to regno mapping according to which basic blocks the regnos are referenced in. Modify the conflict bit matrix to a compressed triangular bitmatrix. Only allocate the conflict bit matrix and adjacency lists if we are actually going to allocate something. (expand_preferences): Use conflict_p. Update uses of allocnos_live. (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an allocno's neighbors rather than iterating over all possible allocnos. (mirror_conflicts): Removed function. (dump_conflicts): Iterate over regnos rather than allocnos so that all dump output will be sorted by regno number. Use the FOR_EACH_CONFLICT macro. * ra.h: Comments updated. (conflicts): Update prototype to HOST_WIDEST_FAST_INT. (partial_bitnum, max_bitnum, adjacency, adjacency_pool): Add prototypes. (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines. (adjacency_list_d, adjacency_iterator_d): New types. (add_neighbor, adjacency_iter_init, adjacency_iter_done, adjacency_iter_next, regno_basic_block): New static inline functions. (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define. (conflict_p): Add function prototype. * sparseset.h, sparseset.c: New files. * Makefile.in (OBJS-common): Add sparseset.o. (sparseset.o): New rule. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129037 138bc75d-0d04-0410-961f-82ee72b054a4
-
rguenth authored
PR middle-end/33666 * fold-const.c (fold_unary): Do not fold (long long)(int)ptr to (long long)ptr. * gcc.dg/pr33666.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129036 138bc75d-0d04-0410-961f-82ee72b054a4
-
matz authored
PR inline-asm/33600 * function.c (match_asm_constraints_1): Check for input being used in the outputs. testsuite/ * gcc.target/i386/pr33600.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129035 138bc75d-0d04-0410-961f-82ee72b054a4
-
fxcoudert authored
gfc_get_data): Move to decl.c. (global_used): Rename into gfc_global_used. (gfc_formalize_init_value, gfc_get_section_index, gfc_assign_data_value, gfc_assign_data_value_range, gfc_advance_section): Move to data.h. (gfc_set_in_match_data): Remove. * decl.c (gfc_get_data_variable, gfc_get_data_value, gfc_get_data): Move here. (gfc_set_in_match_data): Rename into set_in_match_data. (gfc_match_data): Likewise. (add_global_entry): Rename global_used into gfc_global_used. * data.c: Include data.h. * trans.h (gfc_todo_error): Remove. * trans-array.c (gfc_trans_array_constructor, gfc_conv_ss_startstride, gfc_conv_loop_setup): Change gfc_todo_error into assertions. * resolve.c (resolve_global_procedure): Rename global_used into gfc_global_used. * parse.c (gfc_global_used, parse_module, add_global_procedure, add_global_program): Likewise. * trans-intrinsic.c (gfc_walk_intrinsic_function): Rename global_used into gfc_global_used. * Make-lang.in: Add dependencies on fortran/data.h. * data.h: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129034 138bc75d-0d04-0410-961f-82ee72b054a4
-
rguenth authored
* tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF. * g++.dg/tree-ssa/obj-type-ref.C: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129033 138bc75d-0d04-0410-961f-82ee72b054a4
-
rsandifo authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129032 138bc75d-0d04-0410-961f-82ee72b054a4
-
rsandifo authored
PR target/33635 * config/mips/mips.c (mips_register_move_cost): Rewrite to use subset checks. Make the cost of FPR -> FPR moves depend on mips_mode_ok_for_mov_fmt_p. gcc/testsuite/ PR target/33635 * gcc.target/mips/pr33635-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129031 138bc75d-0d04-0410-961f-82ee72b054a4
-
jason authored
* gcc/gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait, __gthread_cond_wait_recursive): Add to extend interface for POSIX conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify support of conditional variables. * gcc/gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait, __gthread_cond_wait_recursive): Add to extend interface for POSIX conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify support of conditional variables. * gcc/gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait, __gthread_cond_wait_recursive): Add to extend interface for POSIX conditional variables. * gcc/gthr.h: Update comments to document new interface. * libstdc++-v3/include/ext/concurrent.h (class __mutex, class __recursive_mutex): Add new method gthread_mutex to access inner gthread mutex. [__GTHREAD_HAS_COND] (class __concurrence_broadcast_error, class __concurrence_wait_error, class __cond): Add. * guard.cc (recursive_push, recursive_pop): Delete. (init_in_progress_flag, set_init_in_progress_flag): Add to replace recursive_push and recursive_pop. (throw_recursive_init_exception): Add. (acquire, __cxa_guard_acquire, __cxa_guard_abort and __cxa_guard_release): [__GTHREAD_HAS_COND] Use a conditional for synchronization of static variable initialization. The global mutex is only held briefly when guards are accessed. [!__GTHREAD_HAS_COND] Fall back to the old code, which deadlocks. * testsuite/thread/guard.cc: Add new test. It deadlocks with the old locking code in libstdc++-v3/libsup++/guard.cc. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129030 138bc75d-0d04-0410-961f-82ee72b054a4
-
gccadmin authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129028 138bc75d-0d04-0410-961f-82ee72b054a4
-
- 04 Oct, 2007 25 commits
-
-
geoffk authored
DECL_IGNORED_P. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129024 138bc75d-0d04-0410-961f-82ee72b054a4
-
aesok authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129023 138bc75d-0d04-0410-961f-82ee72b054a4
-
tkoenig authored
PR fortran/33539 * resolve.c: Only warn if the string length is less than zero. 2007-10-04 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/33539 * zero_length_2.f90: Omit warning for zero-length string. * repeat_2.f90: Likewise. * repeat_4.f90: Likewise. * char_length_2.f90: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129022 138bc75d-0d04-0410-961f-82ee72b054a4
-
spark authored
* MAINTAINERS (Register allocation reviewer): Add myself. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129021 138bc75d-0d04-0410-961f-82ee72b054a4
-
jason authored
* call.c (initialize_reference): Handle local static reference temps properly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129020 138bc75d-0d04-0410-961f-82ee72b054a4
-
jvdelisle authored
PR libfortran/33253 * gfortran.dg/namelist_39.f90: Revise to use long names. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129018 138bc75d-0d04-0410-961f-82ee72b054a4
-
jvdelisle authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129017 138bc75d-0d04-0410-961f-82ee72b054a4
-
jvdelisle authored
PR libfortran/33253 * io/list_read.c (read_character): Use line_buffer to scan ahead for object name or string when no delimiter is found. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129016 138bc75d-0d04-0410-961f-82ee72b054a4
-
hjl authored
PR fortran/33646 * gfortran.dg/pr33646.f90: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129015 138bc75d-0d04-0410-961f-82ee72b054a4
-
fxcoudert authored
* runtime/environ.c (init_mem, show_mem, init_round, show_round, init_precision, show_precision, init_signal, show_signal): Remove. (variable_table): Remove GFORTRAN_MEM_INIT, GFORTRAN_MEM_CHECK, GFORTRAN_SIGHUP, GFORTRAN_SIGINT, GFORTRAN_FPU_ROUND and GFORTRAN_FPU_PRECISION. * libgfortran.h (options_t): Remove mem_check, fpu_round, fpu_precision, sighup, sigint, allocate_init_flag and allocate_init_value. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129014 138bc75d-0d04-0410-961f-82ee72b054a4
-
paolo authored
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Adjust dg-error line number. * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Likewise. * testsuite/23_containers/vector/requirements/dr438/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/vector/requirements/dr438/ constructor_2_neg.cc: Likewise. * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Adjust dg-error line number. * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Likewise. * testsuite/23_containers/deque/requirements/dr438/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/deque/requirements/dr438/ constructor_2_neg.cc: Likewise. * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Adjust dg-error line number. * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Likewise. * testsuite/23_containers/list/requirements/dr438/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/list/requirements/dr438/ constructor_2_neg.cc: Likewise. 2007-10-04 Chris Jefferson <chris@bubblescope.net> Paolo Carlini <pcarlini@suse.de> * include/bits/stl_list.h (list<>::list(list&&), list<>::operator=(list&&)): Add. (list<>::swap): Adjust. (swap(list&&, list& __y), swap(list&, list&& __y)): Add. * include/bits/stl_vector.h (vector<>::vector(vector&&), vector<>::operator=(vector&&)): Add. (vector<>::swap): Adjust. (swap(vector&&, vector& __y), swap(vector&, vector&& __y)): Add. * include/bits/stl_bvector.h (vector<>::vector(vector&&), vector<>::operator=(vector&&)): Add. (vector<>::swap): Adjust. * include/bits/stl_deque.h (deque<>::deque(deque&&), deque<>::operator=(deque&&)): Add. (deque<>::swap): Adjust. (swap(deque&&, deque& __y), swap(deque&, deque&& __y)): Add. * include/bits/stl_set.h (set<>::set(set&&), set<>::operator=(set&&)): Add. (set<>::swap): Adjust. (swap(set&&, set& __y), swap(set&, set&& __y)): Add. * include/bits/stl_map.h (map<>::map(map&&), map<>::operator=(map&&)): Add. (map<>::swap): Adjust. (swap(map&&, map& __y), swap(map&, map&& __y)): Add. * include/bits/stl_multiset.h (multiset<>::multiset(multiset&&), multiset<>::operator=(multiset&&)): Add. (smultiet<>::swap): Adjust. (swap(multiset&&, multiset& __y), swap(multiset&, multiset&& __y)): Add. * include/bits/stl_multimap.h (multimap<>::multimap(multimap&&), multimap<>::operator=(multimap&&)): Add. (multimap<>::swap): Adjust. (swap(multimap&&, multimap& __y), swap(multimap&, multimap&& __y)): Add. 2007-10-04 Paolo Carlini <pcarlini@suse.de> Avoid copying some allocator objects. * include/bits/stl_list.h (_List_impl::_List_impl(), _List_base::_List_base(), list<>::list()): Add. * include/bits/stl_vector.h (_Vector_impl::_Vector_impl(), _Vector_base::_Vector_base(), vector<>::vector()): Add. * include/bits/stl_bvector.h (_Bvector_impl::_Bvector_impl(), _Bvector_base::_Bvector_base(), vector<>::vector()): Add. * include/bits/stl_deque.h (_Deque_impl::_Deque_impl(), _Deque_base::_Deque_base(), deque<>::deque()): Add. * include/bits/stl_tree.h (_Rb_tree_impl<>::_Rb_tree_impl(), _Rb_tree_impl<>::_M_initialize): Add. (_Rb_tree<>::_Rb_tree(const _Compare&, const allocator_type&), _Rb_tree(const _Rb_tree&)): Adjust. * include/bits/stl_set.h (set<>::set(), set(_InputIterator, _InputIterator)): Use _M_t default constructor. * include/bits/stl_map.h (map<>::map(), set(_InputIterator, _InputIterator)): Use _M_t default constructor. * include/bits/stl_multiset.h (multiset<>::multiset(), multiset(_InputIterator, _InputIterator)): Use _M_t default constructor. * include/bits/stl_multimap.h (multimap<>::multimap(), multimap(_InputIterator, _InputIterator)): Use _M_t default constructor. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129013 138bc75d-0d04-0410-961f-82ee72b054a4
-
fxcoudert authored
* decl.c (match_char_kind): New function. (match_char_spec): Use match_char_kind. * gfortran.dg/char_type_len_2.f90: Adjust error message. * gfortran.dg/char_decl_2.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129012 138bc75d-0d04-0410-961f-82ee72b054a4
-
fxcoudert authored
* scanner.c (gfc_advance_line): Call debug_hooks->end_source_file and debug_hooks->start_source_file when appropriate, and set dbg_emitted. (gfc_define_undef_line): New function. (load_file): Don't error out on #define and #undef lines. * parse.c (next_statement): Call gfc_define_undef_line. (gfc_parse_file): Call debug_hooks->start_source_file and debug_hooks->end_source_file for the main source file if required. * gfortran.h (gfc_linebuf): Add dbg_emitted field. (gfc_define_undef_line): New prototype. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129011 138bc75d-0d04-0410-961f-82ee72b054a4
-
rguenth authored
PR middle-end/33641 * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR does not need to be of INTEGER_TYPE. (verify_gimple_2): New function split out from ... (verify_gimple_1): ... here. ICE if there was an error during verification. * gcc.c-torture/compile/pr33641.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129010 138bc75d-0d04-0410-961f-82ee72b054a4
-
hjl authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129008 138bc75d-0d04-0410-961f-82ee72b054a4
-
matz authored
* gcc.dg/pr33653.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129007 138bc75d-0d04-0410-961f-82ee72b054a4
-
matz authored
* dce.c (deletable_insn_p_1): Use volatile_refs_p(). * dse.c (scan_insn): Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129006 138bc75d-0d04-0410-961f-82ee72b054a4
-
kazu authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129005 138bc75d-0d04-0410-961f-82ee72b054a4
-
rguenth authored
PR tree-optimization/33627 * tree-gimple.h (canonicalize_cond_expr_cond): Declare. * tree-gimple.c (canonicalize_cond_expr_cond): New function, split out from ... * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here. * tree-ssa-ifcombine.c (ifcombine_iforif): Use it. * g++.dg/torture/pr33627.C: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129004 138bc75d-0d04-0410-961f-82ee72b054a4
-
jason authored
* name-lookup.c (push_namespace_with_attrs): Fold back into... (push_namespace): Here. (handle_namespace_attrs): New fn for the attr code. (leave_scope): Don't pop_visibility. * name-lookup.h (struct cp_binding_level): Remove has_visibility. * parser.c (cp_parser_namespace_definition): Call handle_namespace_attrs and pop_visibility as appropriate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129003 138bc75d-0d04-0410-961f-82ee72b054a4
-
tobi authored
fortran/ * resolve.c (resolve_operator): Always copy the type for expressions in parentheses. testsuite/ * gfortran.dg/parens_6.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129002 138bc75d-0d04-0410-961f-82ee72b054a4
-
aesok authored
commands_in_epilogues): Remove variables. (avr_file_start): Remove unneded initializations of commands_in_file, commands_in_prologues and commands_in_epilogues variables. (avr_file_end): Remove dead code. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129001 138bc75d-0d04-0410-961f-82ee72b054a4
-
pault authored
PR fortran/33542 * interface.c (check_interface1): Revert patch of 2007-10-02. 2007-10-04 Paul Thomas <pault@gcc.gnu.org> PR fortran/33542 * gfortran.dg/ambiguous_specific_1.f90: Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129000 138bc75d-0d04-0410-961f-82ee72b054a4
-
jason authored
* mangle.c (write_type) [TYPEOF_TYPE]: Just sorry. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128999 138bc75d-0d04-0410-961f-82ee72b054a4
-
gccadmin authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128997 138bc75d-0d04-0410-961f-82ee72b054a4
-
- 03 Oct, 2007 5 commits
-
-
kazu authored
MOTOROLA is to true. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128994 138bc75d-0d04-0410-961f-82ee72b054a4
-
fxcoudert authored
* trans-decl.c (build_function_decl): Set "externally_visible" attribute on the MAIN program decl. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128993 138bc75d-0d04-0410-961f-82ee72b054a4
-
jakub authored
* decl.c (duplicate_decls): Preserve linkage flags for mere redeclarations of gnu_inline definitions. * g++.dg/ext/gnu-inline-global-redecl.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128992 138bc75d-0d04-0410-961f-82ee72b054a4
-
rsandifo authored
PR target/33635 * config/mips/mips-protos.h (mips_split_64bit_move): Rename to... (mips_split_doubleword_move): ...this. * config/mips/mips.c (mips_subword): Extend to handle 64-bit words; use natural endianness for multi-format FPR values. (mips_split_64bit_move): Rename to... (mips_split_doubleword_move): ...this and extend to 64-bit words. Use move_doubleword_fpr* patterns for moves involving FPRs. (mips_save_reg): Update the call to mips_split_64bit_move. (mips_secondary_reload_class): Return NO_REGS for any reload of a nonzero constant into an FPR if the constant can be forced to memory. * config/mips/mips.md: Update the splitter calls to mips_split_64bit_move. (UNSPEC_LOAD_DF_LOW): Rename to... (UNSPEC_LOAD_LOW): ...this. (UNSPEC_LOAD_DF_HIGH): Rename to... (UNSPEC_LOAD_HIGH): ...this. (UNSPEC_STORE_DF_HIGH): Rename to... (UNSPEC_STORE_WORD): ...this. (SPLITF): New mode iterator. (HALFMODE): New mode attribute. (movtf): New expander. (*movtf_internal): New define_insn_and_split. (move_doubleword_fpr<mode>): New expander. (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace with... (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>) (mfhc1<mode>): ...these more general patterns. gcc/testsuite/ PR target/33635 * gcc.target/mips/mips.exp (setup_mips_tests): Set mips_isa_rev and mips_forced_be. (dg-mips-options): Handle -EL and -mel. Make -mfp64 imply -mhard-float and a suitable ISA. Improve handling of -mipsXrY options. * gcc.target/mips/fpr-moves-1.c: New test. * gcc.target/mips/fpr-moves-2.c: Likewise. * gcc.target/mips/fpr-moves-3.c: Likewise. * gcc.target/mips/fpr-moves-4.c: Likewise. * gcc.target/mips/fpr-moves-5.c: Likewise. * gcc.target/mips/fpr-moves-6.c: Likewise. * gcc.target/mips/mips32r2-mxhc1.c: Remove -march=mips32r2 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128991 138bc75d-0d04-0410-961f-82ee72b054a4
-
bkoz authored
Benjamin Kosnik <bkoz@redhat.com> * testsuite/20_util/pair/moveable.cc: New. Merge from libstdcxx_so_7-branch. * testsuite/23_containers/deque/capacity/moveable.cc: Same. * testsuite/23_containers/deque/cons/moveable.cc: Same. * testsuite/23_containers/deque/modifiers/moveable.cc: Same. * testsuite/23_containers/deque/moveable.cc: Same. * testsuite/23_containers/list/moveable.cc: Same. * testsuite/23_containers/map/moveable.cc: Same. * testsuite/23_containers/multimap/moveable.cc: Same. * testsuite/23_containers/multiset/moveable.cc: Same. * testsuite/23_containers/set/moveable.cc: Same. * testsuite/23_containers/vector/cons/moveable.cc: Same. * testsuite/23_containers/vector/modifiers/moveable.cc: Same. * testsuite/23_containers/vector/moveable.cc: Same. * testsuite/23_containers/vector/resize/moveable.cc: Same. * testsuite/25_algorithms/heap/moveable.cc: Same. * testsuite/25_algorithms/nth_element/moveable.cc: Same. * testsuit...
-