I'm not entirely sure where soft/hard comes into play, but it seems unfortunate to add another flag to the compiler (which we try to keep to a small number).

Is this something which is more of a property of the target triple? It looks like it's on by default for MIPS, so should it always be on by default for mips? Or is it something where one triple of mips has soft floats and one triple has hard floats? Basically it'd be nice to infer soft/hard somehow instead of having to explicitly specify it.