commit 7811924e4048b36b3273bcd606eef78a25b52d53 Author: Jason Merrill Date: Thu May 18 16:15:51 2017 -0400 use-id-strcmp diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index 18c5ccf..939cbe3 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -1799,7 +1799,7 @@ is_char_array (tree t) tmp = TREE_TYPE (tmp); return num_dim == 1 && TREE_CODE (tmp) == INTEGER_TYPE - && !strcmp (IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (tmp))), "char"); + && !id_strcmp (DECL_NAME (TYPE_NAME (tmp)), "char"); } /* Dump in BUFFER an array type T in Ada syntax. Assume that the "type" diff --git a/gcc/c-family/c-pragma.c b/gcc/c-family/c-pragma.c index bc36626..e9fbdcd 100644 --- a/gcc/c-family/c-pragma.c +++ b/gcc/c-family/c-pragma.c @@ -514,7 +514,7 @@ handle_pragma_redefine_extname (cpp_reader * ARG_UNUSED (dummy)) const char *name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); name = targetm.strip_name_encoding (name); - if (strcmp (name, IDENTIFIER_POINTER (newname))) + if (id_strcmp (newname, name)) warning (OPT_Wpragmas, "#pragma redefine_extname ignored due to " "conflict with previous rename"); } @@ -587,7 +587,7 @@ maybe_apply_renaming_pragma (tree decl, tree asmname) if (DECL_NAME (decl) == p->oldname) { /* Only warn if there is a conflict. */ - if (strcmp (IDENTIFIER_POINTER (p->newname), oldname)) + if (id_strcmp (p->newname, oldname)) warning (OPT_Wpragmas, "#pragma redefine_extname ignored due to " "conflict with previous rename"); diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 011b389..7af6d8b 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -2938,7 +2938,7 @@ struct GTY(()) lang_decl { template function. */ #define DECL_PRETTY_FUNCTION_P(NODE) \ (DECL_NAME (NODE) \ - && !strcmp (IDENTIFIER_POINTER (DECL_NAME (NODE)), "__PRETTY_FUNCTION__")) + && !id_strcmp (DECL_NAME (NODE), "__PRETTY_FUNCTION__")) /* Nonzero if the variable was declared to be thread-local. We need a special C++ version of this test because the middle-end diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 48a91cb..2bc0993 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -824,7 +824,7 @@ grokfield (const cp_declarator *declarator, } if (IDENTIFIER_POINTER (name)[0] == '_' - && ! strcmp (IDENTIFIER_POINTER (name), "_vptr")) + && ! id_strcmp (name, "_vptr")) error ("member %qD conflicts with virtual function table field name", value); } diff --git a/gcc/cp/error.c b/gcc/cp/error.c index e8136d3..312890a 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -2151,7 +2151,7 @@ dump_expr (cxx_pretty_printer *pp, tree t, int flags) pp_cxx_dot (pp); } else if (TREE_CODE (ob) != PARM_DECL - || strcmp (IDENTIFIER_POINTER (DECL_NAME (ob)), "this")) + || id_strcmp (DECL_NAME (ob), "this")) { dump_expr (pp, ob, flags | TFF_EXPR_IN_PARENS); pp_cxx_arrow (pp); @@ -2234,7 +2234,7 @@ dump_expr (cxx_pretty_printer *pp, tree t, int flags) ob = TREE_OPERAND (ob, 0); if (TREE_CODE (ob) != PARM_DECL || (DECL_NAME (ob) - && strcmp (IDENTIFIER_POINTER (DECL_NAME (ob)), "this"))) + && id_strcmp (DECL_NAME (ob), "this"))) { dump_expr (pp, ob, flags | TFF_EXPR_IN_PARENS); if (TREE_CODE (TREE_TYPE (ob)) == REFERENCE_TYPE) diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index 42290fe..4b4c6d8 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -2900,7 +2900,7 @@ write_expression (tree expr) write_template_arg_literal (expr); else if (code == PARM_DECL && DECL_ARTIFICIAL (expr)) { - gcc_assert (!strcmp ("this", IDENTIFIER_POINTER (DECL_NAME (expr)))); + gcc_assert (!id_strcmp (DECL_NAME (expr), "this")); write_string ("fpT"); } else if (code == PARM_DECL) diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index c0e6254..0e05016 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -3201,7 +3201,7 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parser, tree id, "-std=c++11 or -std=gnu++11"); else if (cxx_dialect < cxx11 && TREE_CODE (id) == IDENTIFIER_NODE - && !strcmp (IDENTIFIER_POINTER (id), "thread_local")) + && !id_strcmp (id, "thread_local")) inform (location, "C++11 % only available with " "-std=c++11 or -std=gnu++11"); else if (!flag_concepts && id == ridpointers[(int)RID_CONCEPT]) @@ -7823,7 +7823,7 @@ cp_parser_unary_expression (cp_parser *parser, cp_id_kind * pidk, /* ISO C++ defines alignof only with types, not with expressions. So pedwarn if alignof is used with a non- type expression. However, __alignof__ is ok. */ - if (!strcmp (IDENTIFIER_POINTER (token->u.value), "alignof")) + if (!id_strcmp (token->u.value, "alignof")) pedwarn (token->location, OPT_Wpedantic, "ISO C++ does not allow % " "with a non-type"); @@ -20389,17 +20389,17 @@ cp_parser_virt_specifier_seq_opt (cp_parser* parser) /* See if it's a virt-specifier-qualifier. */ if (token->type != CPP_NAME) break; - if (!strcmp (IDENTIFIER_POINTER(token->u.value), "override")) + if (!id_strcmp (token->u.value, "override")) { maybe_warn_cpp0x (CPP0X_OVERRIDE_CONTROLS); virt_specifier = VIRT_SPEC_OVERRIDE; } - else if (!strcmp (IDENTIFIER_POINTER(token->u.value), "final")) + else if (!id_strcmp (token->u.value, "final")) { maybe_warn_cpp0x (CPP0X_OVERRIDE_CONTROLS); virt_specifier = VIRT_SPEC_FINAL; } - else if (!strcmp (IDENTIFIER_POINTER(token->u.value), "__final")) + else if (!id_strcmp (token->u.value, "__final")) { virt_specifier = VIRT_SPEC_FINAL; } @@ -27636,7 +27636,7 @@ static bool token_is__thread (cp_token *token) { gcc_assert (token->keyword == RID_THREAD); - return !strcmp (IDENTIFIER_POINTER (token->u.value), "__thread"); + return !id_strcmp (token->u.value, "__thread"); } /* Set the location for a declarator specifier and check if it is @@ -31246,7 +31246,7 @@ cp_parser_oacc_shape_clause (cp_parser *parser, omp_clause_code kind, } /* Worker num: argument and vector length: arguments. */ else if (cp_lexer_next_token_is (lexer, CPP_NAME) - && strcmp (id, IDENTIFIER_POINTER (next->u.value)) == 0 + && id_strcmp (next->u.value, id) == 0 && cp_lexer_nth_token_is (lexer, 2, CPP_COLON)) { cp_lexer_consume_token (lexer); /* id */ @@ -37107,9 +37107,9 @@ cp_parser_omp_declare_reduction (cp_parser *parser, cp_token *pragma_tok, else if (ARITHMETIC_TYPE_P (type) && (orig_reduc_id == NULL_TREE || (TREE_CODE (type) != COMPLEX_TYPE - && (strcmp (IDENTIFIER_POINTER (orig_reduc_id), + && (id_strcmp (orig_reduc_id, "min") == 0 - || strcmp (IDENTIFIER_POINTER (orig_reduc_id), + || id_strcmp (orig_reduc_id, "max") == 0)))) error_at (loc, "predeclared arithmetic type %qT in " "%<#pragma omp declare reduction%>", type); @@ -38647,15 +38647,15 @@ cp_parser_cilk_simd_clause_name (cp_parser *parser) clause_type = PRAGMA_CILK_CLAUSE_PRIVATE; else if (!token->u.value || token->type != CPP_NAME) return PRAGMA_CILK_CLAUSE_NONE; - else if (!strcmp (IDENTIFIER_POINTER (token->u.value), "vectorlength")) + else if (!id_strcmp (token->u.value, "vectorlength")) clause_type = PRAGMA_CILK_CLAUSE_VECTORLENGTH; - else if (!strcmp (IDENTIFIER_POINTER (token->u.value), "linear")) + else if (!id_strcmp (token->u.value, "linear")) clause_type = PRAGMA_CILK_CLAUSE_LINEAR; - else if (!strcmp (IDENTIFIER_POINTER (token->u.value), "firstprivate")) + else if (!id_strcmp (token->u.value, "firstprivate")) clause_type = PRAGMA_CILK_CLAUSE_FIRSTPRIVATE; - else if (!strcmp (IDENTIFIER_POINTER (token->u.value), "lastprivate")) + else if (!id_strcmp (token->u.value, "lastprivate")) clause_type = PRAGMA_CILK_CLAUSE_LASTPRIVATE; - else if (!strcmp (IDENTIFIER_POINTER (token->u.value), "reduction")) + else if (!id_strcmp (token->u.value, "reduction")) clause_type = PRAGMA_CILK_CLAUSE_REDUCTION; else return PRAGMA_CILK_CLAUSE_NONE; diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index fa02b27..1f742ec 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2887,7 +2887,7 @@ begin_class_definition (tree t) if (ns && TREE_CODE (ns) == NAMESPACE_DECL && DECL_CONTEXT (ns) == std_node && DECL_NAME (ns) - && !strcmp (IDENTIFIER_POINTER (DECL_NAME (ns)), "decimal")) + && !id_strcmp (DECL_NAME (ns), "decimal")) { const char *n = TYPE_NAME_STRING (t); if ((strcmp (n, "decimal32") == 0) diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 5ff45eb..d342175 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -20621,7 +20621,7 @@ add_calling_convention_attribute (dw_die_ref subr_die, tree decl) targetm.dwarf_calling_convention (TREE_TYPE (decl))); if (is_fortran () - && !strcmp (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)), "MAIN__")) + && !id_strcmp (DECL_ASSEMBLER_NAME (decl), "MAIN__")) { /* DWARF 2 doesn't provide a way to identify a program's source-level entry point. DW_AT_calling_convention attributes are only meant diff --git a/gcc/hsa-gen.c b/gcc/hsa-gen.c index c5d8a6e..96382ef 100644 --- a/gcc/hsa-gen.c +++ b/gcc/hsa-gen.c @@ -3924,7 +3924,7 @@ get_hsa_kernel_dispatch_offset (const char *field_name) for (tree chain = TYPE_FIELDS (*hsa_kernel_dispatch_type); chain != NULL_TREE; chain = TREE_CHAIN (chain)) - if (strcmp (field_name, IDENTIFIER_POINTER (DECL_NAME (chain))) == 0) + if (id_strcmp (DECL_NAME (chain), field_name) == 0) return int_byte_position (chain); gcc_unreachable (); diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index aa3a236..5bce835 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -2359,7 +2359,7 @@ is_cxa_pure_virtual_p (tree target) { return target && TREE_CODE (TREE_TYPE (target)) != METHOD_TYPE && DECL_NAME (target) - && !strcmp (IDENTIFIER_POINTER (DECL_NAME (target)), + && !id_strcmp (DECL_NAME (target), "__cxa_pure_virtual"); } diff --git a/gcc/omp-expand.c b/gcc/omp-expand.c index 7a7c747..5dad9f3 100644 --- a/gcc/omp-expand.c +++ b/gcc/omp-expand.c @@ -4366,9 +4366,9 @@ expand_cilk_for (struct omp_region *region, struct omp_for_data *fd) tree t, low_val = NULL_TREE, high_val = NULL_TREE; for (t = DECL_ARGUMENTS (child_fndecl); t; t = TREE_CHAIN (t)) { - if (!strcmp (IDENTIFIER_POINTER (DECL_NAME (t)), "__high")) + if (!id_strcmp (DECL_NAME (t), "__high")) high_val = t; - else if (!strcmp (IDENTIFIER_POINTER (DECL_NAME (t)), "__low")) + else if (!id_strcmp (DECL_NAME (t), "__low")) low_val = t; } gcc_assert (low_val && high_val); diff --git a/gcc/omp-simd-clone.c b/gcc/omp-simd-clone.c index 99589d4..137596b 100644 --- a/gcc/omp-simd-clone.c +++ b/gcc/omp-simd-clone.c @@ -417,7 +417,7 @@ simd_clone_mangle (struct cgraph_node *node, if the simdlen is assumed to be 8 for the first one, etc. */ for (struct cgraph_node *clone = node->simd_clones; clone; clone = clone->simdclone->next_clone) - if (strcmp (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (clone->decl)), + if (id_strcmp (DECL_ASSEMBLER_NAME (clone->decl), str) == 0) return NULL_TREE; diff --git a/gcc/read-rtl-function.c b/gcc/read-rtl-function.c index c5027971..8b92817 100644 --- a/gcc/read-rtl-function.c +++ b/gcc/read-rtl-function.c @@ -536,7 +536,7 @@ static tree find_param_by_name (tree fndecl, const char *name) { for (tree arg = DECL_ARGUMENTS (fndecl); arg; arg = TREE_CHAIN (arg)) - if (strcmp (name, IDENTIFIER_POINTER (DECL_NAME (arg))) == 0) + if (id_strcmp (DECL_NAME (arg), name) == 0) return arg; return NULL_TREE; } @@ -1324,7 +1324,7 @@ function_reader::parse_mem_expr (const char *desc) int i; tree t; FOR_EACH_VEC_ELT (m_fake_scope, i, t) - if (strcmp (desc, IDENTIFIER_POINTER (DECL_NAME (t))) == 0) + if (id_strcmp (DECL_NAME (t), desc) == 0) return t; /* Not found? Create it. diff --git a/gcc/tree-chkp.c b/gcc/tree-chkp.c index 2300e98..0ba6625 100644 --- a/gcc/tree-chkp.c +++ b/gcc/tree-chkp.c @@ -2379,7 +2379,7 @@ chkp_get_bound_for_parm (tree parm) to use zero bounds for input arguments of main function. */ else if (flag_chkp_zero_input_bounds_for_main - && strcmp (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (orig_decl)), + && id_strcmp (DECL_ASSEMBLER_NAME (orig_decl), "main") == 0) bounds = chkp_get_zero_bounds (); else if (BOUNDED_P (parm)) diff --git a/gcc/tree.c b/gcc/tree.c index 327332b..042fa4a 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -6053,7 +6053,7 @@ private_is_attribute_p (const char *attr_name, size_t attr_len, const_tree ident if (ident_len == attr_len) { - if (strcmp (attr_name, IDENTIFIER_POINTER (ident)) == 0) + if (id_strcmp (ident, attr_name) == 0) return true; } else if (ident_len == attr_len + 4)