Lorenzo Laneve via llvm-dev
2016-May-30 12:33 UTC
[llvm-dev] Why can't clang -emit-llvm when linking?
When I try to do clang++ main.cpp -emit-llvm without -S, clang says that he can’t: clang: error: -emit-llvm cannot be used when linking why can’t it emit the IR in a complete compilation process? Is there a particular technical reason or just to avoid confusing jobs? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160530/98a83834/attachment.html>
David Blaikie via llvm-dev
2016-May-30 16:17 UTC
[llvm-dev] Why can't clang -emit-llvm when linking?
There is no single LLVM IR for the entire compilation process in such a command line - separate IR is created for each source file, an object file is created, then those (native, non-IR) object files are linked together. So it's somewhat a invalid concept. In your case, since there's only one file anyway, just add -c and you should be fine (your IR won't include the standard library/other thingsn that would be linked into the program - but those would be native objects and not IR in any case) - Dave On Mon, May 30, 2016 at 5:33 AM, Lorenzo Laneve via llvm-dev < llvm-dev at lists.llvm.org> wrote:> When I try to do > > clang++ main.cpp -emit-llvm > > without -S, clang says that he can’t: > > clang: error: -emit-llvm cannot be used when linking > > > why can’t it emit the IR in a complete compilation process? > > Is there a particular technical reason or just to avoid confusing jobs? > > _______________________________________________ > 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/20160530/4d78177f/attachment.html>
Lorenzo Laneve via llvm-dev
2016-May-30 16:34 UTC
[llvm-dev] Why can't clang -emit-llvm when linking?
I know right, but if I do -emit-llvm clang will emit an IR module as .ll file for each source I give him. So why can't it just emit the modules for the sources and then continue the compilation? I don't get the point of this error. Just for curiosity> On May 30, 2016, at 6:17 PM, David Blaikie <dblaikie at gmail.com> wrote: > > There is no single LLVM IR for the entire compilation process in such a command line - separate IR is created for each source file, an object file is created, then those (native, non-IR) object files are linked together. So it's somewhat a invalid concept. > > In your case, since there's only one file anyway, just add -c and you should be fine (your IR won't include the standard library/other thingsn that would be linked into the program - but those would be native objects and not IR in any case) > > - Dave > >> On Mon, May 30, 2016 at 5:33 AM, Lorenzo Laneve via llvm-dev <llvm-dev at lists.llvm.org> wrote: >> When I try to do >> >> clang++ main.cpp -emit-llvm >> >> without -S, clang says that he can’t: >> >> clang: error: -emit-llvm cannot be used when linking >> >> >> why can’t it emit the IR in a complete compilation process? >> >> Is there a particular technical reason or just to avoid confusing jobs? >> >> _______________________________________________ >> 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/20160530/9f2568df/attachment.html>