When using macros inside other syntax elements with their own indenting (module instantiation, fucntions, contraints etc) the indentation is broken, see following example
class my_class;
int my_var;
constraint reg_addr_c {
`ifndef MY_MACRO
my_var == 2;
`else
my_var == 3;
`endif
}
function new();
endfunction
endclass
The function declaration should be at the level of constraint again, but it is at the level of the macro block.