You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
clrjit_browser_wasm32_x64.dll!GenTree::gtSkipReloadOrCopy() Line 7560 C++
> clrjit_browser_wasm32_x64.dll!GenTree::OperIsInitBlkOp() Line 7213 C++
clrjit_browser_wasm32_x64.dll!GenTree::OperIsCopyBlkOp() Line 7220 C++
clrjit_browser_wasm32_x64.dll!Compiler::gtDispTree(GenTree * tree, IndentStack * indentStack, const char * msg, bool topOnly, bool isLIR) Line 12242 C++
clrjit_browser_wasm32_x64.dll!Compiler::gtDispLIRNode(GenTree * node, const char * prefixMsg) Line 13154 C++
clrjit_browser_wasm32_x64.dll!Compiler::gtDispRange(const LIR::ReadOnlyRange & range) Line 12984 C++
clrjit_browser_wasm32_x64.dll!Compiler::fgDumpBlock(BasicBlock * block) Line 2242 C++
clrjit_browser_wasm32_x64.dll!Compiler::fgDumpTrees(BasicBlock * firstBlock, BasicBlock * lastBlock) Line 2259 C++
clrjit_browser_wasm32_x64.dll!Compiler::fgDispBasicBlocks(BasicBlock * firstBlock, BasicBlock * lastBlock, bool dumpTrees) Line 2198 C++
clrjit_browser_wasm32_x64.dll!Compiler::fgDispBasicBlocks(bool dumpTrees) Line 2205 C++
clrjit_browser_wasm32_x64.dll!Phase::PostPhase(PhaseStatus status) Line 211 C++
What should GT_OBJ be storing in the second operand, gtOp2 ?
The text was updated successfully, but these errors were encountered:
Technically it should be set to nullptr. But SetOperalready does this for debug builds, so it is a bit mysterious to me how this path is hit when dumping. What is the value of gtOp2 that you're seeing?
Edit: actually, nevermind, I see the issue, the check in SetOper is for an exact kind, but GT_OBJ is a GTF_EXOP as well.
I think the proper fix is to make OperIsBlkOp not rely on this Data() != nullptr fragile invariant and instead make it check explicitly for the interesting opers (i. e. GT_STORE_DYN_BLK, GT_STORE_BLK, GT_STORE_OBJ).
When converting
GT_LCL_VAR
toGT_OBJ
for GC tracked objects, currently thegtOp2
/Data()
field for theGT_OBJ
is not set.https://github.com/yowl/runtimelab/blob/f8f9280b7e655d48fde4c437d8ad82d8ff5d3507/src/coreclr/jit/llvm.cpp#L1456-L1468
This causes a problem when dumping the tree at
https://github.com/yowl/runtimelab/blob/f8f9280b7e655d48fde4c437d8ad82d8ff5d3507/src/coreclr/jit/gentree.h#L7213
with stack
What should
GT_OBJ
be storing in the second operand,gtOp2
?The text was updated successfully, but these errors were encountered: