Clang flag to either print/omit nop instruction in llvm backend

I have created custom Clang flag -no_nop_optimise which can be passes with clang on command line.

I am planning to implement someting like:

when -no_nop_optimise flag is passed on the command line do not emit a nop instruction.

i.e. inside SelLowering class

if ( !OPT_no_nop_optimise)
BuildMI(*BB, MI, DL, TII->get(Mips::NOP));

Any clues on how can I pass the flag to the LLVM backend from clang?



One possibility is adding the option to the backend instead and using ‘-mllvm –no_nop_optimise’ on the clang command. This approach is good for options you don’t intend end-users to use.

Just to check: The NOP’s you’re trying to eliminate aren’t related to branch delay slots are they? The reason I ask is because removing those without putting another instruction in their place will change the behaviour of your code.

Thanks Daniel for your help. It works as required.

Also, I am working with the custom defined instructions for MIPS and are not related to branch delay slots.