Lines Matching defs:dsym
969 check_bit_field_type(sym_t *dsym, type_t **inout_tp, tspec_t *inout_t)
1004 dsym->s_type = tp = block_dup_type(gettyp(t = INT));
1013 check_bit_field(sym_t *dsym, tspec_t *inout_t, type_t **inout_tp)
1016 check_bit_field_type(dsym, inout_tp, inout_t);
1025 } else if (tp->t_bit_field_width == 0 && dsym->s_name != unnamed) {
1030 if (dsym->s_scl == UNION_MEMBER) {
1033 dsym->s_type->t_bitfield = false;
1034 dsym->s_bitfield = false;
1107 declare_member(sym_t *dsym)
1110 lint_assert(is_member(dsym));
1117 if (dsym->u.s_member.sm_containing_type ==
1120 error(33, dsym->s_name);
1125 check_type(dsym);
1127 type_t *tp = dsym->s_type;
1129 if (dsym->s_bitfield)
1130 check_bit_field(dsym, &t, &tp);
1134 dsym->s_type = tp = block_derive_type(tp, t = PTR);
1142 int sz = length_in_bits(dsym->s_type, dsym->s_name);
1143 if (sz == 0 && t == ARRAY && dsym->s_type->u.dimension == 0)
1145 c99ism(39, dsym->s_name);
1147 dcs_add_member(dsym);
1149 check_function_definition(dsym, false);
1153 return dsym;
1157 set_bit_field_width(sym_t *dsym, int bit_field_width)
1160 if (dsym == NULL) {
1161 dsym = block_zero_alloc(sizeof(*dsym), "sym");
1162 dsym->s_name = unnamed;
1163 dsym->s_kind = SK_MEMBER;
1164 dsym->s_scl = STRUCT_MEMBER;
1165 dsym->s_type = gettyp(UINT);
1166 dsym->s_block_level = -1;
1168 dsym->u.s_member.sm_containing_type = dcs->d_tag_type->u.sou;
1170 dsym->s_type = block_dup_type(dsym->s_type);
1171 dsym->s_type->t_bitfield = true;
1172 dsym->s_type->t_bit_field_width = bit_field_width;
1173 dsym->s_bitfield = true;
1174 debug_sym("set_bit_field_width: ", dsym, "\n");
1175 return dsym;
1872 check_old_style_definition(const sym_t *rdsym, const sym_t *dsym)
1876 const sym_t *proto_params = dsym->s_type->u.params;
1919 declare_extern(sym_t *dsym, bool has_initializer, const sbuf_t *renaming)
1923 lint_assert(dsym->s_rename == NULL);
1927 dsym->s_rename = s;
1930 check_extern_declaration(dsym);
1932 check_function_definition(dsym, true);
1934 check_type(dsym);
1936 if (has_initializer && !check_init(dsym))
1937 dsym->s_def = DEF;
1944 if (dsym->s_type->t_tspec == FUNC && dsym->s_def == TDEF)
1945 dsym->s_def = DECL;
1948 if (dsym->s_type->t_tspec == FUNC) {
1949 dsym->s_inline = true;
1952 warning(268, dsym->s_name);
1958 dsym->s_type->t_tspec == FUNC && dsym->s_type->t_proto) {
1963 bool rval = dsym->s_type->t_subt->t_tspec != VOID;
1964 outfdef(dsym, &dsym->s_def_pos, rval, false, NULL);
1965 } else if (!is_compiler_builtin(dsym->s_name)
1966 && !(has_initializer && dsym->s_type->t_incomplete_array)) {
1967 outsym(dsym, dsym->s_scl, dsym->s_def);
1979 bool redec = rdsym->s_osdef && dsym->s_type->t_proto &&
1980 check_old_style_definition(rdsym, dsym);
1983 if (!redec && !check_redeclaration(dsym, &dowarn)) {
1988 error(27, dsym->s_name);
1991 warning(27, dsym->s_name);
1999 if (rdsym->s_osdef && !dsym->s_type->t_proto) {
2000 dsym->s_osdef = rdsym->s_osdef;
2001 dsym->u.s_old_style_params =
2003 dsym->s_def_pos = rdsym->s_def_pos;
2006 if (rdsym->s_type->t_proto && !dsym->s_type->t_proto)
2007 dsym->s_def_pos = rdsym->s_def_pos;
2008 else if (rdsym->s_def == DEF && dsym->s_def != DEF)
2009 dsym->s_def_pos = rdsym->s_def_pos;
2011 copy_usage_info(dsym, rdsym);
2015 dsym->s_def = DEF;
2019 dsym->s_inline = true;
2021 complete_type(dsym, rdsym);
2027 if (dsym->s_scl == TYPEDEF) {
2028 dsym->s_type = block_dup_type(dsym->s_type);
2029 dsym->s_type->t_typedef = true;
2030 set_first_typedef(dsym->s_type, dsym);
2031 if (dsym->s_type->t_tspec == STRUCT)
2033 query_message(21, dsym->s_name,
2034 type_name(dsym->s_type));
2035 else if (dsym->s_type->t_tspec == UNION)
2037 query_message(22, dsym->s_name,
2038 type_name(dsym->s_type));
2039 else if (dsym->s_type->t_tspec == PTR
2040 && dsym->s_type->t_subt->t_tspec == STRUCT)
2042 query_message(23, dsym->s_name,
2043 type_name(dsym->s_type));
2044 else if (dsym->s_type->t_tspec == PTR
2045 && dsym->s_type->t_subt->t_tspec == UNION)
2047 query_message(24, dsym->s_name,
2048 type_name(dsym->s_type));
2051 debug_sym("", dsym, "\n");
2099 check_redeclaration(sym_t *dsym, bool *dowarn)
2105 error(27, dsym->s_name);
2111 error(89, dsym->s_name);
2115 if (dsym->s_scl == TYPEDEF) {
2117 error(27, dsym->s_name);
2121 if (rdsym->s_def == DEF && dsym->s_def == DEF) {
2123 error(28, dsym->s_name);
2127 if (!types_compatible(rdsym->s_type, dsym->s_type,
2130 error(347, dsym->s_name,
2131 type_name(dsym->s_type), type_name(rdsym->s_type));
2135 if (rdsym->s_scl == EXTERN && dsym->s_scl == EXTERN)
2137 if (rdsym->s_scl == STATIC && dsym->s_scl == STATIC)
2139 if (rdsym->s_scl == STATIC && dsym->s_def == DECL)
2147 error(27, dsym->s_name);
2153 warning(29, dsym->s_name);
2166 warning(30, dsym->s_name);
2169 dsym->s_scl = STATIC;
2306 complete_type(sym_t *dsym, const sym_t *ssym)
2308 type_t **dstp = &dsym->s_type;
2332 debug_sym("dsym: ", dsym, "");
2571 check_local_hiding(const sym_t *dsym, const sym_t *rdsym)
2573 switch (dsym->s_scl) {
2576 warning(86, dsym->s_name, type_name(rdsym->s_type));
2580 warning(87, dsym->s_name, type_name(rdsym->s_type));
2584 warning(88, dsym->s_name, type_name(rdsym->s_type));
2595 check_local_redeclaration(const sym_t *dsym, sym_t *rdsym)
2599 check_local_hiding(dsym, rdsym);
2612 warning(91, dsym->s_name);
2619 warning(95, dsym->s_name);
2623 error(27, dsym->s_name);
2630 declare_external_in_block(sym_t *dsym)
2639 if (strcmp(dsym->s_name, esym->s_name) == 0)
2648 warning(27, dsym->s_name);
2654 bool compatible = types_compatible(esym->s_type, dsym->s_type,
2660 warning(90, dsym->s_name);
2664 warning(92, dsym->s_name);
2674 dsym->s_ext_sym = esym;
2682 declare_local(sym_t *dsym, bool has_initializer)
2686 if (dsym->s_type->t_tspec == FUNC) {
2687 dsym->s_def = DECL;
2689 dsym->s_scl = EXTERN;
2692 if (dsym->s_scl == EXTERN)
2694 warning(352, dsym->s_name);
2696 if (dsym->s_type->t_tspec == FUNC) {
2697 if (dsym->s_scl == STATIC) {
2699 warning(93, dsym->s_name);
2700 dsym->s_scl = EXTERN;
2701 } else if (dsym->s_scl != EXTERN && dsym->s_scl != TYPEDEF) {
2703 error(94, dsym->s_name);
2704 dsym->s_scl = EXTERN;
2716 if (dsym->s_type->t_tspec == FUNC)
2717 dsym->s_inline = true;
2720 warning(268, dsym->s_name);
2724 if (dsym->s_type->t_const
2725 && (dsym->s_scl == AUTO || dsym->s_scl == REG)) {
2727 query_message(18, dsym->s_name);
2730 check_function_definition(dsym, true);
2732 check_type(dsym);
2734 if (dcs->d_redeclared_symbol != NULL && dsym->s_scl == EXTERN)
2735 declare_external_in_block(dsym);
2737 if (dsym->s_scl == EXTERN) {
2742 if (dsym->s_ext_sym == NULL)
2743 outsym(dsym, EXTERN, dsym->s_def);
2745 outsym(dsym, dsym->s_ext_sym->s_scl, dsym->s_def);
2749 check_local_redeclaration(dsym, dcs->d_redeclared_symbol);
2751 if (has_initializer && !check_init(dsym)) {
2752 dsym->s_def = DEF;
2753 mark_as_set(dsym);
2756 if (dsym->s_scl == TYPEDEF) {
2757 dsym->s_type = block_dup_type(dsym->s_type);
2758 dsym->s_type->t_typedef = true;
2759 set_first_typedef(dsym->s_type, dsym);
2762 if (dsym->s_scl == STATIC)
2764 query_message(11, dsym->s_name);
2767 debug_sym("", dsym, "\n");
2837 check_size(const sym_t *dsym)
2840 if (dsym->s_def == DEF &&
2841 dsym->s_scl != TYPEDEF &&
2842 dsym->s_type->t_tspec != FUNC &&
2843 length_in_bits(dsym->s_type, dsym->s_name) == 0 &&
2844 dsym->s_type->t_tspec == ARRAY &&
2845 dsym->s_type->u.dimension == 0) {
2848 warning(190, dsym->s_name);
2851 error(190, dsym->s_name);