This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] rs6000: Fix crash with big stack clash interval (PR82674)


On 10/31/2017 09:32 AM, Segher Boessenkool wrote:
> On Tue, Oct 31, 2017 at 09:12:25AM -0600, Jeff Law wrote:
>> On 10/31/2017 03:41 AM, Segher Boessenkool wrote:
>>> If the user asks for a stack clash probe interval of 64kB, we currently
>>> generate a "stdu rX,-65536(r1)" instruction.  That instruction does not
>>> exist (the offset is a 16-bit signed number).  If the offset is too big
>>> we should force it into a register and generate a "stdux rX,rY,r1"
>>> instruction, instead.
>>>
>>> Bootstrapped and regression checked on powerpc64-linux {-m32,-m64};
>>> committing to trunk.
>>>
>>>
>>> Segher
>>>
>>>
>>> 2017-10-31  Segher Boessenkool  <segher@kernel.crsahing.org>
>>>
>>> 	PR target/82674
>>> 	* config/rs6000/rs6000.md (allocate_stack): Force update interval
>>> 	into a register if it does not fit into an immediate offset field.
>> :-)  That's one I had a fix for.  But the issues with large probing
>> intervals are much more serious.  In particular dealing with large
>> probing intervals for allocations in the prologue is a significantly
>> tougher problem due to the lack of a free hard reg.
> 
> Yes, but I haven't seen testcases for that?  The PR was just this.
 :-)  I just turned stack clash on by default, cranked up the probing
interval and ran the testsuite and started looking at the root cause of
the failures.


> 
> We do have more than one register we can use here, FWIW.  It gets a
> bit nasty because it depends on which ABI you're on exactly, which.
BIg sigh...  There are times I wonder if I'd be happier as an app
developer or database junkie.  Instead I chose to do low level stuff :(



jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]