sret on scalars

I am needing to return i128 as a shadow return due to abi issues on
alpha. The problem I am running into is the code for doing that with
scalars (currently only used for vectors, as far as I can tell) sets
the sret on the parameter. If I just go this path, then I am setting
sret on an integer pointer, which verify objects too. LangRef doesn't
say scalars are allowed to have sret set, but sret is used for
vectors.

So my question is: should I, when updating the llvm-gcc, not set sret
on my i128 shadow returns (also on f128), or should Verify accept sret
on scalar pointers, not just struct or vector pointers?

Andrew

Hey Andrew,

sret doesn't make sense on scalars or vectors. Where are you seeing it work with vectors?

-Chris

Ok. There is a a HandleScalarShadowResult, which is an implementation
subset of HandleAggregateShadowResult (has but doesn't handle the
return-shadow-pointer-from-function flag it takes). The comments and
code path led me to believe it applied to Vector types, though
Verifier didn't. Perhaps it is a dead code path, I don't know.

I guess that means I need to duplicate or generalize some stuff.

Anderw