[Bug 115] Union literals as rvalues yields different values every run

gdc-bugzilla at gdcproject.org gdc-bugzilla at gdcproject.org
Tue Apr 8 05:34:17 PDT 2014


http://bugzilla.gdcproject.org/show_bug.cgi?id=115

--- Comment #4 from Iain Buclaw <ibuclaw at gdcproject.org> ---
(In reply to comment #3)
> (In reply to comment #1)
> > The problem starts in the frontend, optimize.c(DotVarExp::optimize).
> > It optimizes 'func(_f(a).i)' into 'func (a)', so it produces a call to func
> > with an incorrectly typed parameter.
> > 
> > The backend then tries to pass 'a' in floating point register leading to
> > these strange results.
> > 
> > @Iain do you think this should be fixed in the frontend or in the glue layer
> > by doing an explicit conversion? I also wonder why the GCC backend didn't
> > catch this problem, I thought it should know there's a type mismatch between
> > the function declaration and the actual call?
> 
> You could do a view convert in SymbolExp if 'this->type' and
> 'this->var->type' mismatch.  There'd be no way to enforce that we are
> dealing with a union optimisation though...

*SymbolExp::toElem

-- 
You are receiving this mail because:
You are watching all bug changes.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/d.gnu/attachments/20140408/0c5e8d00/attachment.html>


More information about the D.gnu mailing list