some refactoring & improvement of llvm expression generating macro