[llvm-dev] Strange error after doing transformation on IR level

Craig Topper via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 12 14:40:32 PDT 2018


The reason the module name is <stdin> is because you used input redirection
via "< mytestcode.ll" on your command line. This means the shell opened the
file and sent it through stdin. Opt never saw your file name. I'm not sure,
but the output redirection "> result" may also be keep llc from reading the
file. Try this to read and write your file

opt -load ~/mypass/libLLVMMYPASS.so -insert mytestcode.ll -o result.bc
llc result.bc

~Craig


On Tue, Jun 12, 2018 at 2:24 PM Yin Liu via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hello,
>
> I met a very strange error after transforming IR code.
>
> What I did is that I create a function and insert it into the original
> program's IR code.
>
> I use following command to load my pass and generate the transformed
> bytecode (the "result").
> opt -load ~/mypass/libLLVMMYPASS.so -insert < mytestcode.ll > result
>
> Then, I try to compile it to assembly code via llc
> llc result
>
> After that, the error occurs:
> llc: result:1:1: error: expected top-level entity
>
> It seems like the error is about the IR code.
> Thus, I dump the module during my pass, it turns out that there is only
> one line different:
> 1. when I just open the IR code - mytestcode.ll, the first line is:
> ; ModuleID = './mytestcode.c'
>
> 2. when I dump it during my pass, the first line is:
> ; ModuleID = '<stdin>'
>
> The strange thing is, after transformation by my pass, I also dump the
> transformed module, and copy all the dumped content to a file, and then,
> perform "llc" on it. Surprisingly, I found It works well. I also compile it
> to an executable and run it. The result is correct for my transformation.
>
> Thus, I'm so confused about:
> 1. what the different between "; ModuleID = './mytestcode.c'" and ";
> ModuleID = '<stdin>'". Will it impact the "llc" and trigger the error?
>
> 2. when I read the module during my pass, why the ModuleID has been
> changed from './mytestcode.c' to '<stdin>'
>
> 3. why does the error "llc: result:1:1: error: expected top-level entity"
> happen, and why does the IR code dumped during my pass work well?
>
> Thanks in advance!
>
> Best,
> Yin
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://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/20180612/e55fa397/attachment.html>


More information about the llvm-dev mailing list