From e104f1bccbf828dcbe4e82709c8ca97d8bf018d5 Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Tue, 23 Nov 2010 15:28:14 +0000 Subject: [PATCH] Propagate LeftDistributes and RightDistributes into their only uses. Stylistic improvement suggested by Frits van Bommel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120026 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/InstCombine/InstructionCombining.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/Transforms/InstCombine/InstructionCombining.cpp b/lib/Transforms/InstCombine/InstructionCombining.cpp index 9a203f8512e..22651e30f38 100644 --- a/lib/Transforms/InstCombine/InstructionCombining.cpp +++ b/lib/Transforms/InstCombine/InstructionCombining.cpp @@ -304,14 +304,11 @@ Instruction *InstCombiner::SimplifyDistributed(BinaryOperator &I) { Instruction::BinaryOps OuterOpcode = I.getOpcode(); // op Instruction::BinaryOps InnerOpcode = Op0->getOpcode(); // op' - // Does "X op' (Y op Z)" always equal "(X op' Y) op (X op' Z)"? - bool LeftDistributes = LeftDistributesOverRight(InnerOpcode, OuterOpcode); - // Does "(X op Y) op' Z" always equal "(X op' Z) op (Y op' Z)"? - bool RightDistributes = RightDistributesOverLeft(OuterOpcode, InnerOpcode); // Does "X op' Y" always equal "Y op' X"? bool InnerCommutative = Instruction::isCommutative(InnerOpcode); - if (LeftDistributes) + // Does "X op' (Y op Z)" always equal "(X op' Y) op (X op' Z)"? + if (LeftDistributesOverRight(InnerOpcode, OuterOpcode)) // Does the instruction have the form "(A op' B) op (A op' D)" or, in the // commutative case, "(A op' B) op (C op' A)"? if (A == C || (InnerCommutative && A == D)) { @@ -328,7 +325,8 @@ Instruction *InstCombiner::SimplifyDistributed(BinaryOperator &I) { return BinaryOperator::Create(InnerOpcode, A, RHS); } - if (RightDistributes) + // Does "(X op Y) op' Z" always equal "(X op' Z) op (Y op' Z)"? + if (RightDistributesOverLeft(OuterOpcode, InnerOpcode)) // Does the instruction have the form "(A op' B) op (C op' B)" or, in the // commutative case, "(A op' B) op (B op' D)"? if (B == D || (InnerCommutative && B == C)) { -- 2.34.1