Skip functions that return multiple values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47924 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp b/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
index f9aaa23..5d151ed 100644
--- a/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
+++ b/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
@@ -50,6 +50,11 @@
   // Loop over all of the blocks in a function, tracking all of the blocks that
   // return.
   //
+
+  // PHINode can not handle aggregates returned by multiple value ret
+  // instructions. TODO: Handle each return value independently.
+  if (isa<StructType>(F.getReturnType()))
+    return false;
   std::vector<BasicBlock*> ReturningBlocks;
   std::vector<BasicBlock*> UnwindingBlocks;
   std::vector<BasicBlock*> UnreachableBlocks;