On 20/09/16 16:30, Bernd Schmidt wrote: > On 09/20/2016 05:18 PM, Jeff Law wrote: >>> I assume HARD_FRAME_POINTER_REGNUM is never zero. >> It could be zero. It's just a hard register number. No target has the >> property that its hard frame pointer register is 0 though :-) > > git blame to the rescue. The current state comes from one of tbsaunde's > cleanup patches: > >> diff --git a/gcc/regrename.c b/gcc/regrename.c > index 174d3b5..e5248a5 100644 > --- a/gcc/regrename.c > +++ b/gcc/regrename.c > @@ -442,12 +442,10 @@ rename_chains (void) > continue; > > if (fixed_regs[reg] || global_regs[reg] > -#if !HARD_FRAME_POINTER_IS_FRAME_POINTER > - || (frame_pointer_needed && reg == HARD_FRAME_POINTER_REGNUM) > -#else > - || (frame_pointer_needed && reg == FRAME_POINTER_REGNUM) > -#endif > - ) > + || (!HARD_FRAME_POINTER_IS_FRAME_POINTER && frame_pointer_needed > + && reg == HARD_FRAME_POINTER_REGNUM) > + || (HARD_FRAME_POINTER_REGNUM && frame_pointer_needed
Surely, based on the logic of the previous ifdefs, this line should read + || (HARD_FRAME_POINTER_IS_FRAME_POINTER && frame_pointer_needed R.