Displaying 20 results from an estimated 10000 matches similar to: "Preventing LLVM from optimizing out a variable"
2020 Feb 21
4
[RFC] Allowing debug intrinsics to reference multiple SSA Values
What would it look like without 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
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
2019 Nov 19
2
DW_OP_implicit_pointer design/implementation in general
> On Nov 18, 2019, at 8:33 AM, Jeremy Morse <jeremy.morse.llvm at gmail.com> wrote:
>
> Hi llvm-dev@,
>
> Switching focus to the LLVM implementation, the significant change is
> using dbg.value's first operand to refer to a DILocalVariable, rather
> than a Value. There's some impedance mismatch here, because all the
> documentation (for example in the
2020 Aug 25
3
[Debuginfo] Changing llvm.dbg.value and DBG_VALUE to support multiple location operands
Currently there is a series of patches undergoing review[0] that seek to enable the use of multiple IR/MIR values when describing a source variable's location. The current plan for the MIR is to add a new instruction, DBG_VALUE_LIST, that supports this functionality by having a variable number of operands. It may be better however to simply replace the existing DBG_VALUE behaviour entirely
2015 Jun 01
2
[LLVMdev] Debug info for lazy variables triggers SROA assertion
Hi!
I created a bug report (https://llvm.org/bugs/show_bug.cgi?id=23712) for
this failure but then I realized that my approach may be wrong.
The following D source contains a lazy variable:
void bar(lazy bool val)
{
val();
}
The lazy variable val is translated to a delegate. The signature and the
first IR lines are:
define void @_D7opover23barFLbZv({ i8*, i1 (i8*)* } %val_arg) #0 {
2020 Sep 11
2
[Debuginfo] Changing llvm.dbg.value and DBG_VALUE to support multiple location operands
> Can you elaborate what "direct" means? I'm having trouble understanding what the opposite (a non-exact value) would be.
Apologies, "exact" was a misleading/incorrect term. By direct, I mean that the expression computes the value of the variable, as opposed to its memory address, or the value that it points to. Within LLVM, where we don't have DW_OP_reg/DW_OP_breg
2019 Nov 14
4
DW_OP_implicit_pointer design/implementation in general
Hey folks,
Would you all mind having a bit of a design discussion around the feature
both at the DWARF level and the LLVM implementation? It seems like what's
currently being proposed/reviewed (based on the DWARF feature as spec'd) is
a pretty big change & I'm not sure I understand the motivation, exactly.
The core point of my confusion: Why does describing the thing a pointer
2018 Nov 01
4
Fwd: RFC: Adding debug information to LLVM to support Fortran
*From:* flang-dev <flang-dev-bounces at lists.flang-compiler.org> *On Behalf
Of *Eric Schweitz (PGI)
*Sent:* Thursday, November 01, 2018 1:02 PM
*To:* flang-dev at lists.flang-compiler.org
*Subject:* [Flang-dev] RFC: Adding debug information to LLVM to support
Fortran
In order to support debugging in the Flang project, work has been done to
extend LLVM debug information for the Fortran
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
2018 Jul 25
2
A question to the DWARF experts on symbol indirection
> -----Original Message-----
> From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Tim
> Northover via llvm-dev
> Sent: Wednesday, July 25, 2018 3:07 AM
> To: Nat!
> Cc: LLVM Developers Mailing List
> Subject: Re: [llvm-dev] A question to the DWARF experts on symbol
> indirection
>
> Hi Nat!,
>
> On Wed, 25 Jul 2018 at 01:21, Nat! via
2020 Apr 01
2
Question WRT llvm.dbg.value
> On Apr 1, 2020, at 2:56 AM, Sourabh Singh Tomar <sourav0311 at gmail.com> wrote:
>
> > Do you mean documenting the desired frontend behavior, or adding some verifier in
> LLVM? A warning for the latter is that SROA may currently emit IR that contains a
> mix of declares and values for different fragments of an aggregate variable, so I
> assume that is something that
2018 Sep 25
1
Obtaining the origin function for a local var after inlining
On Wed, Sep 19, 2018 at 5:18 PM Adrian Prantl <aprantl at apple.com> wrote:
>
>
>
> > On Sep 19, 2018, at 4:08 AM, Alexander Potapenko <glider at google.com> wrote:
> >
> > On Tue, Sep 18, 2018 at 1:56 AM Adrian Prantl <aprantl at apple.com> wrote:
> >>
> >>
> >>
> >>> On Sep 17, 2018, at 6:59 AM, Alexander
2016 Dec 21
2
debug info "ref" parameter
I want to emit a ref parameter (ie i32*) as if it was i32 in debug info,
however when I emit it with llvm.debug.declare referring to the
parameter register it shows the actual pointer value of the debug
register, instead of the value it refers to. This works fine if the
llvm.debug.declare points to a local alloca, how can this be and how can
I make it work so both show the integer value
2020 Sep 15
2
[Debuginfo] Changing llvm.dbg.value and DBG_VALUE to support multiple location operands
> That sounds to me to be the same concept that I am calling r-value vs. l-value. Do you agree, or is there some subtlety that I am missing?
I've been assuming that the l-value vs r-value distinction is analogous to C++: an l-value can be written to by the debugger, an r-value cannot. A memory location and a register location are both l-values, while implicit locations (stack
2016 Dec 21
0
debug info "ref" parameter
Could you provide the complete example (with all the necessary metadata to
reproduce)?
Possible LLVM has a special case for arguments, I'm not sure/don't recall
off hand, but can poke around at it & see if there's a reasonable logic to
it.
On Tue, Dec 20, 2016 at 10:43 PM Carlo Kok via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> I want to emit a ref parameter (ie
2019 Nov 20
2
DW_OP_implicit_pointer design/implementation in general
> I don't have a strong opinion on representation. I can see how having a
dedicated instruction to model implicit pointers would aid readability & be
simpler to document/grok, but perhaps in the future we'll want to support
other operations that refer to variable > DIEs. In the short term migrating
to an extended dbg.value representation might take more work. Alok, wdyt?
Below
2019 Jan 19
2
What does "preds" mean in a .ll file?
Hi,
I see things like this. What does it mean? Is it documented somewhere? Thanks.
; preds = %for.body
https://llvm.org/docs/LangRef.html
; <label>:91: ; preds = %88
%92 = load i8**, i8*** @glob_complete_word.matches, align 8, !dbg !99798
%93 = load i32, i32* @glob_complete_word.ind, align 4, !dbg !99799
%94 = sext i32 %93 to i64, !dbg !99798
2016 Dec 21
2
debug info "ref" parameter
https://gist.github.com/carlokok/77010598f81e8167592e593ec6c715a1
If needed I can strip it down more tomorrow, but only elements entry point and the two meh methods are used.
On December 21, 2016 8:27:12 PM GMT+01:00, David Blaikie <dblaikie at gmail.com> wrote:
>Could you provide the complete example (with all the necessary metadata
>to
>reproduce)?
>
>Possible LLVM has a
2020 Oct 06
2
[Debuginfo] Changing llvm.dbg.value and DBG_VALUE to support multiple location operands
> I can see how that could potentially be useful. I'm not sure how often we could practically make use of a situation like this, but I understand your motivation.
Indeed, I don't expect us to cancel out DWARF expressions like that very often. Although that edge case is likely to be very rare, the _direct operator itself will appear very frequently, as it would be used for every
2019 Nov 28
2
DW_OP_implicit_pointer design/implementation in general
Hi folks,
I am pushing a PoC patch https://reviews.llvm.org/D70833 for review which
includes the case when temporary is promoted.
For such cases it generates IR as
call void @llvm.dbg.derefval(metadata i32 3, metadata !25, metadata
!DIExpression(DW_OP_LLVM_explicit_pointer, DW_OP_LLVM_arg0)), !dbg !32
And llvm-darfdump output looks like
-------------
0x0000007b: