[M3commit] CVS Update: cm3

Jay Krell jkrell at elego.de
Tue Aug 24 10:26:02 CEST 2010


CVSROOT:	/usr/cvs
Changes by:	jkrell at birch.	10/08/24 10:26:02

Modified files:
	cm3/m3-sys/m3cc/gcc/gcc/m3cg/: parse.c 

Log message:
	Give the backend some more type information.
	In particular, local and parameter structs are told be structs
	with fields.
	
	Some other types might be corrected as well but that isn't clear.
	
	This should significantly improve debugging with stock gdb,
	as well as work toward fixing a problem on SPARC64_SOLARIS.
	Though the identifier names in gdb are still mangled, alas.
	
	Note that this enables the optimizer to do more work, sometimes damage,
	and therefore optimization settings and codegen are *slightly* further pessimized
	here.
	
	Much of this is guessing or unrelated.
	
	In particular:
	flag_strict_aliasing = 0;
	flag_strict_overflow = 0;
	flag_reorder_functions = 0;
	flag_exceptions = 1;
	align_functions = 0;
	align_labels = 0;
	align_jumps = 0;
	align_loops = 0;
	
	and some others.
	Something in here (not listed) breaks caltech-parser and needs further reduction.
	(But it is via breaking something under caltech-parser, such as m3front
	or m3core or libm3, etc.)
	
	and
	if (flag_split_wide_types || GCC42 || IS_REAL_TYPE(src_T) || IS_REAL_TYPE(dst_T))
	use the add + indirect form of load/store, instead of bitfields.
	
	I did see, in some variations:
	- an infinite recursion in the backend related to splitting wide types
	- an undebugged crash in caltech-parser
	
	More to do there: in particular, all struct fields have always
	been and continue to be declared as ints. That will be changed
	"soon".
	
	Tested almost exclusively on I386_DARWIN and/or AMD64_DARWIN.
	(for its combination of fast fork, non-oddball non-Interix,
	and least awful gui thereof, but still pretty awful)




More information about the M3commit mailing list