Why my backend passes are executed by llc and not by clang ?


I’m working with llvm 3.6 and I’m cross compiling a C source code for ARM.
I introduced some passes in the ARM backend.

I’m wondering why when I use clang generate a .bc file (from a .c source file) and then llc –march=arm to generate an assembly file, my passes are executed.
But if use only clang to directly generate an ARM assembly file (from a .c source file) my passes are not executed.