On 09/02/2016 02:35 AM, Uros Bizjak wrote: > --q-- > /* Pass float and _Complex float variable arguments by reference. > This avoids 64-bit store from a FP register to a pretend args save area > and subsequent 32-bit load from the saved location to a FP register. > > Note that 32-bit loads and stores to/from a FP register on alpha reorder > bits to form a canonical 64-bit value in the FP register. This fact > invalidates compiler assumption that 32-bit FP value lives in the lower > 32-bits of the passed 64-bit FP value, so loading the 32-bit value from > the stored 64-bit location using 32-bit FP load is invalid on alpha. > > This introduces sort of ABI incompatibility, but until _Float32 was > introduced, C-family languages promoted 32-bit float variable arg to > a 64-bit double, and it was not allowed to pass float as a varible > argument. Passing _Complex float as a variable argument never > worked on alpha. Thus, we have no backward compatibility issues > to worry about, and passing un-promoted _Float32 and _Complex float > as a variable argument will actually work in the future. */ > --/q--
This sounds like a good plan to me. > (I was not able to find the > authoritative OSF/1 ABI document on the net...) As far as I know, it was never available online. I have a paper copy. r~