diff options
author | Derek Schuff <dschuff@chromium.org> | 2019-12-18 14:50:19 -0800 |
---|---|---|
committer | Derek Schuff <dschuff@chromium.org> | 2020-01-17 17:23:56 -0800 |
commit | ff171acf84204c03f67a46d16ef6adb1b83c4e9b (patch) | |
tree | 217c84d74ad4299ac42d770fecbf5d17707d84d1 /llvm/lib/IR/Module.cpp | |
parent | ee2de95507a1fc81069c9b521be891abfe1379fb (diff) | |
download | llvm-ff171acf84204c03f67a46d16ef6adb1b83c4e9b.zip llvm-ff171acf84204c03f67a46d16ef6adb1b83c4e9b.tar.gz llvm-ff171acf84204c03f67a46d16ef6adb1b83c4e9b.tar.bz2 |
[WebAssembly] Track frame registers through VReg and local allocation
This change has 2 components:
Target-independent: add a method getDwarfFrameBase to TargetFrameLowering. It
describes how the Dwarf frame base will be encoded. That can be a register (the
default), the CFA (which replaces NVPTX-specific logic in DwarfCompileUnit), or
a DW_OP_WASM_location descriptr.
WebAssembly: Allow WebAssemblyFunctionInfo::getFrameRegister to return the
correct virtual register instead of FP32/SP32 after WebAssemblyReplacePhysRegs
has run. Make WebAssemblyExplicitLocals store the local it allocates for the
frame register. Use this local information to implement getDwarfFrameBase
The result is that the DW_AT_frame_base attribute is correctly encoded for each
subprogram, and each param and local variable has a correct DW_AT_location that
uses DW_OP_fbreg to refer to the frame base.
This is a reland of rG3a05c3969c18 with fixes for the expensive-checks
and Windows builds
Differential Revision: https://reviews.llvm.org/D71681
Diffstat (limited to 'llvm/lib/IR/Module.cpp')
0 files changed, 0 insertions, 0 deletions