It is important to distinguish between cases where a parameter uses an unexpected register versus cases where it is optimized out; the function may still be called with the right parameter values in the latter case, they just are not used. Suggested-by: Alexei Starovoitov <ast@xxxxxxxxxx> Signed-off-by: Alan Maguire <alan.maguire@xxxxxxxxxx> --- dwarf_loader.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dwarf_loader.c b/dwarf_loader.c index 6ae0954..791845a 100644 --- a/dwarf_loader.c +++ b/dwarf_loader.c @@ -1144,14 +1144,12 @@ static struct parameter *parameter__new(Dwarf_Die *die, struct cu *cu, if (expected_reg >= 0 && expected_reg != expr->atom) parm->unexpected_reg = 1; break; - case DW_OP_breg0 ... DW_OP_breg31: - break; default: - parm->unexpected_reg = 1; + parm->optimized = 1; break; } } else if (has_const_value) { - parm->unexpected_reg = 1; + parm->optimized = 1; } } -- 2.31.1