[LLVMdev] How to run LLVM3.6.1 on OS X (Yosemite, Xcode6.4) OR how to link bitcode generated by OS X clang with LLVM3.6.1

Christian Schafmeister chris.schaf at verizon.net
Sat Jul 4 17:53:34 PDT 2015


I’m developing a Common Lisp compiler for OS X and Linux that uses LLVM as its backend and interoperates with C++. 
It’s at:   github.com/drmeister/clang

I need to compile one C++ source file containing small, intrinsic functions into an LLVM-IR bitcode file and link it with bitcode generated by my compiler running LLVM3.6.1.   I have been unable to do this for more than a year and I was hoping that Apple would catch up.

If anyone has suggestions on how to do one of the following - I would greatly appreciate it.
1) Running clang built using LLVM3.6.1 (or higher) on OS X doesn’t work because it doesn’t find system header files.
I’ve added "-resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/6.1.0” to the command line and while versions of this path have worked in the past - it doesn’t work anymore.

2) Using the version of clang provided by Xcode6.4 generates a bitcode file but it cannot be loaded into my language that was compiled using LLVM3.6.1. It complains with the following message:
Linking app-resources:lib;release;intrinsics_bitcode_boehm.o
warning: ignoring debug info with an invalid version (602053001) in /Users/meister/Development/clasp/build/clasp/Contents/Resources/lib/release/intrinsics_bitcode_boehm.o
warning: Linking two modules of different target triples: /Users/meister/Development/clasp/build/clasp/Contents/Resources/lib/release/intrinsics_bitcode_boehm.o' is 'x86_64-apple-macosx10.7.0' whereas 'image' is 'x86_64-apple-macosx10.9.4'

warning: linking module flags 'Debug Info Version': IDs have conflicting values
Running link time optimization module pass manager
Generating object file  /Users/meister/Development/clasp/src/lisp/build/system/full-boehm/image.lbc  -->  /Users/meister/Development/clasp/src/lisp/build/system/full-boehm/image.o  reloc-model: RELOC-MODEL-DEFAULT

I always thought that this was just a warning but now that I look at the resulting bitcode file after linking I see that no inlining of the functions in intrinsics_bitcode_boehm.o (this is a bitcode file and not a .o file as the extension suggests) is taking place.


If anyone has suggestions on how to (1) compile C++ code with LLVM3.6.1 on OS X or (2) generate bitcode from C++ using the builtin clang on OS X that can be read by LLVM3.6.1 I’d greatly appreciate it.

Best,

.Chris.









More information about the llvm-dev mailing list