diff --git a/llvm/include/llvm/Analysis/InstructionSimplify.h b/llvm/include/llvm/Analysis/InstructionSimplify.h index 03d7ad12c12d8..719cffc118f55 100644 --- a/llvm/include/llvm/Analysis/InstructionSimplify.h +++ b/llvm/include/llvm/Analysis/InstructionSimplify.h @@ -32,6 +32,7 @@ #define LLVM_ANALYSIS_INSTRUCTIONSIMPLIFY_H #include "llvm/Analysis/SimplifyQuery.h" +#include "llvm/IR/FPEnv.h" namespace llvm { @@ -44,6 +45,7 @@ class DataLayout; class DominatorTree; class Function; class Instruction; +class LoadInst; struct LoopStandardAnalysisResults; class Pass; template class SmallSetVector; diff --git a/llvm/include/llvm/Analysis/SimplifyQuery.h b/llvm/include/llvm/Analysis/SimplifyQuery.h index a10c0dc49fa22..25b8f9b5eaf10 100644 --- a/llvm/include/llvm/Analysis/SimplifyQuery.h +++ b/llvm/include/llvm/Analysis/SimplifyQuery.h @@ -9,7 +9,7 @@ #ifndef LLVM_ANALYSIS_SIMPLIFYQUERY_H #define LLVM_ANALYSIS_SIMPLIFYQUERY_H -#include "llvm/IR/PatternMatch.h" +#include "llvm/IR/Operator.h" namespace llvm { @@ -106,13 +106,7 @@ struct SimplifyQuery { /// If CanUseUndef is true, returns whether \p V is undef. /// Otherwise always return false. - bool isUndefValue(Value *V) const { - if (!CanUseUndef) - return false; - - using namespace PatternMatch; - return match(V, m_Undef()); - } + bool isUndefValue(Value *V) const; SimplifyQuery getWithoutDomCondCache() const { SimplifyQuery Copy(*this); diff --git a/llvm/include/llvm/Analysis/ValueTracking.h b/llvm/include/llvm/Analysis/ValueTracking.h index bab7c8868532d..a2fa8f6064e11 100644 --- a/llvm/include/llvm/Analysis/ValueTracking.h +++ b/llvm/include/llvm/Analysis/ValueTracking.h @@ -20,6 +20,7 @@ #include "llvm/IR/Constants.h" #include "llvm/IR/DataLayout.h" #include "llvm/IR/FMF.h" +#include "llvm/IR/Instructions.h" #include "llvm/IR/InstrTypes.h" #include "llvm/IR/Intrinsics.h" #include diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp index 16ee2ca49d0ec..3f456db1c51ac 100644 --- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp +++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp @@ -44,6 +44,7 @@ #include "llvm/IR/IntrinsicInst.h" #include "llvm/IR/Intrinsics.h" #include "llvm/IR/Operator.h" +#include "llvm/IR/PatternMatch.h" #include "llvm/IR/Type.h" #include "llvm/IR/User.h" #include "llvm/IR/Value.h" diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp index 1bba75d237fb2..c06984c0d4943 100644 --- a/llvm/lib/Analysis/InstructionSimplify.cpp +++ b/llvm/lib/Analysis/InstructionSimplify.cpp @@ -7238,6 +7238,14 @@ const SimplifyQuery getBestSimplifyQuery(AnalysisManager &AM, } template const SimplifyQuery getBestSimplifyQuery(AnalysisManager &, Function &); + +bool SimplifyQuery::isUndefValue(Value *V) const { + if (!CanUseUndef) + return false; + + return match(V, m_Undef()); +} + } // namespace llvm void InstSimplifyFolder::anchor() {}