Re: [PATCH 1/5] symaddr: s/insn->symbol/insn->src/

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Aug 25, 2018 at 09:54:32PM +0100, Ramsay Jones wrote:
> On 25/08/18 16:43, Luc Van Oostenryck wrote:
> > diff --git a/cse.c b/cse.c
> > index 1395a8af3..22dfd4ba5 100644
> > --- a/cse.c
> > +++ b/cse.c
> > @@ -76,6 +76,7 @@ void cse_collect(struct instruction *insn)
> >  	/* Unary */
> >  	case OP_NOT: case OP_NEG:
> >  	case OP_FNEG:
> > +	case OP_SYMADDR:
> >  		hash += hashval(insn->src1);
> 
> s/src1/src/ ? (We fall through from the binary cases above, so
> this compares to the use of the 'src2' field there. However, I
> would even prefer divorcing the binary and unary cases, use 'src'
> here and _add_ a 'break' and 'src1' there! ;-) ).

But then exactly the same code would need to be duplicated for
src1 and for src, here and in liveness.c too. In fact I have some
patches that do exactly the opposite ...

I think that the most important is to be well aware that src1, src,
cond, _cond, addr, phi_src, base, func (and the now gone symbol, and
phi_var in the new SSA code) denote exactly the same field and exist
more to have a readable definition of struct instruction.
It's of course, much better, in general, to use the/a good name for
each instructions but in some performance critical parts like here
using this aliasing property is, IMO, not a bad thing, certainly
when the code show clearly what's happening.

-- Luc



[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux