kamlesh kumar via llvm-dev
2020-Jan-21 11:54 UTC
[llvm-dev] aarch64 does not emit DW_AT_Location
Hi Devs, debug info emitted by llvm does not contain DW_AT_Location for Formal parameter if it is an aggregate like below case 1) aggregate contain more than 4 homogeneous and size more than 128 bits i.e. typedef struct{ int a,b,c,d,e; }mystruct; void foo(mystruct ms){ } 2) aggregate contain hetrogeneous type and size more than 128 bits. i.e. typedef struct{ int a,b; float c,d,e; }mystruct; void foo(mystruct ms){ } This occur only when aarch64 is used, not with arm and x86. like to know community thoughts wether this can be considered as bug or it's an abi restriction. ./kamlesh -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200121/67ca32d5/attachment.html>
Momchil Velikov via llvm-dev
2020-Jan-21 12:03 UTC
[llvm-dev] aarch64 does not emit DW_AT_Location
Hi Kamlesh, Does it also happen when the parameters are used? From what I quickly tried, if the parameter is used, clang emits the location, as expected, e.g. `(DW_OP_breg0 (x0): 0)` On Tue, Jan 21, 2020 at 11:55 AM kamlesh kumar via llvm-dev < llvm-dev at lists.llvm.org> wrote:> > Hi Devs, > debug info emitted by llvm does not contain DW_AT_Location for Formal > parameter > if it is an aggregate like below case > 1) aggregate contain more than 4 homogeneous and size more than 128 bits > i.e. > typedef struct{ > int a,b,c,d,e; > }mystruct; > void foo(mystruct ms){ > } > > 2) aggregate contain hetrogeneous type and size more than 128 bits. > i.e. > typedef struct{ > int a,b; > float c,d,e; > }mystruct; > void foo(mystruct ms){ > > } > > This occur only when aarch64 is used, not with arm and x86. > like to know community thoughts wether this can be considered as bug or it > 's an abi restriction. > > > ./kamlesh > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-- Compiler scrub, Arm -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200121/9710a1d8/attachment-0001.html>
kamlesh kumar via llvm-dev
2020-Jan-21 12:17 UTC
[llvm-dev] aarch64 does not emit DW_AT_Location
Hi Momchil, I am using something like this and we do not get Location information. #include<stdio.h> typedef struct { double a,b,c,d,e; }mystruct; void foo(mystruct ms){ printf("%llu\n",(unsigned long long) &ms); } On Tue, Jan 21, 2020 at 5:33 PM Momchil Velikov <momchil.velikov at gmail.com> wrote:> Hi Kamlesh, > > Does it also happen when the parameters are used? From what I quickly > tried, if the parameter is used, clang emits > the location, as expected, e.g. `(DW_OP_breg0 (x0): 0)` > > On Tue, Jan 21, 2020 at 11:55 AM kamlesh kumar via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> >> Hi Devs, >> debug info emitted by llvm does not contain DW_AT_Location for Formal >> parameter >> if it is an aggregate like below case >> 1) aggregate contain more than 4 homogeneous and size more than 128 bits >> i.e. >> typedef struct{ >> int a,b,c,d,e; >> }mystruct; >> void foo(mystruct ms){ >> } >> >> 2) aggregate contain hetrogeneous type and size more than 128 bits. >> i.e. >> typedef struct{ >> int a,b; >> float c,d,e; >> }mystruct; >> void foo(mystruct ms){ >> >> } >> >> This occur only when aarch64 is used, not with arm and x86. >> like to know community thoughts wether this can be considered as bug or it >> 's an abi restriction. >> >> >> ./kamlesh >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> > > > -- > Compiler scrub, Arm >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200121/6fb8cf53/attachment.html>
Adrian Prantl via llvm-dev
2020-Jan-21 20:10 UTC
[llvm-dev] aarch64 does not emit DW_AT_Location
If this is unoptimized code this is definitely a bug, with optimizations it may not be possible to do any better. In both cases it's worth filing a bug and attaching a clang reproducer (by running clang through env FORCE_CLANG_DIAGNOSTICS_CRASH=1). -- adrian> On Jan 21, 2020, at 3:54 AM, kamlesh kumar via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > > Hi Devs, > debug info emitted by llvm does not contain DW_AT_Location for Formal parameter > if it is an aggregate like below case > 1) aggregate contain more than 4 homogeneous and size more than 128 bits > i.e. > typedef struct{ > int a,b,c,d,e; > }mystruct; > void foo(mystruct ms){ > } > > 2) aggregate contain hetrogeneous type and size more than 128 bits. > i.e. > typedef struct{ > int a,b; > float c,d,e; > }mystruct; > void foo(mystruct ms){ > > } > > This occur only when aarch64 is used, not with arm and x86. > like to know community thoughts wether this can be considered as bug or it's an abi restriction. > > > ./kamlesh > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200121/85fafb26/attachment.html>
kamlesh kumar via llvm-dev
2020-Jan-22 01:14 UTC
[llvm-dev] aarch64 does not emit DW_AT_Location
Adrian, Yes it is unoptimized.I will file a bug for this. Thanks On Wed, Jan 22, 2020, 1:40 AM Adrian Prantl <aprantl at apple.com> wrote:> If this is unoptimized code this is definitely a bug, with optimizations > it may not be possible to do any better. In both cases it's worth filing a > bug and attaching a clang reproducer (by running clang through env > FORCE_CLANG_DIAGNOSTICS_CRASH=1). > > -- adrian > > On Jan 21, 2020, at 3:54 AM, kamlesh kumar via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > > > Hi Devs, > debug info emitted by llvm does not contain DW_AT_Location for Formal > parameter > if it is an aggregate like below case > 1) aggregate contain more than 4 homogeneous and size more than 128 bits > i.e. > typedef struct{ > int a,b,c,d,e; > }mystruct; > void foo(mystruct ms){ > } > > 2) aggregate contain hetrogeneous type and size more than 128 bits. > i.e. > typedef struct{ > int a,b; > float c,d,e; > }mystruct; > void foo(mystruct ms){ > > } > > This occur only when aarch64 is used, not with arm and x86. > like to know community thoughts wether this can be considered as bug or it > 's an abi restriction. > > > ./kamlesh > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200122/477d5c66/attachment.html>