From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jamie Lokier Subject: Re: gcc inlining heuristics was Re: [PATCH -v7][RFC]: mutex: implement adaptive spinning Date: Mon, 12 Jan 2009 23:01:17 +0000 Message-ID: <20090112230117.GC26430@shareable.org> References: <20090112001255.GR26290@one.firstfloor.org> <20090112005228.GS26290@one.firstfloor.org> <496B86B5.3090707@t-online.de> <20090112193201.GA23848@one.firstfloor.org> <496B9890.1090002@zytor.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: "H. Peter Anvin" , Andi Kleen , Bernd Schmidt , David Woodhouse , Andrew Morton , Ingo Molnar , Harvey Harrison , Chris Mason , Peter Zijlstra , Steven Rostedt , paulmck@linux.vnet.ibm.com, Gregory Haskins , Matthew Wilcox , Linux Kernel Mailing List , linux-fsdevel , linux-btrfs , Thomas Gleixner , Nick Piggin , Peter Morreale , Sven Dietrich , jh@suse.cz To: Linus Torvalds Return-path: In-Reply-To: List-ID: Linus Torvalds wrote: > > This is about storage allocation, not aliases. Storage allocation only > > depends on lifetime. > > Well, the thing is, code motion does extend life-times, and if you think > you can move stores across each other (even when you can see that they > alias statically) due to type-based alias decisions, that does essentially > end up making what _used_ to be disjoint lifetimes now be potentially > overlapping. Sometimes code motion makes code faster and/or smaller but use more stack space. If you want to keep the stack use down, it blocks some other optimisations. Register allocation is similar: code motion optimisations may use more registers due to overlapping lifetimes, which causes more register spills and changes the code. The two interact; it's not trivial to optimise fully. -- Jamie