Alex Denisov via llvm-dev
2018-May-31 07:41 UTC
[llvm-dev] Miscompilation while switching from clang-4 to clang-5
Hi Tom, hi Michael, Thank you for your help. I understand the linking problem. What I do not understand is how to debug the difference between two versions of compilers. This what I do (briefly): clang++-4 foobar.cpp -lLLVM -l/opt/llvm-3.9/lib clang++-5 foobar.cpp -lLLVM -l/opt/llvm-3.9/lib The first command produces a working executable, while the other one does not. I'm trying to understand whether I had this problem all the time but clang-4 could not see it, or there is no problem but clang-5 does something wrong.> On 30. May 2018, at 23:59, Tom Stellard <tstellar at redhat.com> wrote: > > On 05/30/2018 02:39 PM, Alex Denisov via llvm-dev wrote: >> Hello everyone, >> >> I observe a weird behavior switching from clang-4 to clang-5 (and any higher version). >> I compile an executable that depends on LLVM. Everything works fine with clang-4, but when I run the executable compiled with clang-5 I see the following error: >> : CommandLine Error: Option 'rewrite-map-file' registered more than once! >> LLVM ERROR: inconsistency in registered CommandLine options >> > > This usually indicates an issue with how you link your application. > Two causes of this would be your application is linked against 2 different > versions of LLVM or your are linking against the llvm static libraries and > also libLLVM.so. > > -Tom > >> I want to debug the problem, but don't even know where to start. >> I am happy to provide more info if anyone wants to participate. >> >> I would appreciate any hints. >> >> Thank you. >> Alex. >> -- >> AlexDenisov >> Software Engineer, https://lowlevelbits.org >> >> >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> > > >-------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: Message signed with OpenPGP URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180531/1671cd6d/attachment-0001.sig>
Tim Northover via llvm-dev
2018-May-31 07:54 UTC
[llvm-dev] Miscompilation while switching from clang-4 to clang-5
On 31 May 2018 at 08:41, Alex Denisov via llvm-dev <llvm-dev at lists.llvm.org> wrote:> I understand the linking problem. What I do not understand is how to debug the difference between two versions of compilers. > This what I do (briefly): > > clang++-4 foobar.cpp -lLLVM -l/opt/llvm-3.9/lib > > clang++-5 foobar.cpp -lLLVM -l/opt/llvm-3.9/libIf you add -v then Clang will output each individual command it runs to do that compilation (I'd expect 2: one compile step and one link step). As Tom & Michael said, the link step is most likely to be wrong. You could test that by mixing and matching the invocations (using the .o file produced by one version of Clang in the other link command for example). In the end though, I suspect you'll find it's linking against a different set of libraries now. Cheers. Tim.
Alex Denisov via llvm-dev
2018-Jun-01 07:06 UTC
[llvm-dev] Miscompilation while switching from clang-4 to clang-5
Hi Tim, The verbose mode is a good idea, thank you. I've gathered all compilation commands with -v flag for clang-4 and clang-5 and they are identical (excerpt of compiler version). I will try to find what has changed in clang/llvm between the versions. If there are any other hints: send them my way :)> On 31. May 2018, at 09:54, Tim Northover <t.p.northover at gmail.com> wrote: > > On 31 May 2018 at 08:41, Alex Denisov via llvm-dev > <llvm-dev at lists.llvm.org> wrote: >> I understand the linking problem. What I do not understand is how to debug the difference between two versions of compilers. >> This what I do (briefly): >> >> clang++-4 foobar.cpp -lLLVM -l/opt/llvm-3.9/lib >> >> clang++-5 foobar.cpp -lLLVM -l/opt/llvm-3.9/lib > > If you add -v then Clang will output each individual command it runs > to do that compilation (I'd expect 2: one compile step and one link > step). > > As Tom & Michael said, the link step is most likely to be wrong. You > could test that by mixing and matching the invocations (using the .o > file produced by one version of Clang in the other link command for > example). In the end though, I suspect you'll find it's linking > against a different set of libraries now. > > Cheers. > > Tim.-- AlexDenisov Software Engineer, https://lowlevelbits.org -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: Message signed with OpenPGP URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180601/b5aabc4b/attachment.sig>
Maybe Matching Threads
- Miscompilation while switching from clang-4 to clang-5
- Miscompilation while switching from clang-4 to clang-5
- Miscompilation while switching from clang-4 to clang-5
- Miscompilation while switching from clang-4 to clang-5
- Miscompilation while switching from clang-4 to clang-5