search for: dw_op_llvm_register

Displaying 3 results from an estimated 3 matches for "dw_op_llvm_register".

2020 Feb 20
3
[RFC] Allowing debug intrinsics to reference multiple SSA Values
...nary operators with non-constant operands to be salvaged. This is a long-awaited feature, with an open bugzilla[0] and support from members of the community[1][2]. To implement this change, each debug intrinsic will contain a list of SSA values instead of just one, and a new operator will be added: DW_OP_LLVM_register, which takes as its only argument the index of an SSA value within the intrinsic's list, and pushes that SSA value onto the expression stack. Two proposed syntaxes for the list of SSA values - though suitable alternatives may be worth considering - are to either replace the first argument of th...
2020 Feb 21
4
[RFC] Allowing debug intrinsics to reference multiple SSA Values
...out this extension? If we modeled it as if all the register values were already on the stack (an extension of the current way where the singular value is modeled as being already on the stack, if I understand it correctly?)? If it's decided that the best approach is to introduce something like DW_OP_LLVM_register - might be worth migrating to that first (basically adding DW_OP_LLVM_register(0) at the start of every DIExpression) and then expanding it from unary to n-ary support Putting the register values initially on the stack reduces the verbosity, though it could complicate successive salvages of variadi...
2020 Feb 25
2
[RFC] Allowing debug intrinsics to reference multiple SSA Values
...wap or rotate operators whenever any of them is needed. Regardless of whether we push everything immediately or not, having an operator that pushes the SSA value at a given argument index onto the stack seems necessary - if we push elements initially then DW_OP_pick (or DW_OP_LLVM_pick), otherwise DW_OP_LLVM_register. In either of these cases, salvaging is simple: we simply append the salvage expression after the salvaged value's operator. It also translates cleanly to DWARF, since we can directly replace the operator in question with DW_OP_regval_type, using whichever register holds the value we're loo...