forked from OSchip/llvm-project
[WebAssembly] Add CFGStacikfied field to WebAssemblyFunctionInfo
Summary: This adds `CFGStackified` field and its serialization to WebAssemblyFunctionInfo. Reviewers: dschuff Subscribers: sunfish, sbc100, jgravelle-google, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59747 llvm-svn: 357011
This commit is contained in:
parent
57839425aa
commit
1aaa481fc1
|
@ -880,5 +880,6 @@ bool WebAssemblyCFGStackify::runOnMachineFunction(MachineFunction &MF) {
|
|||
.isOSBinFormatELF())
|
||||
appendEndToFunction(MF, TII);
|
||||
|
||||
MF.getInfo<WebAssemblyFunctionInfo>()->setCFGStackified();
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -79,11 +79,14 @@ llvm::signatureFromMVTs(const SmallVectorImpl<MVT> &Results,
|
|||
}
|
||||
|
||||
yaml::WebAssemblyFunctionInfo::WebAssemblyFunctionInfo(
|
||||
const llvm::WebAssemblyFunctionInfo &MFI) {}
|
||||
const llvm::WebAssemblyFunctionInfo &MFI)
|
||||
: CFGStackified(MFI.isCFGStackified()) {}
|
||||
|
||||
void yaml::WebAssemblyFunctionInfo::mappingImpl(yaml::IO &YamlIO) {
|
||||
MappingTraits<WebAssemblyFunctionInfo>::mapping(YamlIO, *this);
|
||||
}
|
||||
|
||||
void WebAssemblyFunctionInfo::initializeBaseYamlFields(
|
||||
const yaml::WebAssemblyFunctionInfo &YamlMFI) {}
|
||||
const yaml::WebAssemblyFunctionInfo &YamlMFI) {
|
||||
CFGStackified = YamlMFI.CFGStackified;
|
||||
}
|
||||
|
|
|
@ -56,6 +56,9 @@ class WebAssemblyFunctionInfo final : public MachineFunctionInfo {
|
|||
// overaligned values on the user stack.
|
||||
unsigned BasePtrVreg = -1U;
|
||||
|
||||
// Function properties.
|
||||
bool CFGStackified = false;
|
||||
|
||||
public:
|
||||
explicit WebAssemblyFunctionInfo(MachineFunction &MF) : MF(MF) {}
|
||||
~WebAssemblyFunctionInfo() override;
|
||||
|
@ -123,6 +126,9 @@ public:
|
|||
assert(Reg & INT32_MIN);
|
||||
return Reg & INT32_MAX;
|
||||
}
|
||||
|
||||
bool isCFGStackified() const { return CFGStackified; }
|
||||
void setCFGStackified(bool Value = true) { CFGStackified = Value; }
|
||||
};
|
||||
|
||||
void computeLegalValueVTs(const Function &F, const TargetMachine &TM, Type *Ty,
|
||||
|
@ -144,6 +150,8 @@ signatureFromMVTs(const SmallVectorImpl<MVT> &Results,
|
|||
namespace yaml {
|
||||
|
||||
struct WebAssemblyFunctionInfo final : public yaml::MachineFunctionInfo {
|
||||
bool CFGStackified = false;
|
||||
|
||||
WebAssemblyFunctionInfo() = default;
|
||||
WebAssemblyFunctionInfo(const llvm::WebAssemblyFunctionInfo &MFI);
|
||||
|
||||
|
@ -152,7 +160,9 @@ struct WebAssemblyFunctionInfo final : public yaml::MachineFunctionInfo {
|
|||
};
|
||||
|
||||
template <> struct MappingTraits<WebAssemblyFunctionInfo> {
|
||||
static void mapping(IO &YamlIO, WebAssemblyFunctionInfo &MFI) {}
|
||||
static void mapping(IO &YamlIO, WebAssemblyFunctionInfo &MFI) {
|
||||
YamlIO.mapOptional("isCFGStackified", MFI.CFGStackified, false);
|
||||
}
|
||||
};
|
||||
|
||||
} // end namespace yaml
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
# RUN: llc -mtriple=wasm32-unknown-unknown -run-pass wasm-cfg-stackify %s -o - | FileCheck %s
|
||||
|
||||
# CHECK-LABEL: function_property_test
|
||||
# CHECK: machineFunctionInfo: {}
|
||||
# CHECK: machineFunctionInfo:
|
||||
# CHECK: isCFGStackified: true
|
||||
name: function_property_test
|
||||
liveins:
|
||||
- { reg: '$arguments' }
|
||||
|
|
Loading…
Reference in New Issue