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>