disable IPSCCP support for multiple return values, it is buggy, so just
authorChris Lattner <sabre@nondot.org>
Mon, 2 Nov 2009 18:22:51 +0000 (18:22 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 2 Nov 2009 18:22:51 +0000 (18:22 +0000)
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
test/Transforms/SCCP/2008-03-10-sret.ll
test/Transforms/SCCP/ipsccp-basic.ll

index 384b0baaa597fcc2709a644d9b8a3a3cfeb2a473..42791d660d68a801683a19eb83bd5fa6301f8175 100644 (file)
@@ -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<StructType>(F->getReturnType()))
       Solver.AddTrackedFunction(F);
     
     // If this function only has direct calls that we can see, we can track its
index 85bcaf4d2db4a0aa67ae419fb8a698992bbe52d3..ec99e292a76e394d7387e2fcac7eb6c771c4bb89 100644 (file)
@@ -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) {
index 4c3c1cf054c7dea82dbdc290c8b19f048f6b0986..f015834f87cb462283b39ef2ce7bf07985c6fe8d 100644 (file)
@@ -1,4 +1,5 @@
 ; RUN: opt < %s -ipsccp -S | FileCheck %s
+; XFAIL: *
 
 ;;======================== test1