diff --git a/gen/abi-x86-64.cpp b/gen/abi-x86-64.cpp index ac3ab57f..6d7fb285 100644 --- a/gen/abi-x86-64.cpp +++ b/gen/abi-x86-64.cpp @@ -562,7 +562,14 @@ bool X86_64TargetABI::returnInArg(TypeFunction* tf) { return false; Classification cl = classify(rt); - return cl.isMemory; + if (cl.isMemory) { + assert(state().int_regs > 0 + && "No int registers available when determining sret-ness?"); + // An sret parameter takes an integer register. + state().int_regs--; + return true; + } + return false; } }