On Fri, 2015-10-02 at 11:18 -0400, Rich Felker wrote:
> Thanks! This is very helpful. gcc style has changed a lot since the
> old patch was submitted so I think it makes sense to update it to
> match current practices rather than just making it work. I'll try to
> focus on any functional problems first though so as to keep a working
> patch against 5.2 as well and ease backporting to earlier versions (if
> anyone wants to do that on their own; certainly I don't expect it to
> happen in upstream gcc).
Let's see what the final patch will look like.
> There are a few call sites where the symbol returned is actually used.
> Would you want me to just do something like:
>
> struct function_symbol_result funcsym = function_symbol(...);
>
> then use funcsym.symbol and funcsym.label?
If you need both return values, then yes. But without the "struct". If
"function_symbol_result" is too long feel free to come up with a shorter
name.
>
> Would you object to shorter member names .sym and .lab?
No, that's OK, too.
> Uhg, not sure how I missed that. (Well, yes I am -- it's C++'s
> fault;-) I'll try to figure out what's going on.
I think the overloaded function from your patch is simply not invoked by
anything. You'd probably have to merge it into the already existing
one.
> > > +(define_insn "sibcalli_fdpic"
> > > + [(call (mem:SI (match_operand:SI 0 "register_operand" "k"))
> > > + (match_operand 1 "" ""))
> > > + (use (reg:SI FPSCR_MODES_REG))
> > > + (use (reg:SI PIC_REG))
> > > + (return)]
> > > + "TARGET_SH1 && TARGET_FDPIC"
> > > ^^^
> >
> > This is maybe slightly impossible, because of ..
>
> Because SH5 is deprecated?
No, because ...
> > > + if (TARGET_FDPIC
> > > + && (TARGET_SHMEDIA || TARGET_SHCOMPACT || !TARGET_SH2))
> > > + sorry ("non-SH2 FDPIC");
> > > +
... this refuses operation if FDPIC is used with anything "less than"
SH2, i.e. SH1. I think the condition above should be "TARGET_SH2 &&
TARGET_FDPIC".
> OK, but I'm not really familiar with this part of the code; I just
> adapted the patch by pattern. There are a lot of places with
> (match_operand N "" ""); should the empty strings be dropped for all
> of them?
Yes, there are several places with empty predicate/constraint strings.
They could be removed with a big patch, but for the moment, just don't
add new ones.
> > Maybe it could be useful to replace all "gen_rtx_REG (Pmode, PIC_REG)"
> > in the patch with something like 'get_t_reg_rtx'. Depends on how many
> > times this gen_rtx_REG is invoked.
>
> I'm fairly indifferent to this. Neither is significantly shorter or
> more readable.
It's about the amount of rtx objects generated. But that can be checked
out later.
> I'm a bit confused by the fact that basically ALL of the traffic on
> the linux-sh list is "shmedia" stuff. Is that unrelated to the actual
> SH5/SHMEDIA and just a brand name that got co-opted for an ARM-based
> SoC?
Yes, looks like.
> If so, is there anything that can be done to get it off the
> linux-sh list so that it doesn't bury mail about the actual SH
> ISA/platform?
Ask there. It doesn't show up here :)
Cheers,
Oleg