All the FMF set functions under SDNodeFlags utilize true values to set as either a default value or an explicit true value, so lets just make this a model for assigning the defined attribute. This solves the problem of intersection removing flags in a corner case as we could then utilize IsDefined to guard against this when no true values are present.
If the Instruction is empty of FMF flags and a Node was associated which does have FMF flags, that Node today will have all its flags cleared. With this change, intersection does what it says, it intersects cases where both have flags to contribute, else if Node is empty we inherit whatever Instruction has or in this case what Node retains in its FMF flags if Instruction is empty. This mirrors what we do if Node is empty for Instruction FMF.