diff options
author | Akira Hatanaka <ahatanak@gmail.com> | 2011-08-01 18:09:58 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanak@gmail.com> | 2011-08-01 18:09:58 +0000 |
commit | df425dbf04b6bc118d9813ddd99b7ea1e90ba7d9 (patch) | |
tree | 8341b04f178021ef174e3e4778a0a2e02f83fd7f /clang/lib/CodeGen/TargetInfo.cpp | |
parent | af8e96c185b2994f8b2cc051d1691f616acc801a (diff) | |
download | bcm5719-llvm-df425dbf04b6bc118d9813ddd99b7ea1e90ba7d9.tar.gz bcm5719-llvm-df425dbf04b6bc118d9813ddd99b7ea1e90ba7d9.zip |
Pass records with non-trivial destructors or constructors indirectly.
llvm-svn: 136630
Diffstat (limited to 'clang/lib/CodeGen/TargetInfo.cpp')
-rw-r--r-- | clang/lib/CodeGen/TargetInfo.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index ea0cec3d919..3866c2b2e50 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -2934,6 +2934,11 @@ ABIArgInfo MipsABIInfo::classifyArgumentType(QualType Ty) const { if (getContext().getTypeSize(Ty) == 0) return ABIArgInfo::getIgnore(); + // Records with non trivial destructors/constructors should not be passed + // by value. + if (isRecordWithNonTrivialDestructorOrCopyConstructor(Ty)) + return ABIArgInfo::getIndirect(0, /*ByVal=*/false); + return ABIArgInfo::getIndirect(0); } |