[PATCH] D32718: [NewGVN] Don't derive incorrect implications.

Davide Italiano via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon May 1 15:39:28 PDT 2017


This revision was automatically updated to reflect the committed changes.
Closed by commit rL301849: [NewGVN] Don't derive incorrect implications. (authored by davide).

Changed prior to commit:
  https://reviews.llvm.org/D32718?vs=97339&id=97351#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D32718

Files:
  llvm/trunk/lib/Transforms/Scalar/NewGVN.cpp
  llvm/trunk/test/Transforms/NewGVN/pr32852.ll


Index: llvm/trunk/lib/Transforms/Scalar/NewGVN.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Scalar/NewGVN.cpp
+++ llvm/trunk/lib/Transforms/Scalar/NewGVN.cpp
@@ -1628,15 +1628,15 @@
         if (PBranch->TrueEdge) {
           // If we know the previous predicate is true and we are in the true
           // edge then we may be implied true or false.
-          if (CmpInst::isImpliedTrueByMatchingCmp(OurPredicate,
-                                                  BranchPredicate)) {
+          if (CmpInst::isImpliedTrueByMatchingCmp(BranchPredicate,
+                                                  OurPredicate)) {
             addPredicateUsers(PI, I);
             return createConstantExpression(
                 ConstantInt::getTrue(CI->getType()));
           }
 
-          if (CmpInst::isImpliedFalseByMatchingCmp(OurPredicate,
-                                                   BranchPredicate)) {
+          if (CmpInst::isImpliedFalseByMatchingCmp(BranchPredicate,
+                                                   OurPredicate)) {
             addPredicateUsers(PI, I);
             return createConstantExpression(
                 ConstantInt::getFalse(CI->getType()));
Index: llvm/trunk/test/Transforms/NewGVN/pr32852.ll
===================================================================
--- llvm/trunk/test/Transforms/NewGVN/pr32852.ll
+++ llvm/trunk/test/Transforms/NewGVN/pr32852.ll
@@ -0,0 +1,24 @@
+; Make sure GVN doesn't incorrectly think the branch terminating
+; bb2 has a constant condition.
+; RUN: opt -S -newgvn %s | FileCheck %s
+
+ at a = common global i32 0
+ at patatino = private unnamed_addr constant [3 x i8] c"0\0A\00"
+
+define void @tinkywinky() {
+bb:
+  %tmp = load i32, i32* @a
+  %tmp1 = icmp sge i32 %tmp, 0
+  br i1 %tmp1, label %bb2, label %bb7
+bb2:
+  %tmp4 = icmp sgt i32 %tmp, 0
+; CHECK: br i1 %tmp4, label %bb5, label %bb7
+  br i1 %tmp4, label %bb5, label %bb7
+bb5:
+  %tmp6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @patatino, i32 0, i32 0))
+  br label %bb7
+bb7:
+  ret void
+}
+
+declare i32 @printf(i8*, ...)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32718.97351.patch
Type: text/x-patch
Size: 2167 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170501/27c2cc86/attachment.bin>


More information about the llvm-commits mailing list