2000-03-31  Marius Vollmer  <mvo@dt.e-technik.uni-dortmund.de>

	* lexer.ll: Allow underscores everywhere in identifiers and
	complain later.

	* decls.cc (init): Reset n_errors.

	* bison-parser.yy: Allow empty block bodies.
	(collect): Call tree_collect_garbage instead of
	tree_maybe_collect_garbage.  Thresholding is now done by default.
	
2000-03-27  Marius Vollmer  <mvo@dt.e-technik.uni-dortmund.de>

	* subprogs.cc (build_Interface, validate_interface,
	validate_port): Check whether initial values are allowed when it
	is known what kind of interface it is.

2000-03-21  Marius Vollmer  <mvo@dt.e-technik.uni-dortmund.de>

	* subprogs.cc (vaul_parser::build_Interface): Check whether a
	default value is allowed and issue errors when not.

	* expr.cc (prepare_named_assocs): Bug fix: check whether AN is not
	NULL before testing whether it is a VAUL_SIMPLE_NAME.

2000-02-07  Marius Vollmer  <mvo@dt.e-technik.uni-dortmund.de>

	* vaul-chunk.t: Moved to freehdl/.
	* vaulgens-chunk.t: Get vaul-chunk.t from freehdl/.  Pass suitable
	"-I" option to gen-nodes.
	* Makefile.am: Generate vaulgens-chunk.h here.
	* expr.cc, blocks.cc, tree.cc: Get vaulgens-chunk.h from this
	directory.
	
2000-01-06  Marius Vollmer  <mvo@zagadka.ping.de>

	* pool.cc (package_body_name): Use "<package>(body)" to make for a
	more sensible filename.

1999-11-11  Marius Vollmer  <mvo@zagadka.ping.de>

        * vaul-chunk.t (vaul_node_creator): Initialize seqno slot of
	Declaration to -1.
	* parser.h (next_decl_seqno): New state variable.
	* decls.cc (add_decl): Use it to initialize the seqno of
	Declarations.

	* v2c.cc (emit_noqual_id): Emit seqno of Declarations.

1999-10-18  Marius Vollmer  <mvo@zagadka.ping.de>

	* Makefile.am (YPROTO, bison-parser.yy, bison-parser.cc,
	bison-parser.h): Added explicit rules for the bison-parser file.
	Grep out lines defined by YPROTO from the generated C++ file.
	YPROTO matches the prototype definitions for yyparse which cause
	harm with C++ because yyparse is actually a member function.

1999-10-12  Marius Vollmer  <mvo@zagadka.ping.de>

	* bison-parser.yy: Added "rol", "ror", "sla", "sll", "sra", "srl"
	operators.
	* lexer.ll: Added corresponding tokens.

1999-09-30  Marius Vollmer  <mvo@dt.e-technik.uni-dortmund.de>

	* expr.cc (check_static_level): Only warn when being verbose.
	(expr_type): Likewise.
	
	* bison-parser.yy: Added "xnor" binary operator. 
	* lexer.ll: Added "xnor" token. 

1999-09-11  Marius Vollmer  <mvo@zagadka.ping.de>

	* vaprintf.cc: Define _GNU_SOURCE, include <string.h> and check
	for HAVE_VASPRINTF, not HAVE_ASPRINTF.

	* lexer.ll: Do not use a typedef for struct el_mc.

	* bison-parser.yy, parser.h (YYPARSE_PARAM, bison_parse): Added
	hack so that bison.simple doesn't try to have a prototype for
	vaul_parser::bison_parse.

	* lexer.h, lexer.ll, message.cc, parser.h, v2c.cc, v2cc.cc: Added
	 "const" qualifiers for correctness.
	
1999-08-11  Marius Vollmer  <mvo@zagadka.ping.de>

	First cut at determing static levels.
	
	* parser.h (check_static_level, disambiguate_expr1): New
	prototypes.
	* vaulgens-chunk.t (compute_static_level): New generic function.
	* vaul-chunk.t (vaul_node_creator): Initialize static_level slot
	of IIR_Expression to IR_NOT_STATIC.
	* expr.cc: Include <libvaul/vaulgens-chunk.h>.
	(disambiguate_expr): Set static_level of expression after
	disambiguating.
	(disambiguate_expr1): New.
	(is_time_type, m_compute_static_level, check_static_level): New.
	* bison-parser.yy: Be less verbose overall.
	(constant_decl): Check whether initialization expression is
	locally constant.  This is only a proof of concept.
	* v2c.cc (emit): Output static expressions in brackets.

	* stats.cc (push_GenerateStat): add loop variable of for scheme to
	statement scope.

1999-05-01  Marius Vollmer  <mvo@zagadka.ping.de>

	* vaul-chunk.t, vaulgens-chunk.t, v2cc-chunk.t, v2c-chunk.t:
	Renamed all ctypes so that they have valid C identifiers.  Changed
	all uses. Removed duplicate definitions of ctypes.

