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

Yin Liu via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 12 14:24:40 PDT 2018


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!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180612/96dfa874/attachment.html>

More information about the llvm-dev mailing list