Hi Camm,

No, I don't do maintenance of gcc, I just help out where I can with
Debian/ia64 (speaking of which, I have a bug investigation to follow up
on). I'm going to have to check what version of gcc I have installed on my
machines. If you can send me a test case or perhaps (simple!!) instructions
on how to reproduce this, I can try it on my machine (assuming I have a
different gcc version). It would be a waste, IMO, to file a bug (upstream)
that is fixed in a later version of gcc, unless upstream is still actively
maintaining that branch and looking for fixes. I imagine Debian
maintainers, however, would be interested in seeing whatever their blessed
version of gcc have a code generation bug fixed, even if it is just ia64.




On Fri, Oct 18, 2013 at 2:37 PM, Camm Maguire <[email protected]>wrote:

> Greetings!
>
> > Now `cmp.eq` R8 does equal R14 here, doesn't it? This would make p6 = 1
> and p7 = 0
> >
> > This clearly isn't doing the comparison you were hoping for since this
> is always true.
> >
>
> Yep.
>
> >
> > In your first message you wrote:
> >
> >      if(((V459))==((object)&Cnil_body)){
> >
> > But here I see:
> >      if(((V459))==Cnil){
> >
> > OK, so what exactly is going on here? Is Cnil / Cnil_body a constant
> > value (address of a function) and V459 some function pointer variable
> > it is being compared against? If so, then I would say it is generating
> > the wrong code. Notice that:
> >
>
> Yes, Cnil is a macro defined as &Cnil_body.  Cnil_body is a constant
> structure defined as a global.
>
>
> > V459 == 0x6000000004af3450  == r41 == r14 == r8
> >
> > It should be loading the value of Cnil / Cnil_body (const) to do the
> > comparison, instead it's comparing a register against another register
> > it just copied from!
>
> Yes, I agree.  I couldn't quite parse the assembly syntax, but your
> comments make it clear.
>
> >     Please let me know if this helps.
> >
> > This helps to an extent, but a test case would be better. This code
> > looks almost machine generated (variable names/labels are
> > mechnical-looking), and it's hard to grasp without full context; but
>
> This is gcl generated C code.
>
> > the disassembly is huge by itself to just "read". I think I have made
> > sense of it, and I think I would agree. I bet this (and perhaps
> > another bug, yet unknown) is the cause of some ia64 weirdness.
>
> I think you've grasped it very clearly.  So I guess I should file a gcc
> bug?  Wonder how long that will take to process.... You don't happen to
> maintain gcc for ia64, do you?
>
> Take care,
> --
> Camm Maguire                                        [email protected]
> ==========================================================================
> "The earth is but one country, and mankind its citizens."  --  Baha'u'llah
>

Reply via email to