1999-04-26  Marius Vollmer  <mvo@zagadka.ping.de>

	* vaul-chunk.t (vaul_node_creator): Use placement syntax to defer
	to histogram keeping operator new.
	* node-creator.h (vaul_node_creator_base::hist): New.
	* bison-parser.yy (vaul_parser::parse): Print histogram of
	allocated sizes.
	
1999-04-15  Marius Vollmer  <mvo@zagadka.ping.de>

	* bison-parser.yy (subprog_decl, subprog_body): Call consumer when
	we have one.  Collect garbage afterwards.
	(vaul_parser::vaul_parser): Initialize fire, vaul and vaulgens
	chunk.

	* decls.cc (push_scope, pop_scope): Do not reverse list of
	declarations.
	(add_decl): Use add_Decl_plain to link declaration into list.
	Call out to consumer under certain conditions.
	(add_decl_plain): Add declaration at end of list, using the "tail"
	extension of DeclarativeRegions.
	(rem_decl): Maintain "tail" extension properly.

	* dfile.cc (vaul_design_file::vaul_design_file): Link consumer
	back to parser.

	* parser.h (vaul_consumer): Changed names concurrent statement
	consumer functions and added consume_pbody_decl virtual function.
	Changed all users.

	* v2c.cc (main): Do not init fire, vaul and vaulgens chunk.
	(emit(vaul_pool*,char*)): Do not emit package bodies, they are
	handled by the consumer now.
	(push_conc_context, pop_conc_context): Only emit something when
	there have been no errors in the parser yet.
	(consume_pbody_decl): New.
	(m_emit_decl(IIR_SubprogramDeclaration)): Toss subprogram body
	statements when they are not needed anymore.
	(m_emit_decl(IIR_Variable,Constant,SignalDeclaration)): Toss the
	initialization value.

	* v2cc.cc (main): Initialize v2cc chunk.  Don't initialize fire
	and vaul chunk.  Initialize libname variable.

	* vaul-chunk.t (IIR_DeclarativeRegion extension): Add tail slot.
	
1999-03-30  Marius Vollmer  <mvo@zagadka.ping.de>

	* decls.cc (find_decls): Do not reset the decl_set when not
	looking up the suffix of a selected name.  This undoes the change
	from 1999-03-05.

	* expr.cc (ensure_range_type): Do nothing when type is NULL for
	the IR_ARRAY_RANGE case.

	* stats.cc (build_SignalAssignment): Bug fix for the transport
	delay case.  The created node was not assigned to S.

	* v2c.cc (emit_delay): Do not emit "reject" expression when it is
	NULL.
	
1999-03-14  Marius Vollmer  <mvo@zagadka.ping.de>

	Emit concurrent statements incrementally.
	
	* bison-parser.yy (entity_declaration): Push concurrent stats tail
	after processing declarations so that the code generator sees the
	declarations.  Pop concurrent stats tail before popping scope.
	(architecture_body): Likewise.
	(block_stat): Likewise.
	(concurrent_stat): Reset starting_label beofre parsing concurrent
	statement.
	(concurrent_stat_1): Set starting_label when there is one.
	(block_stat): Use starting_label as declarator.
	(vaul_parser::vaul_parser): Initialize consumer.
	(vaul_parser_gc_thresh): Default is now 10000, which is better
	suited for incremental code generating.
 	
	* design_file.h (vaul_design_file::read_design_unit): Add consumer
	argument.
	* dfile.cc (vaul_design_file::read_design_unit): Set consumer of
	parser to passed in consumer argument.

	* parser.h (vaul_consumer): New.
	(vaul_parser::consumer, starting_label): New.
	(vaul_parser::cstat_item::context): New.

	* stats.cc (vaul_parser::push_concurrent_stats_tail): Set context
	field of saved cstat_item.  Call out to consumer when we have one.
	(vaul_parser::pop_concurrent_stats_tail): Call out to consumer
	when we have one.
	(vaul_parser::add_to_concurrent_stats_tail): Call out to consumer
	when we have one.

	* v2c-chunk.t (emit_start_of_context, emit_end_of_context): New.

	* v2c.cc: Emit concurrent statements incrementally.
	
1999-03-13  Marius Vollmer  <mvo@zagadka.ping.de>

	Allow for incremental garbage collection between parsing of
	concurrent statements.
	
	* decls.cc (vaul_parser::init): Initialize cstat_tail.  Protect
	decl_cache location from garbage collector.
	(vaul_parser::finish): Do not call invalidate_decl_cache, just set
	decl_cache to NULL.  Unprotect decl_cache location.
	(vaul_parser::invalidate_decl_cache): Do not deal with id being
	NULL.

	* parser.h (vaul_parser::invalidate_decl_cache): Remove default
	value for id parameter.
	(vaul_parser::cstat_item, cstat_tail. push_concurrent_stats_tail,
	pop_concurrent_stats_tail, add_to_concurrent_stats_tail): New.
	(vaul_parser::collect): New.

	* stats.cc (vaul_parser::push_concurrent_stats_tail,
	pop_concurrent_stats_tail, add_to_concurrent_stats_tail): New.

	* v2c.cc (usage): Update usage message.
	(main): Set vaul_parser_gc_thresh from -g option.

	* bison-parser.yy: Do not construct list of concurrent statements
	in free air.  Rather, use add_to_concurrent_stats_tail to grow it
	in a way that the GC can see.
	(entity_declaration, architecture_body, block_stat,
	generate_stat): Use push_concurrent_stats_tail and
	pop_concurrent_stats_tail to set up the growing point for
	add_to_concurrent_stats_tail.
	(block_stat): Associate generic and port map aspects as soon as
	they are parsed.
	(concurrent_stats): Do not return constructed list of conc
	statements.  Do not use reverse_concurrent_stats.
	(reverse_concurrent_stats): Removed.
	(opt_concurrent_stats): New.
	(concurrent_stat): Call add_to_concurrent_stats_tail for the
	constructed statement, do not return it.  Call collect at the end.
	(vaul_parser::collect, vaul_parser_gc_thresh): New.
	
1999-03-05  Marius Vollmer  <mvo@zagadka.ping.de>

	* bison-parser.yy (concurrent_stat_1): Call invalidate_decl_cache
	when setting a declarator explicitely.
	(comp_inst_stat, comp_mark_with_keyword): Handle cases with
	explicit "component", "entity" and "configuration" keyword.
	(vaul_parser::vaul_parser): Initialize flags instead of verbose.
	Call tree_protect instead of retain on no_sense_list.

	* blocks.cc: (vaul_parser::build_CompInst): Fail gracefully when
	bi is NULL. [both functions of this name]
	(m_get_generics, m_get_ports): New implementation for
	IIR_ArchitectureRef.

	* parser.h (vaul_decl_set::copy_from): New prototype.
	(VAUL_PARSER_VERBOSE, VAUL_PARSER_NOCACHE): New macros.
	(vaul_parser::verbose, vaul_parser::flags): Replaced verbose by
	more general flags.
	(vaul_parser::decl_cache, invalidate_decl_cache,
	find_in_decl_cache, add_to_decl_cache): New.

	* decls.cc (vaul_parser::init): Initialize decl_cache.
	(vaul_parser::finish): Invalidate decl cache.
	(vaul_parser::add_decl): Invalidate newly added declarator in decl
	cache.
	(vaul_decl_set::copy_from): New.
	(vaul_parser::decl_cache, invalidate_decl_cache,
	find_in_decl_cache, add_to_decl_cache): New.
	(vaul_parser::find_decls): Use and maintain cache for lookups of
	VAUL_SimpleNames.  Reset decl_set immediatly after using it for the
	prefix of VAUL_SelNames.

	* design_file.h, dfile.cc (vaul_design_file::vaul_design_file):
	Changed verbose parameter to more general parser_flags.

	* dunit.cc (vaul_design_unit::~vaul_design_unit): Use
	tree_unprotect instead of tree_base_node::release.
	(vaul_design_unit::set_tree): Likewise.

	* expr.cc (vaul_parser::build_Expr_or_Attr): Reorder name decoder
	logic in a non-obvious but hopefully improved way.

	* lexer.ll (vaul_lexer::LexerInput): Fail gracefully when file ==
	NULL.  Set error status of lexer object when fgets fails.

	* message.cc (vaul_parser::vinfo): Do not try to announce scope
	when cur_Scope is NULL.

	* v2c.cc: Add "-n" option to set the VAUL_PARSER_NOCACHE flag.
	Update usage message.
	(my_pool::get): Be silent about non-existent files, except when
	being verbose.
	(emit_binding): Handle IIR_ArchitectureRef.

	* vaul-chunk.t (VAUL_ArchitectureRef): Removed.  It is replaced by
	IIR_ArchitectureRef in fire-chunk.t.  Changed all users.
	(VAUL_DeclCache): New.

	* vaulgens-chunk.t (get_generics, get_ports): Added methods for
	IIR_ArchitectureRef.
	
1999-02-25  Marius Vollmer  <mvo@dt.e-technik.uni-dortmund.de>

	* v2c.cc (main): Call init_vaulgens_chunk and init_v2c_chunk.

	* lexer.ll (strcasecmp, strncasecmp): Removed dubious portability
	prototypes.

	* common.h (bool, NULL): Removed dubious portability definitions
	for bool and NULL.

1999-02-24  Marius Vollmer  <mvo@zagadka.ping.de>

	* v2c.cc (emit(vaul_pool,char*)): Report error stored in df, if
	any.

	Expressions in generic and port map aspects weren't receiving the
	right overload resolution treatment.  Reported by Eric Gutt.
	
	* expr.cc (associate_one): Added parameter
	need_overload_resolution.  Call overload_resolution instead of
	just disambiguate_expr when it is true.
	(associate): Added parameter need_overload_resolution.  it is
	passed to associate_one.  Skip actuals that have a NULL expression
	(due to previous errors, presumably).
	(disambiguate_expr): Call associate with need_overload_resolution
	set to false.

	* parser.h (associate_one): Added need overload_resolution
	parameter to prototype.
	(associate): Added need overload_resolution parameter to prototype
	and set default to true.
