Fix a typo that was killing GVNPRE of select instructions.
authorOwen Anderson <resistor@mac.com>
Wed, 4 Jul 2007 18:26:18 +0000 (18:26 +0000)
committerOwen Anderson <resistor@mac.com>
Wed, 4 Jul 2007 18:26:18 +0000 (18:26 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37871 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/GVNPRE.cpp
test/Transforms/GVNPRE/2007-07-04-CleanSelect.ll [new file with mode: 0644]

index 33926ea127abb63b6edc498cf34c9f31dc4a64e1..5d52aa48875504c7fe7407e5c825e945f0ba675e 100644 (file)
@@ -1040,7 +1040,7 @@ void GVNPRE::topo_sort(SmallPtrSet<Value*, 16>& set, std::vector<Value*>& vec) {
           stack.push_back(r);
         else if (m != 0 && isa<Instruction>(m) &&
                  visited.count(m) == 0)
-          stack.push_back(r);
+          stack.push_back(m);
         else {
           vec.push_back(e);
           visited.insert(e);
diff --git a/test/Transforms/GVNPRE/2007-07-04-CleanSelect.ll b/test/Transforms/GVNPRE/2007-07-04-CleanSelect.ll
new file mode 100644 (file)
index 0000000..d72e2e1
--- /dev/null
@@ -0,0 +1,9 @@
+; RUN: llvm-as < %s | opt -gvnpre | llvm-dis
+
+define i32* @_ZN6Solver9propagateEv(i32* %this) {
+entry:
+       %tmp15.i48 = load i8* null              ; <i8> [#uses=2]
+       %tmp64.i.i51 = sub i8 0, %tmp15.i48             ; <i8> [#uses=1]
+       %tmp231.i52 = select i1 false, i8 %tmp15.i48, i8 %tmp64.i.i51           ; <i8> [#uses=0]
+       ret i32* null
+}