diff options
author | Devang Patel <dpatel@apple.com> | 2008-03-05 00:36:59 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2008-03-05 00:36:59 +0000 |
commit | 4d519457d1ee72d14d62a5823b03449dc0e3df6e (patch) | |
tree | eb329a8d154e81633f3f4a75ca923e3e08c44f45 /lib/Transforms/Utils/UnifyFunctionExitNodes.cpp | |
parent | 45e99e4f297d118c5dc9afe150b13672ebae2701 (diff) |
Skip functions that return multiple values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47924 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/UnifyFunctionExitNodes.cpp')
-rw-r--r-- | lib/Transforms/Utils/UnifyFunctionExitNodes.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp b/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp index f9aaa23666..5d151ed70a 100644 --- a/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp +++ b/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp @@ -50,6 +50,11 @@ bool UnifyFunctionExitNodes::runOnFunction(Function &F) { // 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; |