Displaying 3 results from an estimated 3 matches for "dw_op_mul".
2020 Feb 21
4
[RFC] Allowing debug intrinsics to reference multiple SSA Values
...uot;), !DIExpression(DW_OP_plus), %c, %d)
; Salvage %d
dbg.value(!DILocalVariable("x"), !DIExpression(DW_OP_plus_constu, 5, DW_OP_plus), %c, %b)
; Salvage %c needs to use DW_OP_swap
dbg.value(!DILocalVariable("x"), !DIExpression(DW_OP_plus_constu, 5, DW_OP_swap, DW_OP_constu, 3, DW_OP_mul, DW_OP_plus), %a, %b)
Or, written out as the stack state:
[%a, %b] ; Initial state
[%a, %b + 5] ; DW_OP_plus_constu, 5
[%b + 5, %a] ; DW_OP_swap
[%b + 5, %a, 3] ; DW_OP_constu, 3
[%b + 5, %a * 3] ; DW_OP_mul
[(%b + 5) + (%a * 3)] ; DW_OP_plus
The si...
2020 Feb 25
2
[RFC] Allowing debug intrinsics to reference multiple SSA Values
>As the person who has advocated for DW_OP_LLVM_arg(N) before, my main motivation was to resolve the ambiguity of constant DIExpressions: As a worst-case example:
>
>dbg.value(%undef, !DILocalVariable(x), DIExpression(DW_OP_constu, 42))
>
>Is this undefined, or constant 42?
>
>But if we make dbg.value fully variadic with all parameters pushed to the stack ahead of time, we can
2020 Feb 20
3
[RFC] Allowing debug intrinsics to reference multiple SSA Values
Currently, the debug intrinsic functions each have 3 arguments: an SSA value representing either the address or Value of a local variable, a DILocalVariable, and a complex expression. If the SSA value is an Instruction, and that Instruction is at some point deleted, we attempt to salvage the SSA value by recreating the instruction within the complex expression. If the instruction cannot be