From e77e14ecf17bba5f9e2ef43d8c3dbc9c86685287 Mon Sep 17 00:00:00 2001 From: Steven Wu Date: Tue, 13 Dec 2022 10:42:04 -0800 Subject: [PATCH] Workaround an assertion failure during module build After the change in https://reviews.llvm.org/D131858, clang cannot bootstrap itself with modules due to assertion failure: (lvaluePath->getType() == elemTy && "Unexpected type reference!") Workaround the assertion by converting some of the includes into forward declares. Reviewed By: arphaman Differential Revision: https://reviews.llvm.org/D139956 --- llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h | 1 - llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h | 6 +++++- llvm/include/llvm/ExecutionEngine/Orc/SpeculateAnalyses.h | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h b/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h index 30af7a6..89bcc6e 100644 --- a/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h +++ b/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h @@ -39,7 +39,6 @@ #include "llvm/IR/Type.h" #include "llvm/Support/Casting.h" #include "llvm/Support/raw_ostream.h" -#include "llvm/Transforms/Utils/ValueMapper.h" #include #include #include diff --git a/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h b/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h index d659d6a..311bbbf 100644 --- a/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h +++ b/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h @@ -18,10 +18,11 @@ #include "llvm/ExecutionEngine/JITSymbol.h" #include "llvm/ExecutionEngine/Orc/Core.h" #include "llvm/ExecutionEngine/Orc/OrcABISupport.h" +#include "llvm/IR/ValueHandle.h" +#include "llvm/IR/ValueMap.h" #include "llvm/Support/Error.h" #include "llvm/Support/Memory.h" #include "llvm/Support/Process.h" -#include "llvm/Transforms/Utils/ValueMapper.h" #include #include #include @@ -47,6 +48,9 @@ class Twine; class Value; class MCDisassembler; class MCInstrAnalysis; +class ValueMaterializer; + +using ValueToValueMapTy = ValueMap; namespace jitlink { class LinkGraph; diff --git a/llvm/include/llvm/ExecutionEngine/Orc/SpeculateAnalyses.h b/llvm/include/llvm/ExecutionEngine/Orc/SpeculateAnalyses.h index 6756572..2db6e17 100644 --- a/llvm/include/llvm/ExecutionEngine/Orc/SpeculateAnalyses.h +++ b/llvm/include/llvm/ExecutionEngine/Orc/SpeculateAnalyses.h @@ -13,7 +13,6 @@ #ifndef LLVM_EXECUTIONENGINE_ORC_SPECULATEANALYSES_H #define LLVM_EXECUTIONENGINE_ORC_SPECULATEANALYSES_H -#include "llvm/Analysis/BranchProbabilityInfo.h" #include "llvm/ExecutionEngine/Orc/Core.h" #include "llvm/ExecutionEngine/Orc/Speculation.h" @@ -21,6 +20,8 @@ namespace llvm { +class BranchProbabilityInfo; + namespace orc { // Provides common code. -- 2.7.4