[llvm-dev] ThinLTO: module-scope inline assembly blocks

Teresa Johnson via llvm-dev llvm-dev at lists.llvm.org
Mon Oct 3 08:24:41 PDT 2016


On Mon, Oct 3, 2016, 8:08 AM Johan Engelen <jbc.engelen at gmail.com> wrote:

> With `save-temps` as plugin option, I get extra files for the MAIN module
> (called `a.o`): `a.o.opt.bc` and `a.thinlto.bc`.
>
What revision is your gold plugin built from? I would expect more temp
files.


> The `a.thinlto.bc` file contains nothing, only `source_filename = ...` .
>
This is a dump of the combined index. llvm-dis won't show that, so that's
not unexpected.

The `a.o.opt.bc` (this looks like the result after ThinLTO importing and
> optimization) contains the assembly block that it should not have:
> ```
> module asm "\09.text"
> module asm "\09.globl\09foo"
> module asm "\09.align\0916, 0x90"
> module asm "\09.type\09foo, at function"
> module asm "foo:"
> module asm "\09movq %rdi, %rax"
> module asm "\09rorw $8, %ax"
> module asm "\09ret "
> module asm "\09.size\09foo, .-foo"
> module asm ""
> ```
> The asm is the same as in the other module (where it _should_ be defined),
> and the linkage has not been changed.
>

Will try to reproduce later this morning when I'm back in front of my
computer.

Teresa


> Thanks for the help,
>   Johan
>
>
> On Mon, Oct 3, 2016 at 4:45 PM, Teresa Johnson <tejohnson at google.com>
> wrote:
>
> Oh sorry, misunderstood and thought you were implementing in a new linker.
> For gold you can pass -Wl,-plugin-opt,save-temps and look at the bitcode
> after each phase of ThinLTO, e.g. I think the files will have .3.import.bc
> extensions.
>
> Teresa
>
> On Mon, Oct 3, 2016 at 7:42 AM, Johan Engelen <jbc.engelen at gmail.com>
> wrote:
>
> On Mon, Oct 3, 2016 at 4:27 PM, Teresa Johnson <tejohnson at google.com>
> wrote:
>
>
>
> On Mon, Oct 3, 2016 at 6:53 AM, Johan Engelen via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
> Hi all,
>   I am trying to add ThinLTO to the LDC compiler. It seems to work well on
> Mac (XCode 8) and Ubuntu (ld.gold + LLVMgold plugin).
> However, I am running into trouble with module-scope inline assembly
> blocks.
>
>
> Are you adding the support using the new LTO API or using the libLTO C
> interfaces?
>
>
> Perhaps I don't fully understand, but I think the answer is: neither :)
> What I do is output the module as bitcode with the module summary index
> added (`llvm::WriteBitcodeToFile`, summary index created with
> `llvm::ModuleSummaryIndexBuilder`). This is then passed to the system
> linker. The problems arise with ld.gold + LLVMgold plugin. I am using LLVM
> 3.9.0.
>
>
>
>
> --
> Teresa Johnson |  Software Engineer |  tejohnson at google.com |
> 408-460-2413
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161003/8359d2db/attachment.html>


More information about the llvm-dev mailing list