llvm-project/llvm/lib/Target/NVPTX
Derek Schuff ff171acf84 [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
2020-01-17 17:23:56 -08:00
..
MCTargetDesc CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
TargetInfo CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
CMakeLists.txt
LLVMBuild.txt
ManagedStringPool.h ManagedStringPool - pre-increment iterator. NFC. 2019-11-07 16:56:16 +00:00
NVPTX.h [LegacyPassManager] Deprecate the BasicBlockPass/Manager. 2019-09-30 20:17:23 +00:00
NVPTX.td
NVPTXAllocaHoisting.cpp
NVPTXAllocaHoisting.h
NVPTXAsmPrinter.cpp CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
NVPTXAsmPrinter.h [AsmPrinter] Remove const qualifier from EmitBasicBlockStart. 2019-08-20 05:13:57 +00:00
NVPTXAssignValidGlobalNames.cpp
NVPTXFrameLowering.cpp [WebAssembly] Track frame registers through VReg and local allocation 2020-01-17 17:23:56 -08:00
NVPTXFrameLowering.h [WebAssembly] Track frame registers through VReg and local allocation 2020-01-17 17:23:56 -08:00
NVPTXGenericToNVVM.cpp
NVPTXISelDAGToDAG.cpp [NVPTX] Fixes -Wrange-loop-analysis warnings 2019-12-22 19:27:44 +01:00
NVPTXISelDAGToDAG.h Fix uninitialized variable warning. NFCI. 2019-11-13 14:40:20 +00:00
NVPTXISelLowering.cpp Consolidate internal denormal flushing controls 2020-01-17 20:09:53 -05:00
NVPTXISelLowering.h DAG: Add function context to isFMAFasterThanFMulAndFAdd 2019-11-19 19:25:26 +05:30
NVPTXImageOptimizer.cpp [IR] Split out target specific intrinsic enums into separate headers 2019-12-11 18:02:14 -08:00
NVPTXInstrFormats.td
NVPTXInstrInfo.cpp Use MCRegister in copyPhysReg 2019-11-11 14:42:33 +05:30
NVPTXInstrInfo.h Use MCRegister in copyPhysReg 2019-11-11 14:42:33 +05:30
NVPTXInstrInfo.td [NVPTX] Restructure shfl instrinsics and add variants that return a predicate. 2019-10-14 16:53:34 +00:00
NVPTXIntrinsics.td [NVPTX] Added llvm.nvvm.mma.m8n8k4.* intrinsics 2019-10-28 13:55:30 -07:00
NVPTXLowerAggrCopies.cpp [NVPTX] NVPTXLowerAggrCopies - Silence static analyzer dyn_cast<StoreInst> null dereference warning. NFCI. 2019-09-22 13:14:30 +00:00
NVPTXLowerAggrCopies.h
NVPTXLowerAlloca.cpp Fix "pointer is null" static analyzer warning. NFCI. 2020-01-15 12:18:11 +00:00
NVPTXLowerArgs.cpp [Alignment][NFC] Remove AllocaInst::setAlignment(unsigned) 2019-09-30 13:34:44 +00:00
NVPTXMCExpr.cpp
NVPTXMCExpr.h
NVPTXMachineFunctionInfo.h
NVPTXPeephole.cpp Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 2019-08-01 23:27:28 +00:00
NVPTXPrologEpilogPass.cpp [LLVM][Alignment] Introduce Alignment In MachineFrameInfo 2019-08-21 14:29:30 +00:00
NVPTXProxyRegErasure.cpp
NVPTXRegisterInfo.cpp CodeGen: Introduce a class for registers 2019-06-24 15:50:29 +00:00
NVPTXRegisterInfo.h CodeGen: Introduce a class for registers 2019-06-24 15:50:29 +00:00
NVPTXRegisterInfo.td
NVPTXReplaceImageHandles.cpp Include what you use in NVPTX.h 2019-06-03 14:26:50 +00:00
NVPTXSubtarget.cpp
NVPTXSubtarget.h
NVPTXTargetMachine.cpp CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
NVPTXTargetMachine.h
NVPTXTargetObjectFile.h
NVPTXTargetTransformInfo.cpp [IR] Split out target specific intrinsic enums into separate headers 2019-12-11 18:02:14 -08:00
NVPTXTargetTransformInfo.h [ARM] Teach the Arm cost model that a Shift can be folded into other instructions 2019-12-09 10:24:33 +00:00
NVPTXUtilities.cpp Replace llvm::MutexGuard/UniqueLock with their standard equivalents 2019-08-07 10:57:25 +00:00
NVPTXUtilities.h
NVVMIntrRange.cpp [IR] Split out target specific intrinsic enums into separate headers 2019-12-11 18:02:14 -08:00
NVVMReflect.cpp [IR] Split out target specific intrinsic enums into separate headers 2019-12-11 18:02:14 -08:00
cl_common_defines.h