Message-ID: <19990628130650.A31847@tabor.ta.jcu.cz> Date: Mon, 28 Jun 1999 13:06:50 +0200 From: Jan Hubicka To: djgpp-workers AT delorie DOT com Subject: Re: Regparm.... References: <19990628010734 DOT 59338 AT atrey DOT karlin DOT mff DOT cuni DOT cz> <37771452 DOT D2436E7C AT taniwha DOT org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.93i In-Reply-To: <37771452.D2436E7C@taniwha.org>; from Bill Currie on Mon, Jun 28, 1999 at 06:21:06PM +1200 Reply-To: djgpp-workers AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk On Mon, Jun 28, 1999 at 06:21:06PM +1200, Bill Currie wrote: > Jan Hubicka wrote: > > So please let me know your ideas. > > This is all good stuff, but the library really should be usable > independently of the -mregparm given to gcc. This can be accomplished > through __attribute__((regparm=X)) IIRC. Well, I would preffer to make libraries compilable in regparm modes. Having regparm(0) in all prototypes of function calls should be solution as well, but it will force you to use slower libraries and require you to use includes for all called functions. But this is probably not purpose, because you need to include stdio to make printf working as well (varargs parameters are always pushed, but gcc must know, they they are varargs). So simple hello world w/o including stdio don't work. Maybe I can do some work on this in egcs later (according to the docs, first varargs parameters are in registers, but this don't seems to be true). Other purpose is, that string functions and other builtins _must_ be compiled with same regparm as rest of code, because gcc use internal prototype w/o regparm attribute, so it will not link (this took me two hours figure out, why startup code is crasing because of this behaviour) Having library compiled with regparm=3 by default is inacceptable, because it is non standard, debugging and profiling don't work (and I believe it will require changes at both library and compiler side). Also I would expect big red sign "experimental" on the regparm library for a year or so, until compiler proves to be stable enought. Making reparm work really wasn't easy step for egcs folks. Also debugging of such hybrid programs is impossible IMO, because gdb don't know where function parameters comes from. So having multiple libraries is IMO only way. But I am open to all ideas. I would love to get this into oficial djgpp soon, so I am ready to follow your opinions :) Looking forward for regparmized allegro :) > > > Just last information that might interest you is the size of stripped > > libc compiled in various regparms: > > -mregparm=0 326kb > > -mregparm=3 320kb > > Hmmm, 6kb savings. Not a lot, but not bad either. What sort of speed The savings can slightly increase once __asmlinkage is killed (for example dpmi stubs can be much smaller) > differences do you get? Didn't tested much yet... I would expect them to be bigger than size savings, but not too large anyway. But there certainly are programs, where function calling overhead is important and such feature should help. It let's gcc schedule prologues/epilogues better. (current version of prologue have AGI stall. When parameters are on the stack, gcc don't know how to get them before all pushes are done. With registers this will not be problem, so prologue can be scheduled into function code). Only I've measured is sorting of integers using library qsort, where calling overhead is really important and I've god more than 100% speedup. In normal cases change is not really important...IMO I would love to know results on the compiler itself, but it will probably take some time until this get's stable enought to compile it. I really don't have any idea how stable current version really is. > > > Honza > > Just curious, but what does this mean? See you, bye, later? Honza is just another version of my name Jan. Jan = John and Hanz in german. So thats where Czech Honza comes from (it is easier to pronounce than Jan, so it is popular) See you, bye and later is in czech "nashledanou" or "ahoj" or "cau" Honza > > Bill > -- > Leave others their otherness.