aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/WebAssembly/Utils/WebAssemblyUtilities.cpp
diff options
context:
space:
mode:
authorAndy Wingo <wingo@igalia.com>2021-05-31 10:55:15 +0200
committerAndy Wingo <wingo@igalia.com>2021-05-31 10:55:15 +0200
commitbc1ad6e3c49dacea862ca6fa44297c64bb053ad8 (patch)
tree99e9964a1ba04be7b5de6949407cbb5b5d8e1ca8 /llvm/lib/Target/WebAssembly/Utils/WebAssemblyUtilities.cpp
parent818338add77411f5e9713247ea66142f332ef350 (diff)
downloadllvm-bc1ad6e3c49dacea862ca6fa44297c64bb053ad8.zip
llvm-bc1ad6e3c49dacea862ca6fa44297c64bb053ad8.tar.gz
llvm-bc1ad6e3c49dacea862ca6fa44297c64bb053ad8.tar.bz2
Revert "[WebAssembly][CodeGen] IR support for WebAssembly local variables"
This reverts commit bf35f4af51cddd743435bb6b94a45592c967891a. There was an error in a shared-library build.
Diffstat (limited to 'llvm/lib/Target/WebAssembly/Utils/WebAssemblyUtilities.cpp')
-rw-r--r--llvm/lib/Target/WebAssembly/Utils/WebAssemblyUtilities.cpp48
1 files changed, 0 insertions, 48 deletions
diff --git a/llvm/lib/Target/WebAssembly/Utils/WebAssemblyUtilities.cpp b/llvm/lib/Target/WebAssembly/Utils/WebAssemblyUtilities.cpp
index 60e3d1a..824d336 100644
--- a/llvm/lib/Target/WebAssembly/Utils/WebAssemblyUtilities.cpp
+++ b/llvm/lib/Target/WebAssembly/Utils/WebAssemblyUtilities.cpp
@@ -13,12 +13,8 @@
#include "WebAssemblyUtilities.h"
#include "WebAssemblyMachineFunctionInfo.h"
-#include "WebAssemblySubtarget.h"
-#include "llvm/CodeGen/Analysis.h"
-#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
-#include "llvm/IR/Instructions.h"
#include "llvm/MC/MCContext.h"
using namespace llvm;
@@ -28,50 +24,6 @@ const char *const WebAssembly::StdTerminateFn = "_ZSt9terminatev";
const char *const WebAssembly::PersonalityWrapperFn =
"_Unwind_Wasm_CallPersonality";
-// In an ideal world, when objects are added to the MachineFrameInfo by
-// FunctionLoweringInfo::set, we could somehow hook into target-specific code to
-// ensure they are assigned the right stack ID. However there isn't a hook that
-// runs between then and DAG building time, though, so instead we hoist stack
-// objects lazily when they are first used, and comprehensively after the DAG is
-// built via the PreprocessISelDAG hook, called by the
-// SelectionDAGISel::runOnMachineFunction. We have to do it in two places
-// because we want to do it while building the selection DAG for uses of alloca,
-// but not all alloca instructions are used so we have to follow up afterwards.
-Optional<unsigned> WebAssembly::getLocalForStackObject(MachineFunction &MF,
- int FrameIndex) {
- auto &MFI = MF.getFrameInfo();
-
- // If already hoisted to a local, done.
- if (MFI.getStackID(FrameIndex) == TargetStackID::WasmLocal)
- return static_cast<unsigned>(MFI.getObjectOffset(FrameIndex));
-
- // If not allocated in the object address space, this object will be in
- // linear memory.
- const AllocaInst *AI = MFI.getObjectAllocation(FrameIndex);
- if (!AI || !isWasmVarAddressSpace(AI->getType()->getAddressSpace()))
- return None;
-
- // Otherwise, allocate this object in the named value stack, outside of linear
- // memory.
- SmallVector<EVT, 4> ValueVTs;
- const WebAssemblyTargetLowering &TLI =
- *MF.getSubtarget<WebAssemblySubtarget>().getTargetLowering();
- WebAssemblyFunctionInfo *FuncInfo = MF.getInfo<WebAssemblyFunctionInfo>();
- ComputeValueVTs(TLI, MF.getDataLayout(), AI->getAllocatedType(), ValueVTs);
- MFI.setStackID(FrameIndex, TargetStackID::WasmLocal);
- // Abuse SP offset to record the index of the first local in the object.
- unsigned Local = FuncInfo->getParams().size() + FuncInfo->getLocals().size();
- MFI.setObjectOffset(FrameIndex, Local);
- // Allocate WebAssembly locals for each non-aggregate component of the
- // allocation.
- for (EVT ValueVT : ValueVTs)
- FuncInfo->addLocal(ValueVT.getSimpleVT());
- // Abuse object size to record number of WebAssembly locals allocated to
- // this object.
- MFI.setObjectSize(FrameIndex, ValueVTs.size());
- return static_cast<unsigned>(Local);
-}
-
/// Test whether MI is a child of some other node in an expression tree.
bool WebAssembly::isChild(const MachineInstr &MI,
const WebAssemblyFunctionInfo &MFI) {