[CFLGraph] Fixed Select instruction handling
authorDavid Bolvansky <david.bolvansky@gmail.com>
Thu, 10 May 2018 11:47:36 +0000 (11:47 +0000)
committerDavid Bolvansky <david.bolvansky@gmail.com>
Thu, 10 May 2018 11:47:36 +0000 (11:47 +0000)
Summary:
Operand 0 is the condition, not the true value.

Use op 1 and op 2 as the correct values.

Reviewers: george.burgess.iv, nlopes, efriedma

Reviewed By: george.burgess.iv

Subscribers: craig.topper, rjmccall, lebedev.ri, llvm-commits

Differential Revision: https://reviews.llvm.org/D46343

llvm-svn: 331976

llvm/lib/Analysis/CFLGraph.h

index 6b4ec67..357951b 100644 (file)
@@ -541,6 +541,12 @@ template <typename CFLAA> class CFLGraphBuilder {
         break;
       }
 
+      case Instruction::Select: {
+        addAssignEdge(CE->getOperand(1), CE);
+        addAssignEdge(CE->getOperand(2), CE);
+        break;
+      }
+
       case Instruction::InsertElement:
       case Instruction::InsertValue: {
         addAssignEdge(CE->getOperand(0), CE);
@@ -573,7 +579,6 @@ template <typename CFLAA> class CFLGraphBuilder {
       case Instruction::AShr:
       case Instruction::ICmp:
       case Instruction::FCmp:
-      case Instruction::Select:
       case Instruction::ShuffleVector: {
         addAssignEdge(CE->getOperand(0), CE);
         addAssignEdge(CE->getOperand(1), CE);