[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
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
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...
More information about the llvm-dev