]> granicus.if.org Git - clang/commit
Driver: Support invoking Clang on .ll or .bc inputs.
authorDaniel Dunbar <daniel@zuster.org>
Mon, 7 Jun 2010 23:28:45 +0000 (23:28 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Mon, 7 Jun 2010 23:28:45 +0000 (23:28 +0000)
commit6c6424bc0d3b5f080a97b5f6ef4a8d70c38e38f5
tree2ff4a2b19b5a48f6aef33881d979b51ce2817924
parent4cbbd94d0abeec2d7e7438d098527aa340d82389
Driver: Support invoking Clang on .ll or .bc inputs.
 - We actually pretend that we have two separate types for LLVM assembly/bitcode because we need to use the standard suffixes with LTO ('clang -O4 -c t.c' should generate 't.o').

It is now possible to do something like:
  $ clang -emit-llvm -S t.c -o t.ll ... assorted other compile flags ...
  $ clang -c t.ll -o t.o ... assorted other compile flags ...
and expect that the output will be almost* identical to:
  $ clang -c t.c -o t.o ... assorted other compile flags ...
because all the target settings (default CPU, target features, etc.) will all be initialized properly by the driver/frontend.

*: This isn't perfect yet, because in practice we will end up running the optimization passes twice. It's possible to get something equivalent out with a well placed -mllvm -disable-llvm-optzns, but I'm still thinking about the cleanest way to solve this problem more generally.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105584 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Driver/Types.def
include/clang/Driver/Types.h
lib/Driver/Driver.cpp
lib/Driver/Tools.cpp
lib/Driver/Types.cpp
test/Driver/lto.c