<div dir="ltr">I did a sanity check and run some of the bitcode I complied with gllvm and it seems to work fine under lli. The only issues is to make sure you load all the (external) libraries the bitcode needs. I highly suggest you run a debug version of lli under a debugger and see what exactly happens.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jan 28, 2019 at 12:45 PM Peng Yu <<a href="mailto:pengyu.ut@gmail.com">pengyu.ut@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">It seems that it does not really work. When I run the generated .bc<br>
file, it gives me the following error. Do you what is wrong?<br>
<br>
$ lli bash.bc<br>
Stack dump:<br>
0.    Program arguments: lli bash.bc<br>
0  lli                      0x0000000105153922<br>
llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 37<br>
1  lli                      0x0000000105153d26 SignalHandler(int) + 200<br>
2  libsystem_platform.dylib 0x00007fff7d6daf5a _sigtramp + 26<br>
3  libsystem_platform.dylib 0x00007ffeeb06cb20 _sigtramp + 1838750688<br>
4  lli                      0x0000000104ed5045<br>
llvm::MCJIT::runFunction(llvm::Function*,<br>
llvm::ArrayRef<llvm::GenericValue>) + 535<br>
5  lli                      0x0000000104e67ae7<br>
llvm::ExecutionEngine::runFunctionAsMain(llvm::Function*,<br>
std::__1::vector<std::__1::basic_string<char,<br>
std::__1::char_traits<char>, std::__1::allocator<char> >,<br>
std::__1::allocator<std::__1::basic_string<char,<br>
std::__1::char_traits<char>, std::__1::allocator<char> > > > const&,<br>
char const* const*) + 1159<br>
6  lli                      0x0000000104b94b84 main + 9104<br>
7  libdyld.dylib            0x00007fff7d3cc015 start + 1<br>
Segmentation fault: 11<br>
<br>
On Mon, Jan 28, 2019 at 10:40 AM Jakub (Kuba) Kuderski<br>
<<a href="mailto:kubakuderski@gmail.com" target="_blank">kubakuderski@gmail.com</a>> wrote:<br>
>><br>
>> but doesn't emit optnone and nounwind attributes<br>
><br>
> s/nounwind/noinline<br>
><br>
> On Mon, Jan 28, 2019 at 11:35 AM Jakub (Kuba) Kuderski <<a href="mailto:kubakuderski@gmail.com" target="_blank">kubakuderski@gmail.com</a>> wrote:<br>
>><br>
>> As far as I understand, gllvm doesn't run LTO pipeline or any cross-module optimization, and the optimization level provided is only used to compile each Translation Unit separately.<br>
>> If you want to have LTO-like build, you can first run gllvm with `-O3 -Xclang -disable-llvm-optzns` (builds code with no optimizations, but doesn't emit optnone and nounwind attributes) and later run opt on the final bitcode. Note that the results might not be the same as running a proper LTO build because of different pass manager pipelines.<br>
>><br>
>> On Mon, Jan 28, 2019 at 11:24 AM Peng Yu <<a href="mailto:pengyu.ut@gmail.com" target="_blank">pengyu.ut@gmail.com</a>> wrote:<br>
>>><br>
>>> This works great.<br>
>>><br>
>>> > You can also try using the gllvm wrapper: <a href="https://github.com/SRI-CSL/gllvm" rel="noreferrer" target="_blank">https://github.com/SRI-CSL/gllvm</a> ; it's quite reliable and easy to use in my experience.<br>
>>><br>
>>> Just to be sure. Only one version of bc file will be generated that<br>
>>> corresponds to the compiler options provide at configure?<br>
>>><br>
>>> The original approach using ld.gold will provide several .bc files<br>
>>> that correspond to different stages of the optimization.<br>
>>><br>
>>> I think using gllvm, I need to specify the corresponding -O? option to<br>
>>> the correct optimization stage of the bc file? Thanks.<br>
>>><br>
>>> --<br>
>>> Regards,<br>
>>> Peng<br>
>><br>
>><br>
>><br>
>> --<br>
>> Jakub Kuderski<br>
><br>
><br>
><br>
> --<br>
> Jakub Kuderski<br>
<br>
<br>
<br>
-- <br>
Regards,<br>
Peng<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div>Jakub Kuderski</div></div>