Compiler Reference Guide

Technical Support

On-Line Manuals

Compiler Reference Guide

Conventions and Feedback Introduction Compiler Command-line Options Command-line options -Aopt --allow_null_this, --no_allow_null_this --alternative_tokens, --no_alternative_tokens --anachronisms, --no_anachronisms --apcs=qualifer...qualifier --arm --arm_only --asm --asm_dir=directory_name --autoinline, --no_autoinline --bigend --bitband --brief_diagnostics, --no_brief_diagnostics --bss_threshold=num -c -C --c90 --c99 --code_gen, --no_code_gen --compatible=name --compile_all_input, --no_compile_all_input --cpp --cpu=list --cpu=name --create_pch=filename -Dname[(parm-list)][=def] --data_reorder, --no_data_reorder --debug, --no_debug --debug_macros, --no_debug_macros --default_definition_visibility=visibility --default_extension=ext --dep_name, --no_dep_name --depend=filename --depend_dir=directory_name --depend_format=string --depend_single_line, --no_depend_single_line --depend_system_headers, --no_depend_system_header --depend_target=target --diag_error=tag[,tag,...] --diag_remark=tag[,tag,... ] --diag_style={arm|ide|gnu} --diag_suppress=tag[,tag,...] --diag_suppress=optimizations --diag_warning=tag[,tag,...] --diag_warning=optimizations --dollar, --no_dollar --dwarf2 --dwarf3 -E --emit_frame_directives, --no_emit_frame_directive --enum_is_int --errors=filename --exceptions, --no_exceptions --exceptions_unwind, --no_exceptions_unwind --export_all_vtbl, --no_export_all_vtbl --export_defs_implicitly, --no_export_defs_implici --extended_initializers, --no_extended_initializer --feedback=filename --force_new_nothrow, --no_force_new_nothrow --forceinline --fp16_format=format --fpmode=model --fpu=list --fpu=name --friend_injection, --no_friend_injection -g --global_reg=reg_name[,reg_name,...] --guiding_decls, --no_guiding_decls --help --hide_all, --no_hide_all -Idir[,dir,...] --ignore_missing_headers --implicit_include, --no_implicit_include --implicit_include_searches, --no_implicit_include --implicit_key_function, --no_implicit_key_functio --implicit_typename, --no_implicit_typename --import_all_vtbl --info=totals --inline, --no_inline --interface_enums_are_32_bit --interleave -Jdir[,dir,...] --kandr_include -Lopt --library_interface=lib --library_type=lib --link_all_input, --no_link_all_input --list --list_dir=directory_name --list_macros --littleend --locale=lang_country --long_long --loose_implicit_cast --lower_ropi, --no_lower_ropi --lower_rwpi, --no_lower_rwpi --ltcg -M --md --message_locale=lang_country[.codepage] --min_array_alignment=opt --mm --multibyte_chars, --no_multibyte_chars --multifile, --no_multifile --multiply_latency=cycles --narrow_volatile_bitfields --nonstd_qualifier_deduction, --no_nonstd_qualifie -o filename -Onum --old_specializations, --no_old_specializations --old_style_preprocessing -Ospace -Otime --output_dir=directory_name -P --parse_templates, --no_parse_templates --pch --pch_dir=dir --pch_messages, --no_pch_messages --pch_verbose, --no_pch_verbose --pending_instantiations=n --phony_targets --pointer_alignment=num --preinclude=filename --preprocess_assembly --preprocessed --reassociate_saturation, --no_reassociate_saturat --reduce_paths, --no_reduce_paths --relaxed_ref_def, --no_relaxed_ref_def --remarks --remove_unneeded_entities, --no_remove_unneeded_e --restrict, --no_restrict --retain=option --rtti, --no_rtti --rtti_data, --no_rtti_data -S --show_cmdline --signed_bitfields, --unsigned_bitfields --signed_chars, --unsigned_chars --split_ldm --split_sections --strict, --no_strict --strict_warnings --sys_include --thumb --trigraphs, --no_trigraphs --type_traits_helpers, --no_type_traits_helpers -Uname --unaligned_access, --no_unaligned_access --use_frame_pointer --use_pch=filename --using_std, --no_using_std --version_number --vfe, --no_vfe --via=filename --visibility_inlines_hidden --vla, --no_vla --vsn -W --wchar, --no_wchar --wchar16 --wchar32 --whole_program --wrap_diagnostics, --no_wrap_diagnostics Language Extensions Compiler-specific Features C and C++ Implementation Details ARMv6 SIMD Instruction Intrinsics Via File Syntax Summary Table of GNU Language Extensions Standard C Implementation Definition Standard C++ Implementation Definition C and C++ Compiler Implementation Limits

--bss_threshold=num

--bss_threshold=num

This option controls the placement of small global ZI data items in sections. A small global ZI data item is an uninitialized data item that is eight bytes or less in size.

Show/hideSyntax

--bss_threshold=num

Where:

num

is either:

0

place small global ZI data items in ZI data sections

8

place small global ZI data items in RW data sections.

Show/hideUsage

In ARM Compiler 4.1 and later, the compiler might place small global ZI data items in RW data sections as an optimization. In RVCT 2.0.1 and earlier, small global ZI data items were placed in ZI data sections by default.

Use --bss_threshold=0 to emulate the behavior of RVCT 2.0.1 and earlier with respect to the placement of small global ZI data items in ZI data sections.

Note

Selecting the option --bss_threshold=0 instructs the compiler to place all small global ZI data items in the current compilation module in a ZI data section. To place specific variables in:

  • a ZI data section, use __attribute__((zero_init))

  • a specific ZI data section, use a combination of __attribute__((section("name"))) and __attribute__((zero_init)).

Show/hideDefault

If you do not specify a --bss_threshold option, the compiler assumes --bss_threshold=8.

Show/hideExample

int glob1;         /* ZI (.bss) in RVCT 2.0.1 and earlier */
                   /* RW (.data) in RVCT 2.1 and later */

Compiling this code with --bss_threshold=0 places glob1 in a ZI data section.

Copyright © 2007-2008, 2011 ARM. All rights reserved.ARM DUI 0376C
Non-ConfidentialID061811