================ @@ -1291,19 +1327,29 @@ bool WebAssemblyLowerEmscriptenEHSjLj::runSjLjOnFunction(Function &F) { Type *IntPtrTy = getAddrIntType(&M); Constant *size = ConstantInt::get(IntPtrTy, 40); IRB.SetInsertPoint(SetjmpTableSize); - auto *SetjmpTable = IRB.CreateMalloc(IntPtrTy, IRB.getInt32Ty(), size, - nullptr, nullptr, "setjmpTable"); - SetjmpTable->setDebugLoc(FirstDL); - // CallInst::CreateMalloc may return a bitcast instruction if the result types - // mismatch. We need to set the debug loc for the original call too. - auto *MallocCall = SetjmpTable->stripPointerCasts(); - if (auto *MallocCallI = dyn_cast<Instruction>(MallocCall)) { - MallocCallI->setDebugLoc(FirstDL); + Instruction *SetjmpTable; + if (EnableWasmAltSjLj) { + // This alloca'ed pointer is used by the runtime to identify function + // inovactions. It's just for pointer comparisons. It will never + // be dereferenced. + SetjmpTable = IRB.CreateAlloca(IRB.getInt32Ty()); + SetjmpTable->setDebugLoc(FirstDL); + SetjmpTableInsts.push_back(SetjmpTable); + } else { ---------------- yamt wrote:
ok https://github.com/llvm/llvm-project/pull/84137 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits