Kaynağa Gözat

removed scan.c and fixed a bug: 'struct a;' is an empty decl if struct a is already known

ceriel 33 yıl önce
ebeveyn
işleme
2b1dc29ab0

+ 0 - 1
lang/cem/cemcom.ansi/.distr

@@ -85,7 +85,6 @@ proto.c
 proto.str
 replace.c
 replace.str
-scan.c
 sizes.h
 skip.c
 specials.h

+ 1 - 1
lang/cem/cemcom.ansi/Makefile

@@ -120,7 +120,7 @@ GHSRC =	botch_free.h dataflow.h debug.h density.h errout.h \
 	nobitfield.h nopp.h nocross.h \
 	nparams.h numsize.h parbufsize.h pathlength.h Lpars.h \
 	strsize.h trgt_sizes.h textsize.h use_tmp.h spec_arith.h static.h \
-	regcount.h
+	regcount.h db_symtab.h
 
 HSRC = LLlex.h align.h arith.h assert.h atw.h class.h \
 	 input.h interface.h label.h level.h mes.h sizes.h specials.h \

+ 5 - 1
lang/cem/cemcom.ansi/declar.g

@@ -463,7 +463,11 @@ struct_or_union_specifier(register struct type **tpp;)
 			   * this means that we have to declare a new
 			   * structure. (yegh)
 			   */
-			  if (DOT == ';') declare_struct(fund, idf, tpp);
+			  if (DOT == ';' &&
+			      ( !idf->id_tag ||
+				 idf->id_tag->tg_level != level ||
+				 idf->id_tag->tg_type->tp_size < 0
+			     )) declare_struct(fund, idf, tpp);
 			  else apply_struct(fund, idf, tpp);
 			}
 			/* empty */