What | Removed | Added |
---|---|---|
CC | johannespfau@gmail.com |
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?