search for: dw_op_llvm_fragment

Displaying 11 results from an estimated 11 matches for "dw_op_llvm_fragment".

2017 Feb 02
3
Tracking parts of expanded values in optimized debug
...h a value, and that value is split up (for example a i64 load expanded into two i32 loads), I would expect to see a new ISD::DBG_VALUE tracking each fragment of the input original debug variable. However, I can't see anywhere this is handled. There seems to be some support for this, through the DW_OP_LLVM_fragment DIExpression, and there is a function DIBuilder::createFragmentExpression which could be used to create an expression to track part of a variable, however these don't seem to be used much. Thanks, Ed
2020 Jul 07
2
Defining the DIExpression operator DW_OP_LLVM_arg
Currently, two patches undergoing review wish to add a new operator for LLVM's DIExpression: D70642[0], and D82363[1]. Though both of these cases use the same name, the operators have different meanings: in the former, it has the form `DW_OP_LLVM_argN` where N is in [0-7], and represents the Nth argument of the containing intrinsic; its purpose is to enable the intrinsic @llvm.dbg.derefval,
2017 Sep 20
0
Jump Threading duplicates dbg.declare intrinsics for fragments, bug?
...that if > the source variable is split up into multiple fragments (such as SROA) > there may be one dbg.declare per variable fragment. How about this: %b.sroa.4.i = alloca [32 x i32] call void @llvm.dbg.declare(metadata [32 x i32]* %b.sroa.4.i, metadata !10, metadata !DIExpression(DW_OP_LLVM_fragment, 32, 1024)), !dbg !18 call void @llvm.dbg.declare(metadata [32 x i32]* %b.sroa.4.i, metadata !10, metadata !DIExpression(DW_OP_LLVM_fragment, 32, 1024)), !dbg !20 The dbg.declares are identical except that !18 and !20 have different inlinedAt fields. The above is the result of the alloca-me...
2020 Jul 08
3
Defining the DIExpression operator DW_OP_LLVM_arg
...of cases the answer will be "no", but it's hard to be sure exactly what cases may open up over time. Although... > Finally, to completely derail this discussion — once we have multi-arg support, we may be able to simplify parts of the debug intrinsic handling by combining multiple DW_OP_LLVM_fragment intrinsics describing the same variable into one multi-argument expression with multiple DW_OP_LLVM_fragments. This makes for a good example of how a future change might require us to support more arguments in an intrinsic than initially seems necessary.
2020 Apr 01
2
Question WRT llvm.dbg.value
...ld that be good ? > That brings up one other question, After SROA(like in present case) there can be mix of *dbg.decalre* and *dbg.value* of the same variable left out. > Snippet from PR > [.] > call void @llvm.dbg.declare(metadata i64* %arr.sroa.0, metadata !15, metadata DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !23 > store i64 0, i64* %arr.sroa.0, align 16, !dbg !23 > call void @llvm.dbg.value(metadata i64 0, metadata !15, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !23 > [.] > Does this presence of *dbg.value* suggest that previous location/value described by *d...
2017 Sep 19
3
Jump Threading duplicates dbg.declare intrinsics for fragments, bug?
> On Sep 19, 2017, at 8:44 AM, Reid Kleckner <rnk at google.com> wrote: > > On Tue, Sep 19, 2017 at 8:40 AM, Adrian Prantl via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: > > Later loop unroll comes and unrolls the loop and then suddenly we have two absolutely identical dbg.declares and the assert in addFragmentOffset() blows.
2020 Mar 31
2
Question WRT llvm.dbg.value
> On Mar 30, 2020, at 11:57 PM, Sourabh Singh Tomar <sourav0311 at gmail.com> wrote: > >> > My understanding is that this isn't correct: dbg.declare specifies the >> memory address of a variable for the whole lifetime of the function, >> whereas dbg.value (and dbg.addr) specify the value/address until the >> next debug intrinsic. Mixing these two kinds
2020 Jul 08
2
Defining the DIExpression operator DW_OP_LLVM_arg
...are really bothered by the storage size, we can address this separately. > > thanks, > adrian > > > > >> Finally, to completely derail this discussion — once we have multi-arg support, we may be able to simplify parts of the debug intrinsic handling by combining multiple DW_OP_LLVM_fragment intrinsics describing the same variable into one multi-argument expression with multiple DW_OP_LLVM_fragments. > > > > This makes for a good example of how a future change might require us to support more arguments in an intrinsic than initially seems necessary. > > ______________...
2020 Jul 08
2
Defining the DIExpression operator DW_OP_LLVM_arg
...ress this separately. > >> > >> thanks, > >> adrian > >> > >>> > >>>> Finally, to completely derail this discussion — once we have multi-arg support, we may be able to simplify parts of the debug intrinsic handling by combining multiple DW_OP_LLVM_fragment intrinsics describing the same variable into one multi-argument expression with multiple DW_OP_LLVM_fragments. > >>> > >>> This makes for a good example of how a future change might require us to support more arguments in an intrinsic than initially seems necessary. > &gt...
2020 Nov 13
1
[DebugInfo]Crash during building openmpi4.0.0
Thank You for suggestion Adrian! Generated reproducer for the crash using clang reproducer and CReduce. ::Attachment:: C file. NIT: some clean up is done on this file just to silent some compiler warnings(like implicit declaration etc.) Crash can be reproduced using above test case with following commandline: $clang -g -O3 -mllvm –enable-partial-inlining creducegenerated-cleaned.c -c ---CRASH---
2018 Nov 09
5
[RFC] Tablegen-erated GlobalISel Combine Rules
...match multiple DBG_VALUE's if there happen to be multiple variables described by a single vreg. The apply step's DBG_VALUE creates DBG_VALUEs corresponding to each of those that were matched. createDIExprLLVMFragment invokes C++ code which creates a new DIExpression by concatenating a 'DW_OP_LLVM_fragment, 0, sizeof(type)' for the given type to the existing DIExpression. One interesting benefit of this is that it allows us to verify that all DILocations and DBG_VALUE's are accounted for and handled in some way. I should mention that I'm not terribly keen on the current syntax for modif...