Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/coreclr/jit/gentree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8178,7 +8178,7 @@ GenTree* Compiler::gtNewPhysRegNode(regNumber reg, var_types type)
{
#ifdef TARGET_ARM64
assert(genIsValidIntReg(reg) || (reg == REG_SPBASE) || (reg == REG_FFR));
#else
#elif !defined(TARGET_WASM)
assert(genIsValidIntReg(reg) || (reg == REG_SPBASE));
#endif
GenTree* result = new (this, GT_PHYSREG) GenTreePhysReg(reg, type);
Expand Down
27 changes: 10 additions & 17 deletions src/coreclr/jit/llvm.h
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ class Llvm
{
private:
static const unsigned SHADOW_STACK_ARG_INDEX = 0;
static const unsigned DEFAULT_SHADOW_STACK_ALIGNMENT = TARGET_POINTER_SIZE;
static const unsigned ORIGINAL_SHADOW_STACK_ARG_INDEX = 1;
static const unsigned MIN_HEAP_OBJ_SIZE = TARGET_POINTER_SIZE * 2;

void* const m_pEECorInfo; // TODO-LLVM: workaround for not changing the JIT/EE interface.
Expand All @@ -301,7 +301,6 @@ class Llvm
// Lowering members.
LIR::Range* m_currentRange = nullptr;
SideEffectSet m_scratchSideEffects; // Used for IsInvariantInRange.
bool m_anyFilterFunclets = false;

// Optimization facts provided by lowering.
BooleanFact m_anyVirtuallyUnwindableCalleesViaLowering = BooleanFact::Unknown;
Expand All @@ -316,6 +315,7 @@ class Llvm

// Shared between LSSA and codegen.
bool m_anyAddressExposedOrPinnedShadowLocals = false;
GenTree* m_prologEnd = nullptr; // First 'user' node after the prolog.

// Codegen members.
llvm::IRBuilder<> _builder;
Expand All @@ -329,8 +329,6 @@ class Llvm
EHRegionInfo* m_EHRegionsInfo;
Value* m_exceptionThrownAddressValue = nullptr;

Value* m_rootFunctionShadowStackValue = nullptr;

// Codegen emit context.
unsigned m_currentLlvmFunctionIndex = ROOT_FUNC_IDX;
unsigned m_currentProtectedRegionIndex = EHblkDsc::NO_ENCLOSING_INDEX;
Expand All @@ -344,10 +342,9 @@ class Llvm
unsigned m_lineNumberCount;
CORINFO_LLVM_LINE_NUMBER_DEBUG_INFO* m_lineNumbers;

unsigned m_shadowFrameAlignment = DEFAULT_SHADOW_STACK_ALIGNMENT;
unsigned _shadowStackLocalsSize = 0;
unsigned _originalShadowStackLclNum = BAD_VAR_NUM;
unsigned _shadowStackLclNum = BAD_VAR_NUM;
unsigned m_shadowStackSsaNum = SsaConfig::RESERVED_SSA_NUM;
unsigned m_shadowStackLclNum = BAD_VAR_NUM;
unsigned m_sparseVirtualUnwindFrameLclNum = BAD_VAR_NUM;
unsigned m_preciseVirtualUnwindFrameLclNum = BAD_VAR_NUM;
unsigned _llvmArgCount = 0;
Expand Down Expand Up @@ -473,7 +470,6 @@ class Llvm
void lowerVirtualStubCall(GenTreeCall* callNode);
void insertNullCheckForCall(GenTreeCall* callNode);
void lowerDelegateInvoke(GenTreeCall* callNode);
void lowerReversePInvokeExit(GenTreeCall* callNode);
void lowerUnmanagedCall(GenTreeCall* callNode);
void lowerCallToShadowStack(GenTreeCall* callNode);
void lowerCallReturn(GenTreeCall* callNode);
Expand All @@ -485,7 +481,6 @@ class Llvm
GenTree* normalizeStructUse(LIR::Use& use, ClassLayout* layout);

unsigned representAsLclVar(LIR::Use& use);
GenTree* insertShadowStackAddr(GenTree* insertBefore, unsigned offset, unsigned shadowStackLclNum);
GenTreeAddrMode* createAddrModeNode(GenTree* base, unsigned offset);

void lowerCollectOptimizationFacts(GenTree* node);
Expand All @@ -496,7 +491,7 @@ class Llvm
void dissolvePromotedLocal(unsigned lclNum);

bool isFirstBlockCanonical();
GenTree* lowerAndInsertIntoFirstBlock(LIR::Range& range, GenTree* insertAfter = nullptr);
GenTree* lowerAndInsertIntoFirstBlock(LIR::Range&& range, GenTree* insertAfter = nullptr);

public:
PhaseStatus AddVirtualUnwindFrame();
Expand Down Expand Up @@ -546,8 +541,6 @@ class Llvm
bool callIsInTry, bool callIsInFilter DEBUGARG(const char** pReasonWhyNot = nullptr)) const;
bool isPotentialGcSafePoint(GenTree* node) const;
bool isShadowFrameLocal(LclVarDsc* varDsc) const;
bool isShadowStackLocal(unsigned lclNum) const;
bool isFuncletParameter(unsigned lclNum) const;

// ================================================================================================================
// | Codegen |
Expand All @@ -561,14 +554,14 @@ class Llvm

void initializeFunctions();
void annotateFunctions();
void generateProlog();
void initializeShadowStack();
void generateEarlyProlog();
void initializeLocals();
void initializeBlocks();
void generateLateProlog();
void generateUnwindBlocks();
void generateBlocks();
void generateBlock(BasicBlock* block);
void fillPhis();
void generatePhis();
void generateAuxiliaryArtifacts();
void verifyGeneratedCode();
void displayGeneratedCode();
Expand All @@ -595,6 +588,7 @@ class Llvm
void buildCmp(GenTreeOp* node);
void buildCnsDouble(GenTreeDblCon* node);
void buildIntegralConst(GenTreeIntConCommon* node);
void buildPhysReg(GenTreePhysReg* physReg);
void buildCall(GenTreeCall* node);
void buildInd(GenTreeIndir* indNode);
void buildBlk(GenTreeBlk* blkNode);
Expand Down Expand Up @@ -669,7 +663,6 @@ class Llvm
llvm::Constant* getIntPtrConst(target_size_t value, Type* llvmType = nullptr);
Value* getShadowStack();
Value* getShadowStackForCallee(bool isTailCall = false);
Value* getOriginalShadowStack();

void setCurrentEmitContextForBlock(BasicBlock* block);
void setCurrentEmitContextBlocks(LlvmBlockRange* llvmBlocks);
Expand All @@ -693,7 +686,7 @@ class Llvm
LlvmBlockRange* getLlvmBlocksForBlock(BasicBlock* block);
llvm::BasicBlock* getFirstLlvmBlockForBlock(BasicBlock* block);
llvm::BasicBlock* getLastLlvmBlockForBlock(BasicBlock* block);
llvm::BasicBlock* getOrCreatePrologLlvmBlockForFunction(unsigned funcIdx);
llvm::IRBuilderBase::InsertPoint getOrCreateEarlyPrologForFunction(unsigned funcIdx);

bool isReachable(BasicBlock* block) const;
BasicBlock* getFirstBlockForFunction(unsigned funcIdx) const;
Expand Down
Loading
Loading