Age | Commit message (Collapse) | Author | Files | Lines |
|
fortran/
PR fortran/15327
* trans-intrinsic.c (gfc_conv_intrinsic_merge): Do the right thing for
strings.
testsuite/
PR fortran/15327
* gfortran.dg/merge_char_1.f90: New test.
From-SVN: r86940
|
|
'DWORD'.
* gthr-win32.h (__gthread_recursive_mutex_t): Use 'unsigned long',
not Windows 'DWORD'.
(__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION): Correct typo.
(__GTHREAD_RECURSIVE_MUTEX_INIT_DEFAULT): Likewise.
(__gthr_win32_recursive_mutex_init_function): Add prototype for
__GTHREAD_HIDE_WIN32API case..
(__gthr_win32_recursive_mutex_lock): Likewise.
(__gthr_win32_recursive_mutex_trylock): Likewise.
(__gthr_win32_recursive_mutex_unlock): Likewise.
(__gthread_recursive_mutex_init_function); Add definition for
__GTHREAD_HIDE_WIN32API case.
(__gthread_recursive_mutex_lock): Correct call to InterlockedDecrement.
* config/i386/grthr-win32.c (__gthread_recursive_mutex_lock): Correct
call to InterlockedDecrement.
Co-Authored-By: Danny Smith <dannysmith@users.sourceforge.net>
From-SVN: r86939
|
|
* tree-tailcall.c (find_tail_calls): Also fail is statement has
volatile operands.
From-SVN: r86938
|
|
From-SVN: r86937
|
|
From-SVN: r86934
|
|
* doc/c-tree.texi: Document new operands for ARRAY_REF and
COMPONENT_REF.
From-SVN: r86932
|
|
fortran/
PR fortran/16400
PR fortran/16404
(port from g95)
* resolve.c (resolve_transfer): New function.
(resolve_code): Call resolve_transfer in case of EXEC_TRANSFER.
testsuite/
PR fortran/16404
* gfortran.dg/der_io_1.f90: XFAIL illegal testcase.
From-SVN: r86931
|
|
* Makefile.in (rtl-profile.o, value-prof.o): Add GCC_H dependency.
* common.opt (fspeculative-prefetching): New.
* flags.h (flag_speculative_prefetching_set): Declare.
* gcov-io.c (gcov_write_counter, gcov_read_counter): Allow negative
values.
* opts.c (flag_sepculative_prefetching_set): New variable.
(common_handle_option): Handle -fspeculative-prefetching.
* passes.c (rest_of_compilation): Ditto.
* profile.c (instrument_values, compute_value_histograms, branch_prob):
Use vectors instead of arrays.
* toplev.c (process_options): Handle -fspeculative-prefetching.
* rtl-profile.c: Include ggc.h.
(rtl_gen_interval_profiler, rtl_gen_pow2_profiler,
rtl_gen_one_value_profiler_no_edge_manipulation,
rtl_gen_one_value_profiler, rtl_gen_const_delta_profiler): Type of
argument changed.
* tree-profile.c (tree_gen_interval_profiler, tree_gen_pow2_profiler,
tree_gen_one_value_profiler, tree_gen_const_delta_profiler): Type of
argument changed.
* value-prof.c: Include ggc.h.
(NOPREFETCH_RANGE_MIN, NOPREFETCH_RANGE_MAX): New
macros.
(insn_prefetch_values_to_profile, find_mem_reference_1,
find_mem_reference_2, find_mem_reference, gen_speculative_prefetch,
speculative_prefetching_transform): New.
(value_profile_transformations): Call speculative_prefetching_transform.
(insn_values_to_profile): Call insn_prefetch_values_to_profile.
(insn_divmod_values_to_profile, rtl_find_values_to_profile,
tree_find_values_to_profile, find_values to profile): Use vectors
instead of arrays.
(free_profiled_values): Removed.
* value-prof.h (struct histogram_value): Renamed to
struct histogram_value_t.
(histogram_value, histogram_values): New types.
(find_values_to_profile): Declaration changed.
(free_profiled_values): Removed.
(struct profile_hooks): Type of argument of the hooks changed to
histogram_value.
* doc/invoke.texi (-fspeculative-prefetching): Document.
From-SVN: r86930
|
|
cfgrtl.c:146)
PR rtl-optimization/16408
* gcse.c (replace_store_insn): Fix LIBCALL/RETVAL notes.
From-SVN: r86928
|
|
PR c/15224
* gcc.c-torture/compile/20040901-1.c: New test, from PR.
From-SVN: r86927
|
|
PR c/15224
* c-common.c (handle_mode_attribute): Handle ENUMERAL_TYPE.
* c-decl.c (finish_enum): Check for user-specified precision too small.
From-SVN: r86926
|
|
* config/ns32k/ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove.
(TRAMPOLINE_TEMPLATE): Merge code from __trampoline inline.
From-SVN: r86922
|
|
From-SVN: r86921
|
|
* config/darwin.c (machopic_symbol_defined_p): In addition to
being SYMBOL_REF_LOCAL_P, a symbol must also be
! SYMBOL_REF_EXTERNAL_P, as only those are _always_ locally
defined in this output file, or translation unit in the case
of IMA not being used.
(machopic_output_indirection): SYMBOL_REF_LOCAL_P symbols
never need .indirect_symbol when indirecting.
From-SVN: r86915
|
|
From-SVN: r86914
|
|
From-SVN: r86913
|
|
FIX_{CEIL,TRUNC,FLOOR,ROUND}_EXPR.
* fold-const.c (operand_equal_p): Require equal sign also for
FIX_{CEIL,TRUNC,FLOOR,ROUND}_EXPR.
* gcc.c-torture/execute/20040831-1.c: New test.
From-SVN: r86906
|
|
configargs.h.
* config.gcc (--with-cpu on ARM): Preserve the canonical cpu name
for use in configargs.h. Put the cname in a separate variable. Use
that to set target_cpu_default2.
From-SVN: r86903
|
|
From-SVN: r86887
|
|
12 bytes of instructions, 4 byte for the constant, 2 byte for aligning the
constant.
Co-Authored-By: Nick Clifton <nickc@redhat.com>
From-SVN: r86886
|
|
* arm/arm-cores.def (ARM_CORE): Add new field for the real name of the
CPU.
(arm7tdmi-s): New CPU name.
* arm/arm.c (ARM_CORE): Update for new format.
* arm/arm.h (ARM_CORE): Likewise.
* arm/gentune.sh: Update for extra field.
* config.gcc: Likewise.
* arm/arm-tune.md: Regenerate.
* doc/invoke.texi: Document the real processor names for ARM cpus.
From-SVN: r86884
|
|
2004-08-31 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* misc.c (gnat_print_type): Use TYPE_RM_SIZE_NUM.
* trans.c (struct stmt_group): Delete field GLOBAL.
(gnat_init_stmt_group): Do not initialize it.
(call_to_gnu): Use save_expr, not protect_multiple_eval.
(Exception_Handler_to_gnu_sjlj): Call build_int_cst, not build_int_2
(gnat_to_gnu, case N_Character_Literal, N_String_Literal): Likewise.
(gnat_to_gnu, case N_Compilation_Unit): Do not set GLOBAL in stmt group.
(start_stmt_group): Likewise.
(add_stmt, add_decl_expr): Rework handling of global DECL_EXPRs.
* utils2.c (ggc.h): Include.
(build_call_raise): Call build_int_cst, not build_int_2.
* utils.c (gnat_init_decl_processing): Fix arg to
build_common_tree_nodes.
(create_subprog_type): Do not use SET_TYPE_CI_CO_LIST.
(gnat_define_builtin): Set built_in_decls.
(init_gigi_decls): Call build_int_cst, not build_int_2.
* ada-tree.h (struct lang_decl, struct lang_type): Field is type tree.
(GET_TYPE_LANG_SPECIFIC, SET_TYPE_LANG_SPECIFIC): New macros.
(GET_DECL_LANG_SPECIFIC, SET_DECL_LANG_SPECIFIC): Likewise.
(TYPE_CI_CO_LIST, SET_TYPE_CI_CO_LIST, TYPE_MODULE,
SET_TYPE_MODULE): Use them.
(TYPE_INDEX_TYPE, SET_TYPE_INDEX_TYPE, TYPE_DIGITS_VALUE): Likewise.
(SET_TYPE_DIGITS_VALUE, TYPE_UNCONSTRAINED_ARRAY): Likewise.
(SET_TYPE_UNCONSTRAINED_ARRAY, TYPE_ADA_SIZE,
SET_TYPE_ADA_SIZE): Likewise.
(TYPE_ACTUAL_BOUNDS, SET_TYPE_ACTUAL_BOUNDS): Likewise.
(DECL_CONST_CORRESPONDING_VAR,
SET_DECL_CONST_CORRESPONDING_VAR): Likewise.
(DECL_ORIGINAL_FIELD, SET_DECL_ORIGINAL_FIELD): Likewise.
(TYPE_RM_SIZE_INT, TYPE_RM_SIZE_ENUM, SET_TYPE_RM_SIZE_ENUM): Deleted.
(TYPE_RM_SIZE_NUM): New macro.
(TYPE_RM_SIZE): Modified to use above.
* cuintp.c: (build_cst_from_int): New function.
(UI_To_gnu): Use it.
* decl.c (gnat_to_gnu_entity): Use TYPE_RM_SIZE_NUM.
(make_type_from_size): Avoid changing TYPE_UNSIGNED of a type.
(gnat_substitute_in_type, case ARRAY_TYPE): If old had a
MIN_EXPR for the size, copy it into new.
2004-08-31 Robert Dewar <dewar@gnat.com>
* exp_ch6.adb (Expand_Call): Properly handle validity checks for
packed indexed component where array is an IN OUT formal. This
generated garbage code previously.
* gnat_ugn.texi: Document -fverbose-asm
* gnat-style.texi: Minor updates (note that boolean constants and
variables are joined with AND/OR rather than short circuit forms).
2004-08-31 Ed Schonberg <schonberg@gnat.com>
* exp_util.adb (Safe_Unchecked_Type_Conversion): Conversion is safe if
it is an upward conversion of an untagged type with no representation
change.
2004-08-31 Thomas Quinot <quinot@act-europe.fr>
* rtsfind.ads: Move RCI_Subp_Info and RCI_Subp_Info_Array to
System.Partition_Interface.
* checks.adb (Apply_Access_Checks): Do not generate checks when
expander is not active (but check for unset reference to prefix of
dereference).
* sem_prag.adb (Analyze_Pragma, case Pragma_Debug): Uniformly rewrite
pragma Debug as an if statement with a constant condition, for
consistent treatment of entity references contained within the
enclosed procedure call.
2004-08-31 Vincent Celier <celier@gnat.com>
* bindgen.adb: (Set_EA_Last): New procedure
(Gen_Exception_Table_Ada, Gen_Exception_Table_C): Use new procedure
Set_EA_Last.
(Gen_Adafinal_Ada): If no finalization, adafinal does nothing
(Gen_Output_File_Ada): Always call Gen_Adafinal_Ada, so that SAL can be
linked without errors.
(Gen_Exception_Table_Ada): Correct bugs when generating code for arrays
ST and EA.
(Gen_Exception_Table_C): Correct same bugs
* vms_data.ads: Add new qualifier /VERBOSE_ASM to GCC_Switches
* g-os_lib.adb (Normalize_Pathname.Get_Directory): When Dir is empty,
on Windows, make sure that the drive letter is in upper case.
* g-os_lib.ads (Normalize_Pathname): Add a comment to indicate that on
Windows, when the drive letter is added and Case_Sensitive is True, the
drive letter is forced to upper case.
* mlib-tgt-irix.adb (Build_Dynamic_Library): Transfer all -lxxx options
to Options_2 for the call to MLib.Utl.Gcc.
* bld.adb (Put_Include_Project): Use '/', not '\' on Windows as
directory separator when defining BASE_DIR.
2004-08-19 Pascal Obry <obry@gnat.com>
* gprcmd.adb (Extend): Do not output trailing directory separator. This
is not needed and it confuses Windows GNU/make which does not report
directory terminated by a slash as a directory.
(gprcmd): Idem for "pwd" internal command.
* Makefile.generic: Use __GPRCOLON__ instead of pipe character in
target names rewrite to fix regressions with recent version of
GNU/make. Starting with GNU/make 3.80 the pipe character was not
handled properly anymore.
From-SVN: r86883
|
|
(floatdidf): New functions.
* arm/ieee754-sf.S (aeabi_ul2f, aeabi_l2f, floatundisf)
(floatdisf): New functions.
* t-arm-elf: Use them.
From-SVN: r86882
|
|
* Make-lang.in (EXTRA_GNATBIND_OBJS): Revert last change.
* raise.c [!IN_RTS]: Undef abort.
From-SVN: r86880
|
|
[gcc/ChangeLog]
2004-09-01 Ziemowit Laski <zlaski@apple.com>
* c-common.h (lookup_interface): Remove prototype.
(is_class_name): Rename to objc_is_class_name.
(lookup_objc_ivar): Rename to objc_lookup_ivar.
(get_current_scope): Rename to objc_get_current_scope.
* c-decl.c (get_current_scope): Rename to objc_get_current_scope.
* c-parse.in (parmlist_or_identifiers_1): Get rid of unused variable.
(yylexname): Call objc_is_class_name() instead of is_class_name().
* c-typeck.c (build_external_ref): Call objc_lookup_ivar()
instead of lookup_objc_ivar().
* stub-objc.c (lookup_interface): Remove stub.
(is_class_name): Rename to objc_is_class_name.
(lookup_objc_ivar): Rename to objc_lookup_ivar.
[gcc/objc/ChangeLog]
2004-09-01 Ziemowit Laski <zlaski@apple.com>
* objc-act.c (lookup_interface): Make function 'static' and add a
local prototype.
(objc_check_decl, get_class_reference, objc_declare_alias,
objc_declare_class, objc_is_object_ptr): Call objc_is_class_name()
instead of is_class_name().
(get_super_receiver, objc_clear_super_receiver): Call
objc_get_current_scope() instead of get_current_scope().
(is_class_name): Rename to objc_is_class_name.
(lookup_objc_ivar): Rename to objc_lookup_ivar.
From-SVN: r86879
|
|
2004-09-01 David Billinghurst <David.Billinghurst@riotinto.com>
PR fortran/16579
* gfortran.dg/g77/20010610.f: Now passes.
Copy from g77.f-torture/execute. Add dg-run directive.
* gfortran.dg/g77/README: Update
From-SVN: r86876
|
|
* config.gcc (arm*-*-symbianelf*): Do not include t-bpabi.
* config/arm/lib1funcs.asm: Do not include supplemental .S files
when compiling for Symbian.
* config/arm/symbian.h (RENAME_LIBRARY): New macro.
(TARGET_OS_CPP_BUILTINS): Likewise.
* config/arm/t-symbian (LIB1ASMFUNCS): Define.
From-SVN: r86875
|
|
* config.gcc (arm*-*-symbianelf*): Do not include t-bpabi.
* config/arm/lib1funcs.asm: Do not include supplemental .S files
when compiling for Symbian.
* config/arm/symbian.h (RENAME_LIBRARY): New macro.
(TARGET_OS_CPP_BUILTINS): Likewise.
* config/arm/t-symbian (LIB1ASMFUNCS): Define.
[[Split portion of a mixed commit.]]
From-SVN: r86874.2
|
|
From-SVN: r86872
|
|
2004-08-31 Andrew Pinski <pinskia@physics.uc.edu>
* gcc.dg/rs6000-power2-1.c (t1, t2, t3, t4): Add volatile.
* gcc.dg/rs6000-power2-2.c: Fix the scan-assembly for the store.
(t1, t2, t3, t4): Add volatile.
From-SVN: r86871
|
|
From-SVN: r86869
|
|
From-SVN: r86868
|
|
* target-def.h (TARGET_CXX): Add TARGET_CXX_EXPORT_CLASS_DATA.
* target.h (cxx): Add export_class_data.
* config/arm/arm.c (arm_cxx_export_class_data): New function.
(TARGET_CXX_EXPORT_CLASS_DATA): Use it.
* testsuite/g++.dg/ext/visibility/arm1.C: New test.
* cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): New macro.
* class.c (build_ctor_vtbl_group): Set DECL_CONSTRUCTION_VTABLE_P.
* decl2.c (determine_visibility): Honor
TARGET_CXX_EXPORT_CLASS_DATA.
* g++.dg/ext/visibility/arm1.C: New test.
From-SVN: r86867
|
|
* gcc.dg/funcdef-storage-1.c: Add dg-options to suppress
-pedantic-errors.
From-SVN: r86862
|
|
From-SVN: r86860
|
|
* config/sh/sh.c (output_branch): Check the insn length possibly
in the delayed slot.
From-SVN: r86858
|
|
From-SVN: r86856
|
|
* runtime/error.c (generate_error): Set both iostat and
library_return.
testsuite/
* gfortran.dg/eof_2.f90: New test.
From-SVN: r86852
|
|
* tree-pretty-print.c (dump_generic_node, case CONVERT_EXPR): Add
blank after ')'.
(op_symbol, case *_{DIV,MOD}_EXPR): Say what rounding is being used.
From-SVN: r86851
|
|
From-SVN: r86850
|
|
* c-common.c (c_alignof_expr): Use DECL_ALIGN_UNIT and TYPE_ALIGN_UNIT.
(c_sizeof_of_alignof_type): Likewise.
* expr.c (array_ref_element_size): Likewise.
(highest_pow2_factor_for_target): Likewise.
* gimplify.c (canonicalize_addr_expr): Likewise.
(gimplify_compound_lval): Likewise.
* stor-layout.c (finalize_record_size, finalize_type_size): Likewise.
* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
* varasm.c (assemble_variable): Likewise.
(output_constant_def_contents): Alignments are unsigned.
From-SVN: r86848
|
|
* tree-cfg.c (cfg_remove_useless_stmts_bb): Also invalidate if VAL
gets modified.
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r86847
|
|
fortran/
PR fortran/16579
* trans-types.c (gfc_init_types): Make gfc_character1_type_node an
unsigned char.
testsuite/
PR fortran/16579
* gfortran.fortran-torture/execute/intrinsic_i_char.f90: New test.
From-SVN: r86846
|
|
PR libfortran/16805
* io/list_read.c (next_char): Don't signal EOF for internal files.
* io/unix.c (mem_alloc_r_at): Don't return NULL for incomplete reads.
testsuite/
2004-08-31 Bud Davis <bdavis9659@comcast.net>
* gfortran.dg/list_read_2.f90: New test.
From-SVN: r86844
|
|
* hooks.c (hook_bool_void_true): New function.
* hooks.h (hook_bool_void_true): Declare.
* target-def.h (TARGET_CXX): Add
TARGET_CXX_KEY_METHOD_MAY_BE_INLINE.
* target.h (struct cxx): Add key_method_may_be_inline.
* config/arm/arm.c (arm_cxx_key_method_may_be_inline): New
function.
(TARGET_CXX_KEY_METHOD_MAY_BE_INLINE): New macro.
* config/arm/bpabi.h: Use __THUMB_INTERWORK__ instead of
__THUMB_INTERWORK.
* class.c (key_method): Rename to ...
(determine_key_method): ... this.
(finish_struct_1): Adjust accordingly.
* cp-tree.h (key_method): Declare.
* decl2.c (maybe_emit_vtables): Determine the key method here if
it has not already been done.
* g++.dg/abi/key1.C: New test.
From-SVN: r86843
|
|
PR target/15417
* config/avr/avr.c (avr_hard_regno_mode_ok): Enable usage of
frame pointer register only in Pmode while reload in progress.
From-SVN: r86842
|
|
PR target/15334
* config/m68hc11/m68hc11.c (m68hc11_override_options): Disable -fweb
because it breaks the 32-bit shift patterns that rely on a match_dup.
From-SVN: r86840
|
|
From-SVN: r86839
|
|
2004-08-31 Ziemowit Laski <zlaski@apple.com>
* Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-objcp-common.o.
(cp/cp-lang.o): Depend on debug.h, gtype-cp.h and cp/cp-objcp-common.h.
(cp/cp-decl.c): Do not depend on gtype-cp.h.
(cp/cp-objcp-common.o): New target.
* cp-lang.c: Include debug.h, cp-objcp-common.h and gtype-cp.h.
(cxx_get_alias_set, cxx_warn_unused_global_decl, cp_expr_size,
cp_tree_size, cp_var_mod_type_p, cxx_initialize_diagnostics): Move
prototypes and definitions to cp-objcp-common.h and cp-objcp-common.c,
respectively.
(LANG_HOOKS_TREE_SIZE, LANG_HOOKS_FINISH,
LANG_HOOKS_CLEAR_BINDING_STACK, LANG_HOOKS_INIT_OPTIONS,
LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION,
LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT,
LANG_HOOKS_POST_OPTIONS, LANG_HOOKS_GET_ALIAS_SET,
LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_EXPAND_EXPR,
LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_PARSE_FILE,
LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, LANG_HOOKS_TRUTHVALUE_CONVERSION,
LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, LANG_HOOKS_MARK_ADDRESSABLE,
LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_PRINT_ERROR_FUNCTION,
LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, LANG_HOOKS_WRITE_GLOBALS,
LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
LANG_HOOKS_ATTRIBUTE_TABLE, LANG_HOOKS_TREE_INLINING_WALK_SUBTREES,
LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P,
LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P,
LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN,
LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN, LANG_HOOKS_EXPR_SIZE,
LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR,
LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_MAKE_TYPE,
LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE,
LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE, LANG_HOOKS_INCOMPLETE_TYPE_ERROR,
LANG_HOOKS_TYPE_PROMOTES_TO, LANG_HOOKS_REGISTER_BUILTIN_TYPE,
LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_FOLD_OBJ_TYPE_REF): Move
hooks to cp-objcp-common.h.
(finish_file): New function.
* cp-objcp-common.c: New file.
* cp-objcp-common.h: New file.
* cp-tree.h (cp_finish_file): New prototype.
* decl.c: Do not include gtype-cp.h.
* decl2.c (finish_file): Rename to cp_finish_file.
From-SVN: r86837
|
|
compilation, instead of once per symbol.
* config/darwin.c (darwin_make_decl_one_only): Allocate section
names once per compilation, instead of once per symbol.
From-SVN: r86836
|