Displaying 9 results from an estimated 9 matches for "__llvm_profile_filename".
2018 May 09
2
lld + ThinLTO + fprofile-generate causes duplicate symbol errors
The duplicate symbol errors are for __llvm_profile_filename and
__llvm_profile_raw_version.
IIUC, these are supposed to be weak symbols but Thin LTO seems to break
this in some way. This does't happen with gold or no LTO or full LTO.
$ cat > a.c
extern int foo();
int main() {
return foo();
}
$ cat > b.c
int foo() {
return 0;
}
$ clang a.c...
2018 May 09
2
lld + ThinLTO + fprofile-generate causes duplicate symbol errors
...ions to the symbols, which is presumably creating this issue:
(first file is with lld and second is with gold)
$ diff a.out.resolution.txt gold/
4c4
< -r=a.o,__llvm_profile_raw_version,plx
---
> -r=a.o,__llvm_profile_raw_version,l
8,9c8,9
< -r=b.o,__llvm_profile_raw_version,x
< -r=b.o,__llvm_profile_filename,x
---
> -r=b.o,__llvm_profile_raw_version,l
> -r=b.o,__llvm_profile_filename,l
I.e. with lld they are all marked as exported.
Peter, any ideas?
Teresa
On Wed, May 9, 2018 at 9:52 AM Teresa Johnson <tejohnson at google.com> wrote:
> Sorry, operator error. I can reproduce now. In...
2018 May 09
2
lld + ThinLTO + fprofile-generate causes duplicate symbol errors
...gold, using a compiler built from
> head. What version is your clang?
>
(and your lld)
>
> Thanks,
> Teresa
>
> On Tue, May 8, 2018 at 7:50 PM Pirama Arumuga Nainar via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> The duplicate symbol errors are for __llvm_profile_filename and __llvm_profile_raw_version.
>> IIUC, these are supposed to be weak symbols but Thin LTO seems to break
>> this in some way. This does't happen with gold or no LTO or full LTO.
>>
>> $ cat > a.c
>> extern int foo();
>>
>> int main() {
>>...
2018 May 09
2
lld + ThinLTO + fprofile-generate causes duplicate symbol errors
...and your lld)
>>
>>
>>>
>>> Thanks,
>>> Teresa
>>>
>>> On Tue, May 8, 2018 at 7:50 PM Pirama Arumuga Nainar via llvm-dev <
>>> llvm-dev at lists.llvm.org> wrote:
>>>
>>>> The duplicate symbol errors are for __llvm_profile_filename and __llvm_profile_raw_version.
>>>> IIUC, these are supposed to be weak symbols but Thin LTO seems to break
>>>> this in some way. This does't happen with gold or no LTO or full LTO.
>>>>
>>>> $ cat > a.c
>>>> extern int foo();
&g...
2018 May 09
0
lld + ThinLTO + fprofile-generate causes duplicate symbol errors
The problem is that ThinLTO is not dropping the non-prevailing definitions,
and they end up being emitted into the object file for b.o.
$ ../ra/bin/llvm-dis -o - b.o0.0.preopt.bc | grep __llvm_prof
$__llvm_profile_raw_version = comdat any
$__llvm_profile_filename = comdat any
@__llvm_profile_raw_version = constant i64 72057594037927940, comdat
@__llvm_profile_filename = constant [19 x i8] c"default_%m.profraw\00",
comdat
lld ignores comdats in LTO object files because it expects all comdats to
have already been resolved. So we see this error.
We...
2018 May 11
1
lld + ThinLTO + fprofile-generate causes duplicate symbol errors
...eter at pcc.me.uk> wrote:
> The problem is that ThinLTO is not dropping the non-prevailing
> definitions, and they end up being emitted into the object file for b.o.
>
> $ ../ra/bin/llvm-dis -o - b.o0.0.preopt.bc | grep __llvm_prof
> $__llvm_profile_raw_version = comdat any
> $__llvm_profile_filename = comdat any
> @__llvm_profile_raw_version = constant i64 72057594037927940, comdat
> @__llvm_profile_filename = constant [19 x i8] c"default_%m.profraw\00",
> comdat
>
> lld ignores comdats in LTO object files because it expects all comdats to
> have already been resolv...
2018 May 09
0
lld + ThinLTO + fprofile-generate causes duplicate symbol errors
Hi Pirama,
I can't reproduce with either lld or gold, using a compiler built from
head. What version is your clang?
Thanks,
Teresa
On Tue, May 8, 2018 at 7:50 PM Pirama Arumuga Nainar via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> The duplicate symbol errors are for __llvm_profile_filename and __llvm_profile_raw_version.
> IIUC, these are supposed to be weak symbols but Thin LTO seems to break
> this in some way. This does't happen with gold or no LTO or full LTO.
>
> $ cat > a.c
> extern int foo();
>
> int main() {
> return foo();
> }
>
> $...
2018 May 09
0
lld + ThinLTO + fprofile-generate causes duplicate symbol errors
...>>>>
>>>> Thanks,
>>>> Teresa
>>>>
>>>> On Tue, May 8, 2018 at 7:50 PM Pirama Arumuga Nainar via llvm-dev <
>>>> llvm-dev at lists.llvm.org> wrote:
>>>>
>>>>> The duplicate symbol errors are for __llvm_profile_filename and __llvm_profile_raw_version.
>>>>> IIUC, these are supposed to be weak symbols but Thin LTO seems to break
>>>>> this in some way. This does't happen with gold or no LTO or full LTO.
>>>>>
>>>>> $ cat > a.c
>>>>>...
2018 May 09
0
lld + ThinLTO + fprofile-generate causes duplicate symbol errors
...t version is your clang?
>>
> (and your lld)
>
>
>>
>> Thanks,
>> Teresa
>>
>> On Tue, May 8, 2018 at 7:50 PM Pirama Arumuga Nainar via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>>> The duplicate symbol errors are for __llvm_profile_filename and __llvm_profile_raw_version.
>>> IIUC, these are supposed to be weak symbols but Thin LTO seems to break
>>> this in some way. This does't happen with gold or no LTO or full LTO.
>>>
>>> $ cat > a.c
>>> extern int foo();
>>>
>>&...