Author: dsanders Date: Mon Nov 24 15:30:06 2014 New Revision: 222690 URL: http://llvm.org/viewvc/llvm-project?rev=222690&view=rev Log: Merging r217147: ------------------------------------------------------------------------ r217147 | dsanders | 2014-09-04 14:28:14 +0100 (Thu, 04 Sep 2014) | 18 lines
[mips] Zero-sized structs cannot be ignored in MipsABIInfo::classifyReturnType() for O32 Summary: They are returned indirectly which causes the other arguments to move to the next argument slot. With this, utils/ABITest does not discover any failing cases in the first 500 attempts on big/little endian for O32. Previously some of these failed. Also tested N32/N64 little endian (big endian has other known issues) with no issues. Reviewers: atanasyan Reviewed By: atanasyan Subscribers: atanasyan, cfe-commits Differential Revision: http://reviews.llvm.org/D4811 ------------------------------------------------------------------------ Added: cfe/branches/release_35/test/CodeGen/mips-zero-sized-struct.c - copied unchanged from r217147, cfe/trunk/test/CodeGen/mips-zero-sized-struct.c Modified: cfe/branches/release_35/ (props changed) cfe/branches/release_35/lib/CodeGen/TargetInfo.cpp Propchange: cfe/branches/release_35/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Nov 24 15:30:06 2014 @@ -1,4 +1,4 @@ /cfe/branches/type-system-rewrite:134693-134817 -/cfe/trunk:213609,213611,213613,213741,213834,213840,213902,213912-213913,213993,213998-213999,214008,214025,214050,214060,214119,214208,214222,214369,214390,214471,214662,214734-214735,214777,215046,215229,215245,215609,215618,215806-215808,216531,216572,216619,220874 +/cfe/trunk:213609,213611,213613,213741,213834,213840,213902,213912-213913,213993,213998-213999,214008,214025,214050,214060,214119,214208,214222,214369,214390,214471,214662,214734-214735,214777,215046,215229,215245,215609,215618,215806-215808,216531,216572,216619,217147,220874 /cfe/trunk/test:170344 /cfe/trunk/test/SemaTemplate:126920 Modified: cfe/branches/release_35/lib/CodeGen/TargetInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_35/lib/CodeGen/TargetInfo.cpp?rev=222690&r1=222689&r2=222690&view=diff ============================================================================== --- cfe/branches/release_35/lib/CodeGen/TargetInfo.cpp (original) +++ cfe/branches/release_35/lib/CodeGen/TargetInfo.cpp Mon Nov 24 15:30:06 2014 @@ -5506,7 +5506,12 @@ MipsABIInfo::returnAggregateInRegs(QualT ABIArgInfo MipsABIInfo::classifyReturnType(QualType RetTy) const { uint64_t Size = getContext().getTypeSize(RetTy); - if (RetTy->isVoidType() || Size == 0) + if (RetTy->isVoidType()) + return ABIArgInfo::getIgnore(); + + // O32 doesn't treat zero-sized structs differently from other structs. + // However, N32/N64 ignores zero sized return values. + if (!IsO32 && Size == 0) return ABIArgInfo::getIgnore(); if (isAggregateTypeForABI(RetTy) || RetTy->isVectorType()) { _______________________________________________ llvm-branch-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/llvm-branch-commits
