GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | scoped_attribute_specs |
struct | attr_access |
struct | rdwr_access_hash |
Typedefs | |
typedef hash_map< rdwr_access_hash, attr_access > | rdwr_map |
typedef hash_map<rdwr_access_hash, attr_access> rdwr_map |
If VALUE is true, return the subset of ATTRS that affect type identity, otherwise return the subset of ATTRS that don't affect type identity.
References bool, and remove_attributes_matching().
Return true if the ATTRS chain contains at least one attribute which is not ignored.
References attribute_ignored_p(), and TREE_CHAIN.
Subroutine of set_method_tm_attributes. Apply TM attribute ATTR to the method FNDECL.
References decl_attributes(), NULL, tree_cons(), and TREE_TYPE.
Referenced by set_call_expr_flags().
|
extern |
Like above, but takes an attribute_spec AS, which must be nonnull.
Return true if the attribute ATTR should not be warned about.
References attr_namespace_ignored_p(), cxx11_attribute_p(), get_attribute_namespace(), lookup_attribute_spec(), NULL, and TREE_PURPOSE.
Referenced by any_nonignored_attribute_p(), and decl_attributes().
|
extern |
Given two lists of attributes, return true if list L2 is completely contained within L1.
??? This would be faster if attribute names were stored in a canonicalized form. Otherwise, if L1 uses `foo' and L2 uses `__foo__', the long method must be used to show these elements are equivalent (which they are).
??? It's not clear that attributes with arguments will always be handled correctly.
References attribute_value_equal(), CONST_CAST_TREE, get_attribute_name(), lookup_ident_attribute(), NULL_TREE, TREE_CHAIN, and TREE_VALUE.
Referenced by attribute_list_equal(), and merge_attributes().
|
extern |
Given two lists of attributes, return true if list l2 is equivalent to l1.
References attribute_list_contained().
Referenced by build_type_attribute_qual_variant(), check_aligned_type(), check_base_type(), ipa_icf::sem_item::compare_referenced_symbol_properties(), type_cache_hasher::equal(), and ipa_icf::sem_function::equals_wpa().
|
extern |
Compare two attributes for their value identity. Return true if the attribute values are known to be equal; otherwise return false.
References cmp_attrib_identifiers(), get_attribute_name(), is_attribute_p(), NULL_TREE, omp_declare_simd_clauses_equal(), simple_cst_equal(), simple_cst_list_equal(), TREE_CHAIN, TREE_CODE, and TREE_VALUE.
Referenced by attribute_list_contained(), comp_type_attributes(), duplicate_one_attribute(), merge_attributes(), and redirect_to_specific_clone().
Return a declaration like DDECL except that its DECL_ATTRIBUTES is ATTRIBUTE.
References DECL_ATTRIBUTES.
Return a type like TTYPE except that its TYPE_ATTRIBUTE is ATTRIBUTE and its qualifiers are QUALS. Record such modified types already made so we don't make duplicates.
References attribute_list_equal(), build_distinct_type_copy(), build_qualified_type(), comp_type_attributes(), lang_hooks_for_types::copy_lang_qualifiers, RECORD_OR_UNION_TYPE_P, SET_TYPE_STRUCTURAL_EQUALITY, TREE_CODE, TYPE_ATTRIBUTES, TYPE_CANONICAL, type_hash_canon(), type_hash_canon_hash(), TYPE_MAIN_VARIANT, TYPE_QUALS, TYPE_STRUCTURAL_EQUALITY_P, TYPE_UNQUALIFIED, lang_hooks::types, and warning().
Referenced by attr_access::array_as_string(), build_type_attribute_variant(), make_vector_type(), reconstruct_complex_type(), and remap_type_1().
Return a type like TTYPE except that its TYPE_ATTRIBUTES is ATTRIBUTE. Such modified types already made are recorded so that duplicates are not made.
Return a type like TTYPE except that its TYPE_ATTRIBUTE is ATTRIBUTE. Record such modified types already made so we don't make duplicates.
References build_type_attribute_qual_variant(), and TYPE_QUALS.
Referenced by decl_attributes().
For a given string S of length L, strip leading and trailing '_' characters so that we have a canonical form of attribute names. NB: This function may change S and L.
Referenced by canonicalize_attr_name(), handle_ignored_attributes_option(), lookup_attribute(), lookup_attribute(), and register_scoped_attribute().
For a given IDENTIFIER_NODE, strip leading and trailing '_' characters so that we have a canonical form of attribute names.
References canonicalize_attr_name(), get_identifier_with_length(), IDENTIFIER_LENGTH, and IDENTIFIER_POINTER.
|
inline |
Compare attribute identifiers ATTR1 and ATTR2.
References cmp_attribs().
|
inline |
Compare attribute identifiers ATTR1 and ATTR2 with length ATTR1_LEN and ATTR2_LEN.
Referenced by cmp_attrib_identifiers(), cmp_attribs(), is_attribute_p(), private_lookup_attribute(), and private_lookup_attribute().
This function returns true if FN1 and FN2 are versions of the same function, that is, the target strings of the function decls are different. This assumes that FN1 and FN2 have the same signature.
References copy_node(), DECL_ATTRIBUTES, DECL_FUNCTION_VERSIONED, DECL_SOURCE_LOCATION, error_at(), get_identifier(), inform(), lookup_attribute(), NULL_TREE, sorted_attr_string(), TREE_CODE, tree_cons(), and TREE_VALUE.
|
extern |
Return 0 if the attributes for two types are incompatible, 1 if they are compatible, and 2 if they are nearly compatible (which causes a warning to be generated).
References a, attribute_value_equal(), CONST_CAST_TREE, find_same_attribute(), gcc_unreachable, lookup_attribute(), lookup_attribute_spec(), NULL, NULL_TREE, strub_comptypes(), targetm, TREE_CHAIN, TREE_PURPOSE, and TYPE_ATTRIBUTES.
Referenced by build_type_attribute_qual_variant(), ipa_icf_gimple::func_checker::compare_gimple_call(), ipa_icf::sem_item::compare_referenced_symbol_properties(), ipa_icf::sem_function::equals_wpa(), type_variants_equivalent_p(), and useless_type_conversion_p().
|
extern |
Duplicate all attributes from user DECL to the corresponding builtin that should be propagated.
References b, builtin_decl_explicit(), DECL_ATTRIBUTES, DECL_FUNCTION_CODE(), and duplicate_one_attribute().
|
extern |
Return TRUE iff ATTR has been parsed by the front-end as a C++-11 attribute. When G++ parses a C++11 attribute, it is represented as a TREE_LIST which TREE_PURPOSE is itself a TREE_LIST. TREE_PURPOSE (TREE_PURPOSE (ATTR)) is the namespace of the attribute, and the TREE_VALUE (TREE_PURPOSE (ATTR)) is its non-qualified name. Please use get_attribute_namespace and get_attribute_name to retrieve the namespace and name of the attribute, as these accessors work with GNU attributes as well.
References NULL_TREE, TREE_CODE, and TREE_PURPOSE.
Referenced by attribute_ignored_p(), decl_attributes(), get_attribute_name(), and get_attribute_namespace().
Process the attributes listed in ATTRIBUTES and install them in *NODE, which is either a DECL (including a TYPE_DECL) or a TYPE. If a DECL, it should be modified in place; if a TYPE, a copy should be created unless ATTR_FLAG_TYPE_IN_PLACE is set in FLAGS. FLAGS gives further information, in the form of a bitwise OR of flags in enum attribute_flags from tree.h. Depending on these flags, some attributes may be returned to be applied at a later stage (for example, to apply a decl attribute to the declaration rather than to its type).
References a, ATTR_FLAG_ARRAY_NEXT, ATTR_FLAG_BUILT_IN, ATTR_FLAG_CXX11, ATTR_FLAG_DECL_NEXT, ATTR_FLAG_FUNCTION_NEXT, ATTR_FLAG_TYPE_IN_PLACE, attr_namespace_ignored_p(), attribute_ignored_p(), attributes_initialized, build_pointer_type(), build_qualified_type(), build_target_option_node(), build_tree_list(), build_type_attribute_variant(), build_variant_type_copy(), BUILT_IN_NORMAL, chainon(), COMPLETE_TYPE_P, copy_list(), current_optimize_pragma, current_target_pragma, cxx11_attribute_p(), DECL_ATTRIBUTES, DECL_BUILT_IN_CLASS, DECL_FUNCTION_CODE(), DECL_FUNCTION_SPECIFIC_OPTIMIZATION, DECL_FUNCTION_SPECIFIC_TARGET, DECL_ORIGINAL_TYPE, DECL_P, diag_attr_exclusions(), error(), error_mark_node, error_operand_p(), find_same_attribute(), FUNC_OR_METHOD_TYPE_P, gcc_assert, get_attribute_name(), get_attribute_namespace(), get_identifier(), global_options, global_options_set, inform(), init_attributes(), input_location, is_attribute_p(), list_length(), lookup_attribute(), lookup_attribute_spec(), lookup_scoped_attribute_spec(), NULL, NULL_TREE, optimization_current_node, optimization_default_node, POINTER_TYPE_P, r, relayout_decl(), simple_cst_equal(), target_option_current_node, target_option_default_node, targetm, TREE_CHAIN, TREE_CODE, tree_cons(), TREE_TYPE, TREE_VALUE, TYPE_ATTRIBUTES, TYPE_MAIN_VARIANT, TYPE_NAME, TYPE_NEXT_VARIANT, TYPE_P, TYPE_QUALS, VAR_P, and warning().
Referenced by apply_tm_attr(), and build_builtin_function().
|
extern |
Return the number of mismatched function or type attributes between the "template" function declaration TMPL and DECL. The word "template" doesn't necessarily refer to a C++ template but rather a declaration whose attributes should be matched by those on DECL. For a non-zero return value append the names of the mismatcheed attributes to OUTATTRS. ATTRLIST is a list of additional attributes that SPEC should be taken to ultimately be declared with.
References DECL_ATTRIBUTES, decls, has_attribute(), i, lookup_attribute(), TREE_CODE, TREE_DEPRECATED, TREE_PUBLIC, TREE_TYPE, and TYPE_ATTRIBUTES.
Referenced by maybe_diag_alias_attributes().
Duplicate all attributes with name NAME in ATTR list to *ATTRS if they are missing there.
References a, attribute_value_equal(), attrs, copy_node(), lookup_attribute(), and TREE_CHAIN.
Referenced by copy_attributes_to_builtin().
|
extern |
Free data we might have allocated when adding extra attributes.
References ignored_attributes_table.
Referenced by compile_file().
|
extern |
Return the name of the attribute ATTR. This accessor works on GNU and C++11 (scoped) attributes. Please read the comments of cxx11_attribute_p to understand the format of attributes.
References cxx11_attribute_p(), TREE_PURPOSE, and TREE_VALUE.
Referenced by attribute_list_contained(), attribute_value_equal(), build_adjusted_function_type(), compute_fn_summary(), create_omp_child_function(), cgraph_node::create_version_clone_with_body(), decl_attributes(), dump_function_to_file(), find_same_attribute(), function_attribute_inlinable_p(), lookup_attribute_by_prefix(), lookup_ident_attribute(), merge_attributes(), private_lookup_attribute(), private_lookup_attribute(), remove_attribute(), remove_attribute(), and type_hash_canon_hash().
|
extern |
Return the namespace of the attribute ATTR. This accessor works on GNU and C++11 (scoped) attributes. On GNU attributes, it returns an identifier tree for the string "gnu". Please read the comments of cxx11_attribute_p to understand the format of attributes.
References cxx11_attribute_p(), get_gnu_namespace(), and TREE_PURPOSE.
Referenced by attribute_ignored_p(), decl_attributes(), find_same_attribute(), is_attribute_namespace_p(), and private_lookup_attribute().
|
extern |
Return the access specification for a function parameter PARM or null if the current function has no such specification.
References DECL_ARGUMENTS, hash_map< KeyId, Value, Traits >::get(), init_attr_rdwr_indices(), hash_map< KeyId, Value, Traits >::is_empty(), NULL, TREE_CHAIN, TREE_TYPE, and TYPE_ATTRIBUTES.
Referenced by gimple_parm_array_size(), and parm_object_size().
Handle a "dllimport" or "dllexport" attribute.
|
extern |
Parse arguments V of -Wno-attributes=. Currently we accept: vendor::attr vendor:: This functions also registers the parsed attributes so that we don't warn that we don't recognize them.
References attrs, canonicalize_attr_name(), error(), get_identifier_with_length(), i, IDENTIFIER_POINTER, ignored_attributes_table, inform(), input_location, lookup_scoped_attribute_spec(), register_scoped_attributes(), and table.
Referenced by init_attributes().
Initialize a mapping RWM for a call to a function declared with attribute access in ATTRS. Each attribute positional operand inserts one entry into the mapping with the operand number as the key.
References copy_list(), attr_access::end, end(), attr_access::from_mode_char(), gcc_assert, hash_map< KeyId, Value, Traits >::get_or_insert(), HOST_WIDE_INT_M1U, attr_access::internal_p, lookup_attribute(), attr_access::minsize, attr_access::mode, nreverse(), NULL, attr_access::ptrarg, hash_map< KeyId, Value, Traits >::put(), attr_access::sizarg, attr_access::size, attr_access::static_p, attr_access::str, TREE_CHAIN, TREE_CODE, TREE_STRING_POINTER, TREE_VALUE, and UINT_MAX.
Referenced by get_parm_access(), maybe_warn_pass_by_reference(), and maybe_warn_read_write_only().
|
extern |
Initialize attribute tables, and make some sanity checks if checking is enabled.
References lang_hooks::attribute_table, attribute_tables, attributes_initialized, check_attribute_tables(), handle_ignored_attributes_option(), invoke_plugin_callbacks(), NULL, register_scoped_attributes(), and targetm.
Referenced by decl_attributes().
|
inline |
Given an attribute ATTR and a string ATTR_NS, return true if the attribute namespace is valid for the string. ATTR_NS "" stands for standard attribute (NULL get_attribute_namespace) or "gnu" namespace.
References get_attribute_namespace(), is_attribute_p(), NULL, and NULL_TREE.
Referenced by remove_attribute().
|
inline |
Given an identifier node IDENT and a string ATTR_NAME, return true if the identifier node is a valid attribute name for the string.
References cmp_attribs(), IDENTIFIER_LENGTH, and IDENTIFIER_POINTER.
Referenced by attribute_value_equal(), create_omp_child_function(), decl_attributes(), diag_attr_exclusions(), drop_type_attribute_if_params_changed_p(), function_attribute_inlinable_p(), is_attribute_namespace_p(), remove_attribute(), remove_attribute(), and ipa_param_adjustments::type_attribute_allowed_p().
Returns true if DECL is multi-versioned using the target attribute, and this is the default version. This function can only be used for targets that do not support the "target_version" attribute.
References DECL_ATTRIBUTES, DECL_FUNCTION_VERSIONED, gcc_assert, lookup_attribute(), TREE_CODE, TREE_STRING_POINTER, and TREE_VALUE.
Given an attribute name ATTR_NAME and a list of attributes LIST, return a pointer to the attribute's list element if the attribute is part of the list, or NULL_TREE if not found. If the attribute appears more than once, this only returns the first occurrence; the TREE_CHAIN of the return value should be passed back in if further occurrences are wanted. ATTR_NAME must be in the form 'text' (not '__text__').
References canonicalize_attr_name(), gcc_checking_assert, NULL_TREE, and private_lookup_attribute().
Referenced by varpool_node::add(), add_clobbers_to_eh_landing_pad(), add_decls_addresses_to_decl_constructor(), add_detected_attribute_1(), alloc_object_size(), analyze_functions(), asan_poison_variables(), asan_protect_global(), assemble_alias(), assemble_external(), assemble_start_function(), auto_simd_check_stmt(), avoid_folding_inline_builtin(), block_nonartificial_location(), btf_add_func_records(), build_pointer_type_for_mode(), build_reference_type_for_mode(), can_early_inline_edge_p(), can_inline_edge_by_limits_p(), can_strub_internally_p(), can_strub_p(), cgraph_externally_visible_p(), strlen_pass::check_and_optimize_call(), check_scan_store(), common_function_versions(), comp_type_attributes(), symbol_table::compile(), computable_teams_clause(), compute_fn_summary(), compute_function_frequency(), copy_decl_for_dup_finish(), cgraph_node::create(), cgraph_node::create_alias(), varpool_node::create_alias(), create_assumption_fn(), create_nesting_tree(), create_omp_child_function(), create_parallel_loop(), cxx17_empty_base_field_p(), decl_attributes(), decl_fnspec(), declare_weak(), decls_mismatched_attributes(), default_binds_local_p_3(), determine_versionability(), device_resident_p(), diag_attr_exclusions(), do_assemble_alias(), do_estimate_edge_time(), do_warn_unused_result(), duplicate_one_attribute(), early_inliner(), symtab_node::equal_address_to(), error_unavailable_use(), evaluate_stmt(), execute_oacc_loop_designation(), execute_ranger_vrp(), execute_split_functions(), expand_call_inline(), expand_expr_real_1(), expand_oacc_for(), expand_omp_target(), expand_one_var(), expand_simd_clones(), expand_target_clones(), expand_used_vars(), varpool_node::externally_visible_p(), find_simtpriv_var_op(), flags_from_decl_or_type(), flatten_remove_node_hook(), fndecl_alloc_p(), fndecl_dealloc_argno(), attr_access::free_lang_data(), function_and_variable_visibility(), gate_oacc_kernels(), get_alias_symbol(), get_attr_nonstring_decl(), cgraph_node::get_availability(), get_block_for_decl(), varpool_node::get_create(), get_nonnull_args(), get_section(), get_strub_attr_from_decl(), get_strub_attr_from_type(), get_variable_section(), gimple_build_call_from_tree(), gimple_call_alloc_size(), gimple_call_fnspec(), gimple_call_nonnull_result_p(), gimple_infer_range::gimple_infer_range(), gimplify_adjust_omp_clauses(), gimplify_adjust_omp_clauses_1(), gimplify_bind_expr(), gimplify_body(), gimplify_call_expr(), gimplify_case_label_expr(), gimplify_label_expr(), handle_alias_pairs(), handle_warn_if_not_align(), has_attribute(), infer_nonnull_range_by_attribute(), init_attr_rdwr_indices(), inline_always_inline_functions(), inline_forbidden_p_stmt(), input_node(), ipa_inline(), ipa_pta_execute(), is_asan_mark_p(), is_function_default_version(), is_in_offload_region(), is_oacc_declared(), is_odr_indicator(), is_tm_callable(), is_tm_irrevocable(), is_tm_may_cancel_outer(), is_tm_safe(), is_var_need_auto_init(), likely_target_p(), lower_lastprivate_clauses(), lower_omp_scan(), lto_output_node(), make_split_prologue_seq(), matching_alloc_calls_p(), maybe_diag_alias_attributes(), ipa_icf::sem_function::merge(), ipa_icf::sem_item_optimizer::merge_classes(), non_local_p(), symtab_node::noninterposable_alias(), nonnull_arg_p(), note_simd_array_uses_cb(), oacc_get_fn_attrib(), oacc_validate_dims(), oacc_verify_routine_clauses(), offloading_function_p(), ok_for_auto_simd_clone(), omp_construct_selector_matches(), omp_context_selector_matches(), omp_declare_target_fn_p(), omp_declare_target_var_p(), omp_discover_declare_target_tgt_fn_r(), omp_discover_declare_target_var_r(), omp_discover_implicit_declare_target(), omp_finish_file(), omp_lto_input_declare_variant_alt(), omp_lto_output_declare_variant_alt(), omp_mark_declare_variant(), omp_maybe_offloaded(), omp_notice_variable(), omp_resolve_declare_variant(), possible_inline_candidate_p(), process_common_attributes(), process_function_and_variable_attributes(), process_symver_attribute(), redirect_to_specific_clone(), refered_from_nonlocal_fn(), remove_named_attribute_unsharing(), resolve_unique_section(), rest_of_decl_compilation(), rest_of_handle_final(), restrict_type_identity_attributes_to(), sanitize_attrs_match_for_inline_p(), sanitize_coverage_p(), sanitize_flags_p(), scan_omp_1_op(), scan_sharing_clauses(), stack_protect_decl_phase(), strub_always_inline_p(), surely_varying_stmt_p(), switch_to_section(), tree_bb_level_predictions(), tree_expr_nonzero_warnv_p(), tree_inlinable_function_p(), tree_profiling(), tree_versionable_function_p(), unlikely_executed_stmt_p(), validate_arglist(), vect_recog_pow_pattern(), vectorizable_scan_store(), symtab_node::verify_base(), verify_node_partition(), visit_bb(), and warn_deprecated_use().
Similar to lookup_attribute, but also match the attribute namespace. ATTR_NS "" stands for either standard attribute or "gnu" namespace.
References canonicalize_attr_name(), gcc_checking_assert, NULL_TREE, and private_lookup_attribute().
Given an attribute name ATTR_NAME and a list of attributes LIST, return a pointer to the attribute's list first element if the attribute starts with ATTR_NAME. ATTR_NAME must be in the form 'text' (not '__text__').
References gcc_checking_assert, get_attribute_name(), IDENTIFIER_LENGTH, IDENTIFIER_POINTER, NULL_TREE, and TREE_CHAIN.
Referenced by ipa_icf::sem_function::parse().
|
extern |
Return the spec for the attribute named NAME. If NAME is a TREE_LIST, it also specifies the attribute namespace.
References get_gnu_namespace(), lookup_scoped_attribute_spec(), TREE_CODE, TREE_PURPOSE, and TREE_VALUE.
Referenced by attribute_ignored_p(), comp_type_attributes(), decl_attributes(), and remove_attributes_matching().
Makes a function attribute of the form NAME(ARG_NAME) and chains it to CHAIN.
References build_string(), get_identifier(), NULL_TREE, and tree_cons().
Referenced by expand_target_clones().
Make a dispatcher declaration for the multi-versioned function DECL. Calls to DECL function will be replaced with calls to the dispatcher by the front-end. Return the decl created.
References build_fn_decl(), build_function_type(), DECL_ARTIFICIAL, DECL_ASSEMBLER_NAME, DECL_CONTEXT, DECL_EXTERNAL, DECL_INITIAL, error_mark_node, IDENTIFIER_POINTER, NULL_TREE, TREE_PUBLIC, TREE_TYPE, TREE_USED, and TYPE_ARG_TYPES.
Issue a warning for the declaration ALIAS for TARGET where ALIAS specifies either attributes that are incompatible with those of TARGET, or attributes that are missing and that declaring ALIAS with would benefit.
References DECL_ATTRIBUTES, DECL_SOURCE_LOCATION, decls_mismatched_attributes(), inform(), lookup_attribute(), NULL, NULL_TREE, and warning_n().
Referenced by handle_alias_pairs().
Given two attributes lists, return a list of their union.
Return an attribute list that is the union of a1 and a2.
References a, attribute_list_contained(), attribute_value_equal(), copy_node(), get_attribute_name(), list_length(), lookup_ident_attribute(), NULL_TREE, and TREE_CHAIN.
Referenced by merge_decl_attributes(), and merge_type_attributes().
Default versions of target-overridable functions.
Given decls OLDDECL and NEWDECL, merge their attributes and return the result.
References DECL_ATTRIBUTES, and merge_attributes().
Given two Windows decl attributes lists, possibly including dllimport, return a list of their union .
Given types T1 and T2, merge their attributes and return the result.
References merge_attributes(), and TYPE_ATTRIBUTES.
The backbone of lookup_attribute(). ATTR_LEN is the string length of ATTR_NAME, and LIST is not NULL_TREE. The function is called from lookup_attribute in order to optimize for size.
References cmp_attribs(), get_attribute_name(), IDENTIFIER_LENGTH, IDENTIFIER_POINTER, and TREE_CHAIN.
Referenced by find_same_attribute(), lookup_attribute(), and lookup_attribute().
|
extern |
Similarly but with also attribute namespace.
References cmp_attribs(), get_attribute_name(), get_attribute_namespace(), IDENTIFIER_LENGTH, IDENTIFIER_POINTER, NULL_TREE, and TREE_CHAIN.
|
extern |
Insert SPECS into its namespace. IGNORED_P is true iff all unknown attributes in this namespace should be ignored for the purposes of -Wattributes. The function returns the namespace into which the attributes have been registered.
References scoped_attributes::attribute_hash, scoped_attributes::attributes, attributes_table, find_attribute_namespace(), gcc_assert, scoped_attributes::ignored_p, scoped_attributes::ns, NULL, register_scoped_attribute(), and specs.
Referenced by handle_ignored_attributes_option(), and init_attributes().
Similarly but also with specific attribute namespace.
Similarly but also match namespace on the removed attributes. ATTR_NS "" stands for NULL or "gnu" namespace.
References gcc_checking_assert, get_attribute_name(), is_attribute_namespace_p(), is_attribute_p(), NULL, and TREE_CHAIN.
Remove any instances of attribute ATTR_NAME in LIST and return the modified list.
References gcc_checking_assert, get_attribute_name(), is_attribute_p(), and TREE_CHAIN.
Referenced by create_omp_child_function(), expand_omp_target(), gimplify_bind_expr(), symtab_node::make_decl_local(), omp_discover_declare_target_var_r(), optimize_weakref(), process_common_attributes(), process_function_and_variable_attributes(), and symbol_table::remove_unreachable_nodes().
Remove attributes that affect type identity from ATTRS unless the same attributes occur in OK_ATTRS.
References lookup_attribute(), remove_attributes_matching(), simple_cst_equal(), TREE_CHAIN, and TREE_VALUE.
|
extern |
Compare two constructor-element-type constants. Return 1 if the lists are known to be equal; otherwise return 0.
References NULL_TREE, simple_cst_equal(), TREE_CHAIN, and TREE_VALUE.
Referenced by attribute_value_equal().
|
extern |
ARGLIST is the argument to target attribute. This function tokenizes the TARGET_CLONES_ATTR_SEPARATOR separated arguments, sorts them and returns a string which is a unique identifier for the TARGET_CLONES_ATTR_SEPARATOR separated arguments. It also replaces non-identifier characters "=,-" with "_".
References attr_strcmp(), i, NULL, qsort, TARGET_CLONES_ATTR_SEPARATOR, TREE_CHAIN, TREE_STRING_POINTER, and TREE_VALUE.
Referenced by common_function_versions().