mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-11 13:26:08 +03:00
Fix debuginfos for nested ref/out parameters (use llvm.dbg.declare)
llvm.dbg.value() apparently doesn't like GEP + deref, so use llvm.dbg.declare() & GEP.
This commit is contained in:
parent
93decabe6c
commit
8cc5ff6e79
6 changed files with 55 additions and 35 deletions
|
@ -116,19 +116,21 @@ public:
|
|||
/// \brief Emits all things necessary for making debug info for a local
|
||||
/// variable vd.
|
||||
/// \param ll LL value which, in combination with `addr`, yields the
|
||||
/// storage/lvalue of the variable (not treating ref/out params as special
|
||||
/// case; what's needed is the lvalue of the original variable).
|
||||
/// For special-ref loop variables, specify the lvalue of the reference/
|
||||
/// pointer.
|
||||
/// storage/lvalue of the variable. For special-ref loop variables, specify
|
||||
/// the storage/lvalue of the reference/pointer.
|
||||
/// \param vd Variable declaration to emit debug info for.
|
||||
/// \param type Type of variable if different from vd->type
|
||||
/// \param isThisPtr Variable is hidden this pointer
|
||||
/// \param forceAsLocal Emit as local even if the variable is a parameter
|
||||
/// \param isRefRVal Only relevant for ref/out parameters: indicates whether
|
||||
/// ll & addr specify the reference's rvalue, i.e., the lvalue of the original
|
||||
/// variable, instead of the reference's lvalue.
|
||||
/// \param addr An array of complex address operations encoding a DWARF
|
||||
/// expression.
|
||||
void
|
||||
EmitLocalVariable(llvm::Value *ll, VarDeclaration *vd, Type *type = nullptr,
|
||||
bool isThisPtr = false, bool forceAsLocal = false,
|
||||
bool isRefRVal = false,
|
||||
llvm::ArrayRef<int64_t> addr = llvm::ArrayRef<int64_t>());
|
||||
|
||||
/// \brief Emits all things necessary for making debug info for a global
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue