Index: lib/CodeGen/TargetInfo.cpp =================================================================== --- lib/CodeGen/TargetInfo.cpp +++ lib/CodeGen/TargetInfo.cpp @@ -5519,7 +5519,7 @@ ABIArgInfo MipsABIInfo::classifyReturnType(QualType RetTy) const { uint64_t Size = getContext().getTypeSize(RetTy); - if (RetTy->isVoidType() || Size == 0) + if (RetTy->isVoidType()) return ABIArgInfo::getIgnore(); if (isAggregateTypeForABI(RetTy) || RetTy->isVectorType()) { Index: test/CodeGen/mips-zero-sized-struct.c =================================================================== --- /dev/null +++ test/CodeGen/mips-zero-sized-struct.c @@ -0,0 +1,12 @@ +// RUN: %clang -target mips-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck %s +// RUN: %clang -target mipsel-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck %s +// RUN: %clang -target mips64-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck %s +// RUN: %clang -target mips64el-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck %s + +// CHECK: define void @fn28(%struct.T2* noalias sret %agg.result, i8 signext %arg0) + +typedef struct T2 { } T2; +T2 T2_retval; +T2 fn28(char arg0) { + return T2_retval; +}