From 2bbbbd6ac823181f8c3cceb55482254c4255a65a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 2 Nov 2009 18:22:51 +0000 Subject: [PATCH] disable IPSCCP support for multiple return values, it is buggy, so just disable it until I can fix it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85810 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/SCCP.cpp | 3 ++- test/Transforms/SCCP/2008-03-10-sret.ll | 2 ++ test/Transforms/SCCP/ipsccp-basic.ll | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp index 384b0baaa59..42791d660d6 100644 --- a/lib/Transforms/Scalar/SCCP.cpp +++ b/lib/Transforms/Scalar/SCCP.cpp @@ -1650,7 +1650,8 @@ bool IPSCCP::runOnModule(Module &M) { // If this is a strong or ODR definition of this function, then we can // propagate information about its result into callsites of it. - if (!F->mayBeOverridden()) + if (!F->mayBeOverridden() && + !isa(F->getReturnType())) Solver.AddTrackedFunction(F); // If this function only has direct calls that we can see, we can track its diff --git a/test/Transforms/SCCP/2008-03-10-sret.ll b/test/Transforms/SCCP/2008-03-10-sret.ll index 85bcaf4d2db..ec99e292a76 100644 --- a/test/Transforms/SCCP/2008-03-10-sret.ll +++ b/test/Transforms/SCCP/2008-03-10-sret.ll @@ -4,6 +4,8 @@ ; RUN: grep {%mrv1 = insertvalue %T %mrv, i32 17, 1} %t ; RUN: grep {ret %T %mrv1} %t +; XFAIL: * + %T = type {i32,i32} define internal {i32, i32} @bar(i32 %A) { diff --git a/test/Transforms/SCCP/ipsccp-basic.ll b/test/Transforms/SCCP/ipsccp-basic.ll index 4c3c1cf054c..f015834f87c 100644 --- a/test/Transforms/SCCP/ipsccp-basic.ll +++ b/test/Transforms/SCCP/ipsccp-basic.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -ipsccp -S | FileCheck %s +; XFAIL: * ;;======================== test1