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 <seg...@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