[llvm-dev] SRET consistency between declaration and call site
Joerg Sonnenberger via llvm-dev
llvm-dev at lists.llvm.org
Sat Oct 3 02:29:59 PDT 2015
Hello,
while debugging assertions when building libm for 32bit Sparc, I hit the
following IR:
complex_mul_libcall:
call void @__muldc3({ double, double }* sret %tmp, double %conv, double 0.000000e+00, double %a.real, double %a.imag) #2
...
declare void @__muldc3({ double, double }*, double, double, double, double)
The same IR is essentially generated for i386 too, so it is not Sparc
specific. Unlike i386, Sparc has an assertion in its codegen that the
function called must have the sret attribute on corresponding argument.
The question is now: is the Sparc assertion correct? If yes, this
inconsistency should be checked in the IR verifier, IMO.
Joerg
More information about the llvm-dev
mailing list