On 07/10/2011 03:01 PM, H.J. Lu wrote: > We only want to promote function parameters passed/returned in register. > But I can't tell if a value will be passed in register or memory inside of > TARGET_FUNCTION_VALUE. So when FOR_RETURN is 1, we don't > promote. Even if we don't promote it explicitly, hardware still zero-extends > it for us. So it isn't a real issue.
The hardware *usually* zero-extends. It all depends on where the data is coming from. Without certainty, i.e. actually representing it properly, you're designing a broken ABI. What you wrote above re T_F_V not being able to tell register or memory doesn't make sense. Did you really mean inside TARGET_PROMOTE_FUNCTION_MODE? And why exactly wouldn't you be able to tell there? Can you not find out via a call to ix86_return_in_memory? r~