Debugging info: include parameter number for function params.

This commit is contained in:
Matt Pharr
2012-04-25 05:55:47 -10:00
parent 8547101c4b
commit 7167442d6e
3 changed files with 13 additions and 6 deletions

13
ctx.cpp
View File

@@ -1482,19 +1482,26 @@ FunctionEmitContext::EmitVariableDebugInfo(Symbol *sym) {
void
FunctionEmitContext::EmitFunctionParameterDebugInfo(Symbol *sym) {
FunctionEmitContext::EmitFunctionParameterDebugInfo(Symbol *sym, int argNum) {
if (m->diBuilder == NULL)
return;
llvm::DIScope scope = diFunction;
llvm::DIType diType = sym->type->GetDIType(scope);
Assert(diType.Verify());
int flags = 0;
llvm::DIVariable var =
m->diBuilder->createLocalVariable(llvm::dwarf::DW_TAG_arg_variable,
scope,
sym->name,
sym->pos.GetDIFile(),
sym->pos.first_line,
sym->type->GetDIType(scope),
true /* preserve through opts */);
diType,
true /* preserve through opts */,
flags,
argNum+1);
Assert(var.Verify());
llvm::Instruction *declareInst =
m->diBuilder->insertDeclare(sym->storagePtr, var, bblock);
AddDebugPos(declareInst, &sym->pos, &scope);