Building static libs with -o-

Kagamin via digitalmars-d-ldc digitalmars-d-ldc at
Sun Apr 5 10:46:05 PDT 2015

On Thursday, 2 April 2015 at 21:57:16 UTC, John Colvin wrote:
> There are inlining opportunities across modules that only exist 
> when they are compiled together. Even if you feed all the 
> modules to LDC at once, the backend only sees one at once. Or 
> at least that's what I understand, perhaps one of the LDC devs 
> can correct me if I'm wrong.

Though llvm has lots of tools to work with bitcode. I did 
something like this:
1. pass -emit-llvm option to clang, it will generate bitcode 
(.bc) instead of object files:
SRCFLAGS = ... -emit-llvm
2. compile sources into bitcode:
compiler.bc: compiler.c $(SRCPREREQ)
trace.bc: trace.c $(SRCPREREQ)
	$(CC) $(CFLAGS) -c $< -o $@
3. link bitcode files into one bitcode file and generate object 
file from that:
app.o: $(BCS)
	llvm-link $(BCS) -o app.bc
	llc app.bc -o $@ -filetype=obj $(OPT)

Also llc has all sorts of optimization options. Not LTO, but at 
least something.

More information about the digitalmars-d-ldc mailing list