Lines Matching defs:olddecl

921 decls_match (tree newdecl, tree olddecl)
925 if (newdecl == olddecl)
928 if (TREE_CODE (newdecl) != TREE_CODE (olddecl))
936 tree f2 = TREE_TYPE (olddecl);
940 if (CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl)
942 && DECL_EXTERN_C_P (olddecl)))
950 if (p2 == NULL_TREE && DECL_EXTERN_C_P (olddecl)
951 && (DECL_BUILT_IN (olddecl)
954 || (DECL_IN_SYSTEM_HEADER (olddecl) && !DECL_CLASS_SCOPE_P (olddecl))
960 TREE_TYPE (newdecl) = TREE_TYPE (olddecl);
964 && (DECL_EXTERN_C_P (olddecl)
965 && DECL_IN_SYSTEM_HEADER (olddecl)
966 && !DECL_CLASS_SCOPE_P (olddecl))
972 TREE_TYPE (newdecl) = TREE_TYPE (olddecl);
984 != TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)))
988 DECL_TEMPLATE_PARMS (olddecl)))
992 types_match = same_type_p (TREE_TYPE (DECL_TEMPLATE_RESULT (olddecl)),
995 types_match = decls_match (DECL_TEMPLATE_RESULT (olddecl),
1003 && CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl)
1009 && !(DECL_EXTERN_C_P (olddecl) && DECL_EXTERN_C_P (newdecl)))
1013 types_match = TREE_TYPE (olddecl) == error_mark_node;
1014 else if (TREE_TYPE (olddecl) == NULL_TREE)
1020 TREE_TYPE (olddecl),
1037 warn_extern_redeclared_static (tree newdecl, tree olddecl)
1055 if (DECL_THIS_STATIC (olddecl) || !DECL_THIS_STATIC (newdecl))
1059 if (TREE_CODE (olddecl) == FUNCTION_DECL
1060 && DECL_ARTIFICIAL (olddecl))
1065 pedwarn ("previous declaration of %q+D", olddecl);
1113 duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
1115 unsigned olddecl_uid = DECL_UID (olddecl);
1120 if (newdecl == olddecl)
1121 return olddecl;
1123 types_match = decls_match (newdecl, olddecl);
1131 || TREE_TYPE (olddecl) == error_mark_node)
1134 if (DECL_P (olddecl)
1136 && TREE_CODE (olddecl) == FUNCTION_DECL
1137 && (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl)))
1143 else if (DECL_DECLARED_INLINE_P (olddecl)
1144 && DECL_UNINLINABLE (olddecl)
1145 && lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl)))
1148 && DECL_UNINLINABLE (olddecl)
1149 && lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl)))
1154 "with attribute noinline", olddecl);
1156 else if (DECL_DECLARED_INLINE_P (olddecl)
1163 olddecl);
1168 if (TREE_CODE (olddecl) == FUNCTION_DECL
1169 && DECL_ARTIFICIAL (olddecl))
1171 gcc_assert (!DECL_HIDDEN_FRIEND_P (olddecl));
1176 if (DECL_ANTICIPATED (olddecl))
1185 DECL_BUILT_IN (olddecl) ? "built-in" : "library",
1186 olddecl);
1192 else if (! DECL_BUILT_IN (olddecl))
1194 olddecl, newdecl);
1199 olddecl);
1207 if (DECL_ANTICIPATED (olddecl))
1214 t2 = TYPE_ARG_TYPES (TREE_TYPE (olddecl));
1229 tree oldargs = TYPE_ARG_TYPES (TREE_TYPE (olddecl));
1231 TYPE_ARG_TYPES (TREE_TYPE (olddecl))
1233 types_match = decls_match (newdecl, olddecl);
1235 return duplicate_decls (newdecl, olddecl,
1237 TYPE_ARG_TYPES (TREE_TYPE (olddecl)) = oldargs;
1244 && DECL_EXTERN_C_P (olddecl))
1246 TYPE_ARG_TYPES (TREE_TYPE (olddecl))))
1254 olddecl);
1258 DECL_BUILT_IN (olddecl) ? "built-in" : "library",
1259 olddecl);
1266 COPY_DECL_RTL (newdecl, olddecl);
1271 else if (DECL_ANTICIPATED (olddecl))
1275 (TREE_TYPE (olddecl), type);
1278 TREE_TYPE (newdecl) = TREE_TYPE (olddecl) = type;
1283 TREE_NOTHROW (olddecl) = 0;
1285 if (DECL_THIS_STATIC (newdecl) && !DECL_THIS_STATIC (olddecl))
1289 DECL_THIS_STATIC (olddecl) = 1;
1290 TREE_PUBLIC (olddecl) = 0;
1295 SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl));
1296 COPY_DECL_RTL (newdecl, olddecl);
1299 else if (TREE_CODE (olddecl) != TREE_CODE (newdecl))
1301 if ((TREE_CODE (olddecl) == TYPE_DECL && DECL_ARTIFICIAL (olddecl)
1306 && TREE_CODE (olddecl) != TYPE_DECL
1307 && ! (TREE_CODE (olddecl) == TEMPLATE_DECL
1308 && (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl))
1320 && DECL_FUNCTION_TEMPLATE_P (olddecl))
1321 || (TREE_CODE (olddecl) == FUNCTION_DECL
1326 if (TREE_CODE (olddecl) == TREE_LIST)
1327 olddecl = TREE_VALUE (olddecl);
1328 error ("previous declaration of %q+#D", olddecl);
1334 if (CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl))
1344 if (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == TYPE_DECL
1348 error ("conflicts with previous declaration %q+#D", olddecl);
1350 else if (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == FUNCTION_DECL
1352 && compparms (TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (olddecl))),
1355 DECL_TEMPLATE_PARMS (olddecl))
1359 TREE_TYPE (TREE_TYPE (olddecl))))
1362 error ("ambiguates old declaration %q+#D", olddecl);
1368 if (DECL_EXTERN_C_P (newdecl) && DECL_EXTERN_C_P (olddecl))
1372 error ("previous declaration %q+#D here", olddecl);
1375 TYPE_ARG_TYPES (TREE_TYPE (olddecl))))
1378 error ("ambiguates old declaration %q+#D", olddecl);
1387 error ("%q+D has a previous declaration as %q#D", olddecl, olddecl);
1392 && ((DECL_TEMPLATE_SPECIALIZATION (olddecl)
1395 != DECL_TI_TEMPLATE (olddecl))))
1397 && (!DECL_TEMPLATE_INFO (olddecl)
1398 || (DECL_TI_TEMPLATE (olddecl)
1410 && ((DECL_TEMPLATE_INSTANTIATION (olddecl)
1413 && !DECL_USE_TEMPLATE (olddecl))))
1430 == DECL_NAMESPACE_ALIAS (olddecl)))
1431 return olddecl;
1440 error ("previous declaration of namespace %q+D here", olddecl);
1445 const char *errmsg = redeclaration_error_message (newdecl, olddecl);
1449 if (DECL_NAME (olddecl) != NULL_TREE)
1450 error ((DECL_INITIAL (olddecl) && namespace_bindings_p ())
1452 : "%q+#D previously declared here", olddecl);
1455 else if (TREE_CODE (olddecl) == FUNCTION_DECL
1456 && DECL_INITIAL (olddecl) != NULL_TREE
1457 && TYPE_ARG_TYPES (TREE_TYPE (olddecl)) == NULL_TREE
1462 warning (0, "%Jfollows non-prototype definition here", olddecl);
1464 else if ((TREE_CODE (olddecl) == FUNCTION_DECL
1465 || TREE_CODE (olddecl) == VAR_DECL)
1466 && DECL_LANGUAGE (newdecl) != DECL_LANGUAGE (olddecl))
1498 SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
1503 olddecl, DECL_LANGUAGE (olddecl));
1509 if (DECL_LANG_SPECIFIC (olddecl) && DECL_USE_TEMPLATE (olddecl))
1511 else if (TREE_CODE (olddecl) == FUNCTION_DECL)
1513 tree t1 = TYPE_ARG_TYPES (TREE_TYPE (olddecl));
1529 pedwarn ("after previous specification in %q+#D", olddecl);
1536 olddecl);
1541 && ! DECL_DECLARED_INLINE_P (olddecl)
1542 && TREE_ADDRESSABLE (olddecl) && warn_inline)
1545 warning (0, "%Jprevious non-inline declaration here", olddecl);
1557 if (TREE_CODE (olddecl) == TYPE_DECL
1558 && (DECL_IMPLICIT_TYPEDEF_P (olddecl)
1564 warn_extern_redeclared_static (newdecl, olddecl);
1573 if (DECL_VINDEX (olddecl))
1574 DECL_VINDEX (newdecl) = DECL_VINDEX (olddecl);
1575 if (DECL_CONTEXT (olddecl))
1576 DECL_CONTEXT (newdecl) = DECL_CONTEXT (olddecl);
1577 DECL_STATIC_CONSTRUCTOR (newdecl) |= DECL_STATIC_CONSTRUCTOR (olddecl);
1578 DECL_STATIC_DESTRUCTOR (newdecl) |= DECL_STATIC_DESTRUCTOR (olddecl);
1579 DECL_PURE_VIRTUAL_P (newdecl) |= DECL_PURE_VIRTUAL_P (olddecl);
1580 DECL_VIRTUAL_P (newdecl) |= DECL_VIRTUAL_P (olddecl);
1581 DECL_INVALID_OVERRIDER_P (newdecl) |= DECL_INVALID_OVERRIDER_P (olddecl);
1582 DECL_THIS_STATIC (newdecl) |= DECL_THIS_STATIC (olddecl);
1583 if (DECL_OVERLOADED_OPERATOR_P (olddecl) != ERROR_MARK)
1585 (newdecl, DECL_OVERLOADED_OPERATOR_P (olddecl));
1591 if (warn_redundant_decls && ! DECL_ARTIFICIAL (olddecl)
1592 && !(new_defines_function && DECL_INITIAL (olddecl) == NULL_TREE)
1594 && !(DECL_EXTERNAL (olddecl) && ! DECL_EXTERNAL (newdecl))
1596 && ! (newdecl_is_friend || DECL_FRIEND_P (olddecl)))
1599 warning (OPT_Wredundant_decls, "previous declaration of %q+D", olddecl);
1604 if (TREE_CODE (olddecl) == TYPE_DECL)
1607 tree oldtype = TREE_TYPE (olddecl);
1614 DECL_ORIGINAL_TYPE (newdecl) = DECL_ORIGINAL_TYPE (olddecl);
1620 = (*targetm.merge_decl_attributes) (olddecl, newdecl);
1626 old_result = DECL_TEMPLATE_RESULT (olddecl);
1628 TREE_TYPE (olddecl) = TREE_TYPE (old_result);
1629 DECL_TEMPLATE_SPECIALIZATIONS (olddecl)
1630 = chainon (DECL_TEMPLATE_SPECIALIZATIONS (olddecl),
1639 check_redeclaration_exception_specification (newdecl, olddecl);
1647 DECL_SOURCE_LOCATION (olddecl)
1655 return olddecl;
1661 tree oldtype = TREE_TYPE (olddecl);
1665 newtype = merge_types (TREE_TYPE (newdecl), TREE_TYPE (olddecl));
1674 DECL_THIS_EXTERN (newdecl) |= DECL_THIS_EXTERN (olddecl);
1675 DECL_INITIALIZED_P (newdecl) |= DECL_INITIALIZED_P (olddecl);
1677 |= DECL_NONTRIVIALLY_INITIALIZED_P (olddecl);
1679 |= DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (olddecl);
1682 if (DECL_LANG_SPECIFIC (olddecl)
1683 && CP_DECL_THREADPRIVATE_P (olddecl))
1689 DECL_TLS_MODEL (newdecl) = DECL_TLS_MODEL (olddecl);
1697 check_redeclaration_exception_specification (newdecl, olddecl);
1698 TREE_TYPE (newdecl) = TREE_TYPE (olddecl) = newtype;
1719 TREE_READONLY (olddecl) = 1;
1721 TREE_THIS_VOLATILE (olddecl) = 1;
1723 TREE_NOTHROW (olddecl) = 1;
1727 TREE_DEPRECATED (olddecl) = 1;
1731 && DECL_INITIAL (olddecl) != NULL_TREE)
1733 DECL_INITIAL (newdecl) = DECL_INITIAL (olddecl);
1734 DECL_SOURCE_LOCATION (newdecl) = DECL_SOURCE_LOCATION (olddecl);
1737 && DECL_LANG_SPECIFIC (olddecl))
1739 DECL_SAVED_TREE (newdecl) = DECL_SAVED_TREE (olddecl);
1740 DECL_STRUCT_FUNCTION (newdecl) = DECL_STRUCT_FUNCTION (olddecl);
1749 DECL_SECTION_NAME (newdecl) = DECL_SECTION_NAME (olddecl);
1754 |= DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (olddecl);
1755 DECL_NO_LIMIT_STACK (newdecl) |= DECL_NO_LIMIT_STACK (olddecl);
1756 TREE_THIS_VOLATILE (newdecl) |= TREE_THIS_VOLATILE (olddecl);
1757 TREE_READONLY (newdecl) |= TREE_READONLY (olddecl);
1758 TREE_NOTHROW (newdecl) |= TREE_NOTHROW (olddecl);
1759 DECL_IS_MALLOC (newdecl) |= DECL_IS_MALLOC (olddecl);
1760 DECL_IS_PURE (newdecl) |= DECL_IS_PURE (olddecl);
1762 COPY_DECL_RTL (olddecl, newdecl);
1765 && (DECL_SIZE (olddecl) || !DECL_SIZE (newdecl)))
1771 COPY_DECL_RTL (olddecl, newdecl);
1779 tree oldstatic = value_member (olddecl, static_aggregates);
1783 TREE_TYPE (olddecl) = TREE_TYPE (newdecl);
1784 TREE_READONLY (olddecl) = TREE_READONLY (newdecl);
1785 TREE_THIS_VOLATILE (olddecl) = TREE_THIS_VOLATILE (newdecl);
1786 TREE_SIDE_EFFECTS (olddecl) = TREE_SIDE_EFFECTS (newdecl);
1790 merge_weak (newdecl, olddecl);
1792 DECL_ONE_ONLY (newdecl) |= DECL_ONE_ONLY (olddecl);
1793 DECL_DEFER_OUTPUT (newdecl) |= DECL_DEFER_OUTPUT (olddecl);
1794 TREE_PUBLIC (newdecl) = TREE_PUBLIC (olddecl);
1795 TREE_STATIC (olddecl) = TREE_STATIC (newdecl) |= TREE_STATIC (olddecl);
1796 if (! DECL_EXTERNAL (olddecl))
1800 if (DECL_LANG_SPECIFIC (newdecl) && DECL_LANG_SPECIFIC (olddecl))
1802 DECL_INTERFACE_KNOWN (newdecl) |= DECL_INTERFACE_KNOWN (olddecl);
1803 DECL_NOT_REALLY_EXTERN (newdecl) |= DECL_NOT_REALLY_EXTERN (olddecl);
1804 DECL_COMDAT (newdecl) |= DECL_COMDAT (olddecl);
1806 |= DECL_TEMPLATE_INSTANTIATED (olddecl);
1813 DECL_USE_TEMPLATE (newdecl) = DECL_USE_TEMPLATE (olddecl);
1817 DECL_IN_AGGR_P (newdecl) = DECL_IN_AGGR_P (olddecl);
1819 DECL_LANG_SPECIFIC (olddecl)->decl_flags.u2;
1820 DECL_NONCONVERTING_P (newdecl) = DECL_NONCONVERTING_P (olddecl);
1821 DECL_REPO_AVAILABLE_P (newdecl) = DECL_REPO_AVAILABLE_P (olddecl);
1824 DECL_TEMPLATE_INFO (newdecl) = DECL_TEMPLATE_INFO (olddecl);
1826 |= DECL_INITIALIZED_IN_CLASS_P (olddecl);
1827 olddecl_friend = DECL_FRIEND_P (olddecl);
1828 hidden_friend = (DECL_ANTICIPATED (olddecl)
1829 && DECL_HIDDEN_FRIEND_P (olddecl)
1838 DECL_BEFRIENDING_CLASSES (olddecl));
1842 DECL_THUNKS (newdecl) = DECL_THUNKS (olddecl);
1848 if (DECL_TEMPLATE_INSTANTIATION (olddecl)
1856 if (TREE_USED (olddecl))
1866 olddecl);
1868 SET_DECL_TEMPLATE_SPECIALIZATION (olddecl);
1873 DECL_VISIBILITY_SPECIFIED (olddecl) = 0;
1881 DECL_PENDING_INLINE_INFO (newdecl) = DECL_PENDING_INLINE_INFO (olddecl);
1883 DECL_DECLARED_INLINE_P (newdecl) |= DECL_DECLARED_INLINE_P (olddecl);
1887 if (DECL_INLINE (newdecl) && DECL_INITIAL (olddecl) == NULL_TREE)
1888 DECL_INLINE (olddecl) = 1;
1889 DECL_INLINE (newdecl) = DECL_INLINE (olddecl);
1891 DECL_UNINLINABLE (newdecl) = DECL_UNINLINABLE (olddecl)
1892 = (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl));
1896 DECL_ABSTRACT (newdecl) = DECL_ABSTRACT (olddecl);
1900 SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl));
1901 COPY_DECL_ASSEMBLER_NAME (newdecl, olddecl);
1902 COPY_DECL_RTL (newdecl, olddecl);
1909 DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
1910 DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
1915 SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
1920 if (DECL_BUILT_IN (olddecl))
1922 DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
1923 DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
1926 COPY_DECL_RTL (olddecl, newdecl);
1929 DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
1931 if (DECL_ARGUMENTS (olddecl))
1932 DECL_ARGUMENTS (newdecl) = DECL_ARGUMENTS (olddecl);
1936 NAMESPACE_LEVEL (newdecl) = NAMESPACE_LEVEL (olddecl);
1939 TREE_ADDRESSABLE (newdecl) = TREE_ADDRESSABLE (olddecl);
1940 TREE_ASM_WRITTEN (newdecl) = TREE_ASM_WRITTEN (olddecl);
1941 DECL_COMMON (newdecl) = DECL_COMMON (olddecl);
1942 COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl);
1945 if (DECL_VISIBILITY_SPECIFIED (olddecl)
1947 && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl))
1952 "declaration here", olddecl);
1955 if (DECL_VISIBILITY_SPECIFIED (olddecl))
1957 DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl);
1960 /* Init priority used to be merged from newdecl to olddecl by the memcpy,
1964 SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl));
1965 DECL_HAS_INIT_PRIORITY_P (olddecl) = 1;
1970 if (DECL_LANG_SPECIFIC (olddecl))
1972 gcc_assert (DECL_LANG_SPECIFIC (olddecl)
1974 ggc_free (DECL_LANG_SPECIFIC (olddecl));
1983 memcpy ((char *) olddecl + sizeof (struct tree_common),
1987 memcpy ((char *) olddecl + sizeof (struct tree_decl_common),
2009 olddecl, and not newdecl, is on the list of
2014 olddecl);
2018 size_t size = tree_code_size (TREE_CODE (olddecl));
2019 memcpy ((char *) olddecl + sizeof (struct tree_common),
2022 switch (TREE_CODE (olddecl))
2032 memcpy ((char *) olddecl + sizeof (struct tree_decl_common),
2039 memcpy ((char *) olddecl + sizeof (struct tree_decl_common),
2046 DECL_UID (olddecl) = olddecl_uid;
2048 DECL_FRIEND_P (olddecl) = 1;
2051 DECL_ANTICIPATED (olddecl) = 1;
2052 DECL_HIDDEN_FRIEND_P (olddecl) = 1;
2057 DECL_ATTRIBUTES (olddecl) = DECL_ATTRIBUTES (newdecl);
2062 if (DECL_RTL_SET_P (olddecl)
2063 && (TREE_CODE (olddecl) == FUNCTION_DECL
2064 || (TREE_CODE (olddecl) == VAR_DECL
2065 && TREE_STATIC (olddecl))))
2066 make_decl_rtl (olddecl);
2073 return olddecl;
2084 redeclaration_error_message (tree newdecl, tree olddecl)
2091 if (same_type_p (TREE_TYPE (newdecl), TREE_TYPE (olddecl)))
2098 /* If this is a pure function, its olddecl will actually be
2101 if (DECL_LANG_SPECIFIC (olddecl) && DECL_PURE_VIRTUAL_P (olddecl)
2102 && DECL_INITIAL (olddecl) == NULL_TREE)
2107 if (DECL_NAMESPACE_SCOPE_P (olddecl)
2108 && DECL_CONTEXT (olddecl) != DECL_CONTEXT (newdecl)
2109 && ! decls_match (olddecl, newdecl))
2116 if (DECL_INITIAL (olddecl) != NULL_TREE
2119 if (DECL_NAME (olddecl) == NULL_TREE)
2133 && COMPLETE_TYPE_P (TREE_TYPE (olddecl)))
2140 == DECL_TEMPLATE_RESULT (olddecl)))
2146 ot = DECL_TEMPLATE_RESULT (olddecl);
2155 && DECL_THREAD_LOCAL_P (newdecl) != DECL_THREAD_LOCAL_P (olddecl)
2156 && (! DECL_LANG_SPECIFIC (olddecl)
2157 || ! CP_DECL_THREADPRIVATE_P (olddecl)
2180 || DECL_ANON_UNION_VAR_P (olddecl))
2189 if (DECL_EXTERNAL (newdecl) || DECL_EXTERNAL (olddecl))
2199 if (!(DECL_EXTERNAL (newdecl) && DECL_EXTERNAL (olddecl)))
10678 tree olddecl = pushdecl (decl1);
10680 if (olddecl == error_mark_node)
10688 decl1 = olddecl;